Nette + mPDF pro generování faktur

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
fary
Člen | 155
+
0
-

Máte někdo zkušenosti s touto knihovou pro generování PDF souborů?

Stáhl jsem si ji (pomocí composeru) a vložil do adresáře libs. Vše by mělo fungovat v pořádku, ale nefunguje. Vůbec nic nefunguje. Jediné, co se mi zobrazí, je jen bílé pozadí v prohlížeči a dokonce ani debug bar není obrazen.

Takže jsem do libs vložil netterobots.txt s obsahem: Disallow: /mpdf. To myslím že má na starosti přeskočení tohoto adresáře při autoloadingu Robotloaderem, takže Robotloadre ten adresář ignoruje, jako by tam nebyl. OK. V bootstrapu jsem si tedy adresář mpdf includul sám ručně a třídu mPDF jsem zaregistroval jako službu pomocí $container->addService('mpdf', new mPDF()); a aplikace zatím běží dokud v nějakém preseteru tu službu nepoužiju.

Když napíšu:

public function actionDefault()
{
	// tady zatím OK, funguje,
	// takže služba je zaregistrovaná v pořádku
	$mpdf = $this->context->mpdf;

	// ale když pak použiju:
	$mpdf->WriteHTML('<p>text vygenerovaný pomocí mPDF</p>');

	// tak se mi vypíše NOTICE: undefined index unAGlyphs
}

Přitom když jsem tu knihovnu testoval mimo Nette, tak vše fungovalo OK.

Jestli s tím máte někdo zkušenosti, dejte prosím vědět, fakt něvím co s tím a je zvláštní, že mimi Nette to funguje ale při použití s Nette ne.

fary
Člen | 155
+
0
-

Zdá se, že jsem našel způsob, jak to rozchodit.

Takže v knihovna se nesmí includovat v bootstrapu, ale až v kontrétním presenteru, kde tu třídu inicializujete jak instanci ne jako službu v Nette.

Bohužel ale nemám ponětí, co může být příčinu toho předchozího.

hejdav
Člen | 50
+
0
-

Problém je v php error reportingu. Nette nastavuje E_ALL|E_STRICT, zatímco mPdf vyžaduje ~E_NOTICE.

Nevim sice proč, ale když mPdf natahuje robotLoader, tu noticku s „unAGlyphs“ to ignoruje, zatimco když si chci mPdf načíst sám, vyhodí ji to.