diff --git a/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php b/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php index 1c6ee30a09..ceb8285b3f 100644 --- a/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php +++ b/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php @@ -40,6 +40,13 @@ public function save($filename, int $flags = 0): void // Create PDF $config = ['tempDir' => $this->tempDir . '/mpdf']; + $restoreHandler = false; + if (PHP_VERSION_ID >= self::$temporaryVersionCheck) { + // @codeCoverageIgnoreStart + set_error_handler(self::specialErrorHandler(...)); + $restoreHandler = true; + // @codeCoverageIgnoreEnd + } $pdf = $this->createExternalWriterInstance($config); $ortmp = $orientation; $pdf->_setPageSize($paperSize, $ortmp); @@ -83,9 +90,30 @@ public function save($filename, int $flags = 0): void $str = $pdf->Output('', 'S'); fwrite($fileHandle, $str); + if ($restoreHandler) { + restore_error_handler(); // @codeCoverageIgnore + } parent::restoreStateAfterSave(); } + protected static int $temporaryVersionCheck = 80600; + + /** + * Temporary handler for Php8.6 mb_regex_encoding deprecation. + * + * @codeCoverageIgnore + */ + public function specialErrorHandler(int $errno, string $errstr, string $filename, int $lineno): bool + { + if ($errno === E_DEPRECATED) { + if (preg_match('/Function mb_\w+[(][)] is deprecated since 8[.]6/', $errstr) === 1) { + return true; + } + } + + return false; // continue error handling + } + /** * Convert inches to mm. */