Generování pdf pomocí mPDF & Template
- David Kudera
- Člen | 455
Ahoj, myslím, že máš chybu na řádku 83, ale nejsem si úplně jistý.. Mohl by jsi jen tak pro jistotu poslat kód, který ti nefunguje správně?
- mfajfr
- Člen | 26
To jsem tušil, že to někdo napíše, tak snad ten kód pomůže.
<?php
abstract class AbstractPDF {
protected $_css;
protected $_template;
protected $_mpdf;
public function __construct($template, $css) {
$this->_css = $css;
$this->_template = new FileTemplate();
$this->_template->setFile(__DIR__ . '/../../templates/' . $template);
$this->_mpdf = new mPDF('utf-8', 'A4');
}
public function getContentOfCSS(){
return file_get_contents($this->_css);
}
public function getContentOfTemplate(){
return $this->_template->__toString();
}
public function writeHTML(){
//$this->_mpdf->WriteHTML('<style>' . $this->getContentOfCSS() . '</style>', 1);
$this->_mpdf->WriteHTML($this->getContentOfTemplate());
}
public function download($name = 'neznamy_nazev'){
$this->_mpdf->Output($name, 'D');
}
public function show($name = 'neznamy_nazev'){
$this->writeHTML();
return $this->_mpdf->Output($name, 'I');
}
public function save($path){
$this->_mpdf->Output($path, 'F');
}
}
?>
- David Kudera
- Člen | 455
Bezva :-) víš bez kódu se problém hledá docela složitě no.. prostě není to jen tak
no a jinak ti teda hned pro začátek poradím použít pdfResponse . Běží to v pohodě a je tam i návod, jak správně použít šablony. Je to jen takový šikovný obalovátko kolem celýho mPDF
ps: doufám, že nenapíšeš „na co jsem teda posílal ten kód“.. metod na tvoření pdf je totiž více ;-)
jo a vlastně možná kdyby jsi i vzal jen ten kousek kódu z odkazu, jak vytvořit šablonu, tak třeba by to fungovalo i s tím tvým řešením.. Tuším totiž, že jen takhle new FileTemplate toho sám o sobě moc umět nebude
- David Kudera
- Člen | 455
Na něco velkýho bych asi nejspíš zkusil použít wkhtmltopdf.. možná.. jestli by to bylo lepší
- Casper
- Člen | 253
Porovnání mPDF a wkhtmltopdf je nesrovnatelné. Přecházel jsem přesně takto a generování ve wkhtmltopdf je asi tak 10× rychlejší pro větší soubory. Také podpora css je nesrovnatelná. Pokud ovšem potřebuješ čistě PHP řešení a nemůžeš spouštět externí skripty, asi bohužel nic lepšího než mPDF nenajdeš. Existuje sice například DomPdf (lepší podpora css, trochu rychlejší generování, …), ale nemá tak dobrou podporu UTF-8 jako mPDF. Při generování PDF totiž vkládá celý font do PDF, nikoliv pouze subset jako to dělá mPDF. Díky tomu jsou soubory zbytečně velké. Nebo alespoň tak to bylo v době, kdy jsem hledal alternativu v PHP (rok dva zpátky?).
Knihovna wkhtmltopdf má ale také jednu mouchu a to je problém s kerningem pro některé fonty. Více viz staré a nové issue.
- ViPEr*CZ*
- Člen | 817
Tuhle knihovnu jsem také zkoušel… bohužel mi v tom spousta věcí co šlape v mPDF nešla. Například problém jsem měl s tím, když bych chtěl mít očíslované stránky. Nebo pokud bych chtěl mít hlavičku jen na první stránce nebo pokud bych chtěl mít hlavičku tabulky na každém listu. Takový poměrně mouchy, ale vcelku důležitý. Jinak je pravda, že pokud má člověk server, je wkhtmltopdf rozhodně lepší varianta pro lehčí htmlpdfka… rychlost i ram jsou úplně někde jinde.