PdfResponse
PdfResponse pomocí jednoho řádku vyrendruje šablonu do PDF.
| Autor | Honza Kuchař |
|---|---|
| Demo | http://projekty.mujserver.net/…cument_root/ |
| Licence | LGPL |
| SVN | https://svn.mujserver.net:8443/…sponse/trunk
(verze pro PHP 5.2.x) (uživatel: guest, heslo: (nechat
prázdné)) |
| Diskuse | http://forum.nette.org/…-pdfresponse |
Instalace
- Stáhněte ze SVN.
- Překopírujte složku
libs/PdfResponse(ne není to chyba, tato složka má opravdu 17MB) - Začněte používat.
JavaScript v souborech PDF
- Příručka JavaScript v Adobe PDF
- Acrobat 6.0 JavaScript Scripting Guide
- Planet
PDF – Debugging Acrobat JavaScript
- Na vývoj PDF s JavaScriptem je fajn mít prohlížeč PDFek s JavaScriptovým debuggerem
- V Adobe Acrobat se JS debugger otevírá pomocí CTRL+J
- Pokud nefunguje, tak je potřeba Acrobat nastavit. Tzn. Zmáčknout CTRL+K (otevře předvolby) vybrat v kategoriích JavaScript a poté zaškrtnout „Zapnout interaktivní konzolu“ a „Zapnout debugger JavaScripti po restartu Acrobatu“
Zdrojové projekty
| Závisí PdfResponse: | |
|---|---|
| mPDF | http://mpdf.bpm1.com/ |
| JavaScript support plugin | http://www.fpdf.de/…s/addons/36/ |
| Závisí mPDF: | |
| FPDF | http://www.fpdf.org/ |
| html2pdf | http://html2fpdf.sourceforge.net/ |
| UFPDF | http://acko.net/node/56 |
Použití PdfResponse
Nejjednodušší použití
// In presenter
class MyPresenter extends Presenter {
function actionPdf() {
$html = "<b>ahoj světe!</b>"; // HTML v UTF-8
// Jako 1. parament PDFResponse můžeme předat html v UTF8 nebo objekt implementující rozhraní ITemplate
$this->terminate(new PDFResponse($html));
}
}
Použití s konfigurací
V presenteru můžete šablonu vyrenderovat do PDF např. následující způsobem:
// In presenter
class MyPresenter extends Presenter {
function actionPdf() {
$template = $this->createTemplate()->setFile(APP_DIR."/templates/pdf.phtml");
$pdf = new PDFResponse($template);
// Všechny tyto konfigurace jsou nepovinné:
// Orientace stránky
$pdf->pageOrientaion = PDFResponse::ORIENTATION_LANDSCAPE;
// Formát stránky
$pdf->pageFormat = "A0";
// Okraje stránky
$pdf->pageMargins = "100,0,100,0,20,60";
// Způsob zobrazení PDF
$pdf->displayLayout = "continuous";
// Velikost zobrazení
$pdf->displayZoom = "fullwidth";
// Název dokumentu
$pdf->documentTitle = "Nadpis stránky";
// Dokument vytvořil:
$pdf->documentAuthor = "Jan Kuchař";
// Callback - těsně před odesláním výstupu do prohlížeče
//$pdfRes->onBeforeComplete[] = "test";
$pdf->mPDF->IncludeJS("app.alert('This is alert box created by JavaScript in this PDF file!',3);");
$pdf->mPDF->IncludeJS("app.alert('Now opening print dialog',1);");
$pdf->mPDF->OpenPrintDialog();
// Zde končí nepovinná konfigurace
// Ukončíme presenter -> předáme řízení PDFresponse
$this->terminate($pdf);
}
}
Komentáře 
Honza Kuchař | 24. 2. 2010, 8:48 | comment
Máš to tam. Ale teď to zase člověk musí nastavit, pokud to nemá ve
složce libs/PdfResponse/mpdf/mpdf.php. (zakomentoval jsem to,
kdyby to chtěl někdo raději s původním chováním)
micman | 4. 3. 2010, 9:05 | comment
Nedaří se checkout: # svn co https://guest@svn.mujserver.net:8443/…sponse/trunk
svn: OPTIONS of ‚https://guest@svn.mujserver.net:8443/svn/Nette_PDFResponse/trunk‘: could not connect to server (https://svn.mujserver.net:8443)
Honza Kuchař | 5. 3. 2010, 15:20 | comment
Už to jede.
demonic | 15. 12. 2011, 14:10 | question
Zdravím, mám nejnovější Nette, PdfResponse z githubu a samozřejme
i nejnovější mPDF.
$pdf = new PDFResponse($template->__toString());
$pdf->pageFormat = „A4“;
$pdf->mPDF->OpenPrintDialog();
$this->sendResponse($pdf); Toto funguje, pouze bez
radku$pdf->mPDF->OpenPrintDialog(); nefunguje ani
$pdf->mPDF->includeJs(…); Call to undefined method
mPDF::OpenPrintDialog() Co delam spatne? trida s temito metodami tam je: class
mPDF extends \mPDF {…}

Jan Tvrdík | 23. 2. 2010, 19:00 | comment
Řádek
self::$mPDFPath = dirname(__FILE__)."/mpdf/mpdf.php";bych vyhodil. Takovéto magické nastavení tam imho nemá co dělat.