| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- declare(strict_types=1);
- namespace App\Service\Export\Encoder;
- use App\Enum\Export\ExportFormatEnum;
- use App\Service\Utils\Path;
- use Dompdf\Dompdf;
- use Dompdf\Options;
- /**
- * Encode HTML to PDF.
- */
- class PdfEncoder implements EncoderInterface
- {
- protected Options $domPdfOptions;
- protected Dompdf $dompdf;
- public function __construct() {
- $this->domPdfOptions = new Options();
- $this->dompdf = new Dompdf();
- }
- public function support(string $format): bool
- {
- return $format === ExportFormatEnum::PDF->value;
- }
- /**
- * Converts the provided HTML content into a PDF document.
- *
- * @param string $html The HTML content to be converted to PDF.
- * @param array<string, mixed> $options Optional configuration settings for the PDF generation
- * @see https://github.com/dompdf/dompdf/blob/master/src/Options.php
- *
- * @return string The generated PDF content as a string.
- */
- public function encode(string $html, array $options = []): string
- {
- $this->domPdfOptions->setIsRemoteEnabled(true);
- $this->domPdfOptions->setChroot(Path::getProjectDir() . '/public');
- $this->domPdfOptions->setDefaultPaperOrientation('portrait');
- $this->domPdfOptions->setDefaultPaperSize('A4');
- $this->domPdfOptions->set($options);
- $this->dompdf->setOptions($this->domPdfOptions);
- $this->dompdf->loadHtml($html);
- $this->dompdf->render();
- return $this->dompdf->output();
- }
- }
|