Kterou knihovnu pro rychlou tvorbu pdf?
- Ondris
- Člen | 37
Ahoj,
jakou knihovnu používáte pro generování velkých pdf. Teď využívám
pdfResponse. Na generování souboru, který je velký 1,7 MB a má
125 stránek čekám 6 minut a to jsem musel smazat všechny třídy a helpery
ze šablony.
Dá se používat něco rychlejšího? Je vůbec možné takhle velký pdf
generovat v nějakém rozumném čase?
- Filip Procházka
- Moderator | 4668
Samozřejmě abys mohl použít wkhtmltopdf, tak musíš mít VPS. Na sdíleném hostingu to nepusíš, leda by to tam bylo už nainstalované a povolené spouštět.
Další podmínkou je grafické prostředí na serveru. Což je dost
stupidní, protože grafické servery na servery nepatří :) Proto se často
používá xvfb
, což je nějaký virtuální buffer, který to
umožní spustit i na serveru bez grafického prostředí.
S Láďou to teďka maličko refaktorujeme, aby se tam xvfb a další nástroje daly použít výrazně jednodušeji https://github.com/…topdf/pull/6 – u toho pullrequestu je rozběhané renderování na travisu v testech, to by mohlo pomoct. Až to dotáhneme, tak k tomu možná napíšeme i nějakou doc :) Btw, to co je teď v masteru je perfektně funkční.
- David Matějka
- Moderator | 6445
A jeste doplnim, ze existuje binding do php jako extension: https://github.com/…hp-wkhtmltox
- Filip Procházka
- Moderator | 4668
@DavidMatějka už jsem se chtěl radovat, než jsem si všiml té array driven konfigurace :-/ php-wkhtmltox/test_pdf.php
- David Matějka
- Moderator | 6445
@FilipProcházka tak ona je to jen low-level podpora ty knihovny, viz http://wkhtmltopdf.org/…ettings.html, jako bys nepsal hezky wrappery nad vetsima prasarnama :)
me spis vylekaly ty reportovany segfaulty, mem corruption a 500
- n.u.r.v.
- Člen | 485
jj, také používám mpdf
Takto to používám (dle nějakého manuálu na netu):
action metoda :
...
$tpl = new \Nette\Templating\FileTemplate(cesta_k_sablone);
$tpl->registerFilter(new \Latte\Engine);
...
Naplnění šablony daty -> předání prom...$tpl->nejaka_prom;
...
použití mpdf:
$pdf = new \mPDF('', 'A4', 10, 'arial');
$pdf->ignore_invalid_utf8 = true;
$pdf->WriteHTML(file_get_contents('../www/css/pdf_style.css'), 1);
$pdf->setFooter('|' . date('Y') . " © www.project.cz|");
$pdf->WriteHTML($tpl);
stažení v browseru:
$pdf->Output(nazev_vysledneho_pdf, 'D');
nebo uložení na server:
$pdf->Output('cesta/kam/ulozit.pdf', 'F');
Editoval n.u.r.v. (13. 5. 2015 13:04)