Custom Google fonts do PDF v dotblue/nette-pdf

cafesk8
Člen | 103
+
0
-

Zdravím,

vůbec se mi nedaří do PDF vygenerovaného přes dotblue/nette-pdf vložit svůj Google font.

config.neon

mpdf:
	templatesDir: %appDir%/presenters/templates/pdf
	themes:
		standard:
			margin:
				left: 20
				right: 20
				top: 20
				bottom: 20
			size: [148,98]
	fonts:
		ultra:
			R: %appDir%/presenters/templates/pdf/fonts/Ultra.ttf

PDF tvořím takto:
PDFPresenter.php

public function actionTest() {
	$pdfko = $this->docFactory->createPdf('standard');
	// zkoušel jsem i
    // $pdfko = $this->docFactory->createPdf('standard','default.latte',['default_font' => 'ultra']);
	$pdfko->getTemplate()->test = 'Text, který bych potřeboval fontem Ultra';
	$pdfko->printPdf();
}

app/presenters/templates/pdf/standard/default.latte

<html>
    <body>
       <p style="font-family: 'ultra';">{$test}</p>
    </body>
</html>

Zkoušel jsem font-family nastavovat i přes style.css, který se automaticky do šablony includne. Vše co tam v css napíšu tak funguje, kromě toho custom fontu.

Když zkusím dát font-family na něco odtud tak to funguje vpořádku, když dám font-family: 'ultra', tak se vždy text vypíše základním fontem. Nesetkali jste se s tím už někdo? Případně doporučit jinou extension, ale u těch ostatních jsem se trápil s tím že custom fonty nešly nastavit už vůbec. Zde se to píše i v dokumentaci jak na to, ale já to za boha nemůžu rozchodit.

Díky

ali
Člen | 342
+
0
-

Cast kodu, kde si do MPDF vkladam font awesome, mozna pomuze ;-)

$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();

$fontDirs = $defaultConfig['fontDir'];

$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();

$fontData = $defaultFontConfig['fontdata'];

$mpdf = new Mpdf\Mpdf([
	'fontDir' => array_merge($fontDirs, [
		__DIR__ . '/../../../../www/webfonts',
	]),
	'fontdata' => $fontData + [
		'fa-regular' => [
			'R' => 'fa-regular-400.ttf',
		]
	],
]);
cafesk8
Člen | 103
+
0
-

ali napsal(a):

Cast kodu, kde si do MPDF vkladam font awesome, mozna pomuze ;-)

$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();

$fontDirs = $defaultConfig['fontDir'];

$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();

$fontData = $defaultFontConfig['fontdata'];

$mpdf = new Mpdf\Mpdf([
	'fontDir' => array_merge($fontDirs, [
		__DIR__ . '/../../../../www/webfonts',
	]),
	'fontdata' => $fontData + [
		'fa-regular' => [
			'R' => 'fa-regular-400.ttf',
		]
	],
]);

Ahoj,

ona ta extension ty custom fonty měla podporovat (a asi i podporuje, jenom se mi to nedaří). Forknul a upravil jsem si tedy samotnou extension a přes custom repository to nahrál jako composer balíček a funguje to.

Díky moc!

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

@cafesk8 Ahoj, readme v repozitáři je špatně po upgradu na novější Mpdf.

Je třeba konfig nastavit takto:

mpdf:
	templatesDir: %appDir%/presenters/templates/pdf
	themes:
		standard:
			margin:
				left: 20
				right: 20
				top: 20
				bottom: 20
			size: [148,98]
	fonts:
		ultra:
			R: Ultra.ttf
	fontsDirs:
		- %appDir%/presenters/templates/pdf/fonts