Skip to content

Commit

Permalink
Added callback method when instanciating the internal PDF-Engine
Browse files Browse the repository at this point in the history
  • Loading branch information
ruff committed Oct 1, 2023
1 parent a45ceba commit 262c940
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 7 deletions.
38 changes: 31 additions & 7 deletions src/ZugferdVisualizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ class ZugferdVisualizer
*/
protected $pdfPaperSize = "A4-P";

/**
* A callbacl which is called when MPDF is instanciated. Here
* is the possibillity to set custom options for MPDF
*
* @var callable|null
*/
protected $mpdfInitCallback = null;

/**
* Constructor
*
Expand Down Expand Up @@ -171,6 +179,18 @@ public function setPdfPaperSize(string $pdfPaperSize): void
}
}

/**
* Set the callback which is called after the internal instance
* of the PDF-Engine is instanciated
*
* @param callable $callback
* @return void
*/
public function setPdfInitCallback(callable $callback): void
{
$this->mpdfInitCallback = $callback;
}

/**
* Renders the markup (HTML)
*
Expand Down Expand Up @@ -273,16 +293,20 @@ private function instanciatePdfEngine(): Mpdf

$pdf = new Mpdf(
[
'tempDir' => sys_get_temp_dir() . '/mpdf',
'fontDir' => array_merge($defaultFontDirs, $this->pdfFontDirectories),
'fontdata' => $defaultFontData + $this->pdfFontData,
'default_font' => $this->pdfFontDefault,
'format' => $this->pdfPaperSize,
'PDFA' => true,
'PDFAauto' => true,
'tempDir' => sys_get_temp_dir() . '/mpdf',
'fontDir' => array_merge($defaultFontDirs, $this->pdfFontDirectories),
'fontdata' => $defaultFontData + $this->pdfFontData,
'default_font' => $this->pdfFontDefault,
'format' => $this->pdfPaperSize,
'PDFA' => true,
'PDFAauto' => true,
]
);

if (is_callable($this->mpdfInitCallback)) {
call_user_func($this->mpdfInitCallback, $pdf, $this);
}

return $pdf;
}
}
36 changes: 36 additions & 0 deletions tests/testcases/VisualizerText.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use horstoeko\zugferdvisualizer\renderer\ZugferdVisualizerDefaultRenderer;
use horstoeko\zugferdvisualizer\tests\TestCase;
use horstoeko\zugferdvisualizer\ZugferdVisualizer;
use Mpdf\Mpdf;

class VisualizerText extends TestCase
{
Expand Down Expand Up @@ -316,4 +317,39 @@ public function testRenderPdfFileWithDefaultTemplate(): void

$this->assertTrue(file_exists($toFilename));
}

/**
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::setPdfInitCallback
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::renderMarkup
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::renderPdf
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::renderPdfFile
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::testMustUseDefaultRenderer
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::testTemplateIsSet
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::testTemplateExists
* @covers \horstoeko\zugferdvisualizer\ZugferdVisualizer::instanciatePdfEngine
* @covers \horstoeko\zugferdvisualizer\renderer\ZugferdVisualizerDefaultRenderer::render
*/
public function testPdfInitCallback(): void
{
$oldPdfVersion = "";
$newPdfVersion = "";

$visualizer = new ZugferdVisualizer(static::$document);
$visualizer->setDefaultTemplate();
$visualizer->setPdfInitCallback(function (Mpdf $mpdf, ZugferdVisualizer $visualizer) use (&$oldPdfVersion, &$newPdfVersion) {
$oldPdfVersion = $mpdf->pdf_version;
$mpdf->pdf_version = "1.7";
$newPdfVersion = $mpdf->pdf_version;
});

$toFilename = dirname(__FILE__) . "/invoice.pdf";

$this->registerFileForTestMethodTeardown($toFilename);

$visualizer->renderPdfFile($toFilename);

$this->assertTrue(file_exists($toFilename));
$this->assertEquals("1.4", $oldPdfVersion);
$this->assertEquals("1.7", $newPdfVersion);
}
}

0 comments on commit 262c940

Please sign in to comment.