Komponenta pro generování PDF v nette2?
- Filip Procházka
- Moderator | 4668
Je tu https://github.com/lm/Wkhtmltopdf, https://componette.org/search/?…, nebo rovnou https://componette.org/search/?…. Příště zkus nejdříve hledat :)
- Filip Procházka
- Moderator | 4668
Nechat indexovat mPDF robotLoaderem je docela sebevražda. Máš ponětí, kolik to může sežrat paměti, „roztokenovat“ 25MB soubor? :)
- Jack06
- Člen | 168
Jde mi o to, že potřebuju udělat nějaký základní layout v nějakém wysiwyg editoru, aby se pak dal lehce měnit, takže jestli se nemylím, pokud ano budu rád za komenty, tak by byl nejlepší https://componette.org/search/?…
- crempa
- Člen | 198
Problem je ze obecne pro PHP neexistuje slusne reseni pro mail merge (a generovani PDF obecne). Vsechny HTML2PDF reseni jsou jen takove znacne nekoncepcni nahrazky. Pokud bych mel switchnout na Javu tak to bude kvuli nastrojum typu jasperreports
- kaspr11
- Člen | 3
iguana007 napsal(a):
HosipLan napsal(a):
Nechat indexovat mPDF robotLoaderem je docela sebevražda. Máš ponětí, kolik to může sežrat paměti, „roztokenovat“ 25MB soubor? :)
mam ho mezi Disallow v netterobots.txt, neboj :)
Muzes nejak naznacit, jak si to v Robotloaderovi „disallowal“ :) ? Dik, moc.
- kaspr11
- Člen | 3
pilec napsal(a):
viz dokumentace
dík, ale řve to pořád stejně…
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes) in /var/www/program/libs/Nette/Loaders/RobotLoader.php on line 279
PS: Omlouvám se, ale prostě to nechce jet.. :)
- kaspr11
- Člen | 3
Patrik Votoček napsal(a):
hod si do aresare s tou knihovnou soubor
netterobots.txt
Disallow: *
díky za pomoc, ale problém zůstal.. jen na 20 bytech „(tried to allocate 20 bytes)“;
Asi by bylo vhodné dodat že verze mého nette je Nette Framework 2.0-beta (revision d2c39f5 released on 2011–07–02)
- David Ďurika
- Člen | 328
kaspr11 napsal(a):
díky za pomoc, ale problém zůstal..
mne to tiez neslo, ale vyriesil som to tak, ze do nadradeneho adresara som
dal:
netterobots.txt
Disallow: /mPdf
Editoval achtan (28. 2. 2012 8:50)
- fabian
- Člen | 20
Ahoj,
prosel jsem si tohle tema a chci pouzit mPDF primo v action presenteru:
<?php
public function renderPdf($titleSeo)
{
$template = new \Nette\Templating\FileTemplate(APP_DIR.'/ChildrenModule/templates/Article/pdf.latte');
$template->registerFilter(new \Nette\Latte\Engine);
$template->article = $this->article;
include_once(LIBS_DIR.'/mPDF/mpdf.php');
$mpdf = new \mPDF('utf-8');
$mpdf->WriteHTML((string) $template->render());
$mpdf->Output();
$this->terminate();
}
?>
Bohuzel toto mi vygeneruje prazdne PDF. Kdyz zkusim udelat
<?php
$mpdf->WriteHTML('<h1>test</h1>');
?>
tak se PDF v poradku vygeneruje. V sablone mam zatim napsano jen „xxx“ pro test.
Muze mi nekdo poradit, proc mPDF vystup z sablony nezvladne?
Diky
- llsm
- Člen | 121
V tom pripade zkus sablonu stavet po kouscich. A rozhodne nech vypnuty ten debug bar, s nim to alespon u me vzdy skonci v pekle, ted jsem to zkousel. Asi pred rokem jsem takhle delal sablonu pro faktury v mPDF a stravil jsem s tim par dni, nez jsem vychytal, aby mi to vykreslilo moje HTML jak jsem chtel. A obcas to prave nezobrazilo nic, aniz bych udelal jinou zmenu nez v HTML. Pripadne muzes zkusit tu sablonu poslat…
Editoval llsm (8. 3. 2012 16:21)
- saimons
- Člen | 293
Ja pouzivam toto:
$template = new \Nette\Templating\FileTemplate;
$template->setFile(APP_DIR . '/PDF/template.latte');
$template->registerFilter(new \Nette\Latte\Engine);
$template->registerHelperLoader('Nette\Templating\DefaultHelpers::loader');
include(WWW_DIR . '/libs/mpdf/mpdf.php');
$mpdf = new \mPDF('utf-8', 'A4');
...
$mpdf->WriteHTML($template->__toString());
$mpdf->Output($cestaSouboru,'F');
Editoval saimons (9. 3. 2012 13:18)
- LuBoss
- Člen | 21
Příklad od ‚saimonse‘ funguje výborně, ale jde nějak odeslat do mPDF
aktuální šablonu ($this->template) včetně vyplněných dat? Myslím tím
něco jako PdfResponse, ale jenom za pomoci mPDF.
Něco jako " $mpdf->WriteHTML($this->template->__toString())".
Moje představa je taková, že aktuální šablonu naplním daty voláním
jiné akce stejného presenteru,
kterou používám pro standartní HTML výstup a tím omezím duplicitu
vytváření dat.
(Nette 2.0, mPDF 5.4)
- castamir
- Člen | 629
mělo by fungovat něco na způsob:
$template = $this->createTemplate(); // to by melo nacist i latte a helpery
$template->setFile($pathToView);
// pripadne
$template->setView($view) // nazev aktualni sablony
$template->foo = $foo; // pridani promenne by melo fungovat uplne stejne jako u klasickeho renderovani
a zbytek je v podstate stejny
Editoval castamir (31. 8. 2012 11:24)
- LuBoss
- Člen | 21
Podařilo se mi vypotit nějaké funkční řešení, tak třeba se to někomu hodí.
Jedná se o to, jak pomocí mPDF vygenerovat aktuální view do pdf souboru ke stažení a ještě použít pro šablonu data, která vytvoří jiná, již existující funkce.
Presenter:
<?php
include_once(LIBS_DIR.'/mpdf/mpdf.php'); //vložení mPDF (přepsat dle aktuální cesty ke knihovně)
$this->template->setFile(APP_DIR . '/FrontModule/templates/Meals/lunch2pdf.latte'); //nastavení šablony - nebude použit @layout.latte
//soubor šablony je nutné zadat, aby byl funkční export $this->template->__toString()
$this->renderLunch($id); //volání jiné metody aktuálního presenteru pro naplnění dat do šablony
//Nač znovu psát dolování dat a předávání do šablony, když to již existuje a je používáno i jinde
$mpdf = new \mPDF('utf-8', 'A4');
$mpdf->WriteHTML($this->template->__toString());
$mpdf->Output('Jidelni_listek-obedy.pdf','D'); //dám souboru nějaké jméno a odešlu ho do browseru jako soubor k uložení
?>