BUILDING PHP DOCUMENTS      WITH CAKEPDF      CakeFest Manchester, 2012
ABOUT ME•   Jelle Henkens•   LemonBE on IRC, @lemonit on Twitter•   Belgian in the UK•   Lead Developer at Geneo Software•...
WHAT IS CAKEPDF• Generate     PDF documents from HTML• Easily   pick which library to render the PDF• PDF   Encryption• La...
WHY IT WAS BUILT• Massive   differences in API between pdf libraries// Using DomPdf                          // Tcpdf exam...
WHY IT WAS BUILT• And   now with CakePdf// Using DomPdf                        // Tcpdf exampleApp::uses(CakePdf, CakePdf....
BUILT IN RENDER ENGINES                               External Binary  WkHtmlToPdf   stable                               ...
CONFIGURATION                           SetupAdd in Config/bootstrap.phpCakePlugin::load(CakePdf, array(    bootstrap => tr...
CONFIGURATION           Special case for CakePHP 2.1.xConfig/bootstrap.phpCakePlugin::load(CakePdf, array(    bootstrap => ...
CONFIGURATION                            SettingsGlobal settings// Config/bootstrap.phpConfigure::write(CakePdf, array(   ...
TO VIEW OR NOT TO VIEW• Generating   PDF files with the .pdf extension in the URL   •   Viewing PDF documents in the browse...
REQUESTHANDLER FLOW              View in browser or download to disk• Layout   file App/View/Layout/pdf/default.ctp• View  ...
STAND-ALONE FLOWApp::uses(CakePdf, CakePdf.Pdf);$CakePdf = new CakePdf(array(    engine => CakePdf.Tcpdf,    pageSize => A...
ENCRYPTING PDF FILES• Protect   against viewing, printing, editing and more• pdftk   binary from PDFLabs• 128   bit encryp...
PASSWORD TYPES• Owner    password • Unlock   protected permissions • Cannot   be the same as the user password• User   pas...
CRYPTO CONFIGURATIONAdd in Config/bootstrap.php//Default configurationConfigure::write(CakePdf, array(    engine => CakePdf...
USING ENCRYPTING//Action configurationpublic function view($id) {    $this->pdfConfig = array(        orientation => lands...
TECHNICAL DEMO
http://github.com/ceeram/CakePdf              THANKSJelle Henkens - @lemonit - jelle.henkens@gmail.com
Upcoming SlideShare
Loading in …5
×

Building PHP Documents with CakePdf - CakeFest 2012

2,217 views

Published on

Tech talk given by Jelle Henkens at CakeFest 2012 in Manchester, UK.

Integrating the CakePdf plugin to generate PDF documents in your CakePHP applications using WkHtmlToPdf.

PDF Version of http://www.slideshare.net/jellehenkens/building-php-documents-with-cakepdf-cakefest-2012

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
2,217
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
46
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Building PHP Documents with CakePdf - CakeFest 2012

  1. 1. BUILDING PHP DOCUMENTS WITH CAKEPDF CakeFest Manchester, 2012
  2. 2. ABOUT ME• Jelle Henkens• LemonBE on IRC, @lemonit on Twitter• Belgian in the UK• Lead Developer at Geneo Software• CakePHP Core Team Developer• Founder of followmy.tv
  3. 3. WHAT IS CAKEPDF• Generate PDF documents from HTML• Easily pick which library to render the PDF• PDF Encryption• Layouts, views, helpers and more• Use your own encryption / render engine
  4. 4. WHY IT WAS BUILT• Massive differences in API between pdf libraries// Using DomPdf // Tcpdf examplerequire_once("dompdf_config.inc.php"); require_once(config/lang/eng.php); require_once(tcpdf.php);$html = <html><body>. $html = <p>Put your html here.</p>. <html><body>. </body></html>; <p>Put your html here.</p>. </body></html>;$dompdf = new DOMPDF();$dompdf->set_paper(A4, landscape); $tcpdf = new TCPDF(portrait, mm,$dompdf-> A4);$dompdf->load_html($html); $tcpdf->AddPage();$dompdf->render(); $tcpdf->writeHTML($html);$pdfData = $dompdf->output(); $pdfData = $tcpdf->Output(, S);
  5. 5. WHY IT WAS BUILT• And now with CakePdf// Using DomPdf // Tcpdf exampleApp::uses(CakePdf, CakePdf.Pdf); App::uses(CakePdf, CakePdf.Pdf);$html = $html = <html><body>. <html><body>. <p>Put your html here.</p>. <p>Put your html here.</p>. </body></html>; </body></html>;$cakePdf = new CakePdf(array( $cakePdf = new CakePdf(array( engine => CakePdf.DomPdf, engine => CakePdf.Tcpdf, orientation => portrait, orientation => portrait, pageSize => A4 pageSize => A4)); ));$pdfData = $cakePdf->output($html); $pdfData = $cakePdf->output($html);
  6. 6. BUILT IN RENDER ENGINES External Binary WkHtmlToPdf stable Uses WebKit DomPdf alpha PHP Based Mpdf alpha Very Nice! PHP Based Tcpdf alpha PHP Based
  7. 7. CONFIGURATION SetupAdd in Config/bootstrap.phpCakePlugin::load(CakePdf, array( bootstrap => true, routes => true));Needs RequestHandlerComponentclass AppController extends Controller { public $components = array(RequestHandler);}
  8. 8. CONFIGURATION Special case for CakePHP 2.1.xConfig/bootstrap.phpCakePlugin::load(CakePdf, array( bootstrap => true));Config/routes.phpRouter::parseExtensions(pdf);
  9. 9. CONFIGURATION SettingsGlobal settings// Config/bootstrap.phpConfigure::write(CakePdf, array( engine => CakePdf.WkHtmlToPdf, pageSize => A4, orientation => portrait));Inside the controllerpublic function view($id) { $this->pdfConfig = array( orientation => landscape, download => true, filename => invoice-2005.pdf ); .. Rest of action logic ..}
  10. 10. TO VIEW OR NOT TO VIEW• Generating PDF files with the .pdf extension in the URL • Viewing PDF documents in the browser • Download to disk • Smaller files• Stand-alone to generate raw PDF data • Email attachments • Offline processing • Larger files
  11. 11. REQUESTHANDLER FLOW View in browser or download to disk• Layout file App/View/Layout/pdf/default.ctp• View file App/View/Orders/pdf/invoice.ctp• All the CakePHP goodies to your disposal • Helpers • Blocks • Elements
  12. 12. STAND-ALONE FLOWApp::uses(CakePdf, CakePdf.Pdf);$CakePdf = new CakePdf(array( engine => CakePdf.Tcpdf, pageSize => A5, orientation => landscape, margin => 10));$html = <html><head></head><body><p>CakeFest is the best</p></body></html>;$rawPdfData = $CakePdf->output($html);
  13. 13. ENCRYPTING PDF FILES• Protect against viewing, printing, editing and more• pdftk binary from PDFLabs• 128 bit encryption• Second pass encryption• Encrypt existing PDF documents
  14. 14. PASSWORD TYPES• Owner password • Unlock protected permissions • Cannot be the same as the user password• User password • Will prompt before opening the PDF Document • Cannot exist without an owner password
  15. 15. CRYPTO CONFIGURATIONAdd in Config/bootstrap.php//Default configurationConfigure::write(CakePdf, array( engine => CakePdf.WkHtmlToPdf, crypto => CakePdf.Pdftk));
  16. 16. USING ENCRYPTING//Action configurationpublic function view($id) { $this->pdfConfig = array( orientation => landscape, protect => true, userPassword => foo, ownerPassword => bar, permissions => array( print ) ); .. Rest of action logic ..}
  17. 17. TECHNICAL DEMO
  18. 18. http://github.com/ceeram/CakePdf THANKSJelle Henkens - @lemonit - jelle.henkens@gmail.com

×