39
... und das kann man dann als PDF runterladen

und das kann man dann als PDF runterladen

Embed Size (px)

DESCRIPTION

Compare different technologies to create a PDF-file programatically

Citation preview

Page 1: und das kann man dann als PDF runterladen

... und das kann man dann als

PDF runterladen

Page 2: und das kann man dann als PDF runterladen

$ who am i

Andreas HeiglPHP & PDF seit ~15 Jahren@[email protected]

Page 3: und das kann man dann als PDF runterladen

... und das kann man dann als PDF runterladen

Was ist PDF

Was ist PDF nicht?

Warum PDF?

Auswahl von Bibliotheken

Vergleich

Code-Beispiele

Page 4: und das kann man dann als PDF runterladen

Was ist PDF

Page 5: und das kann man dann als PDF runterladen

Was ist PDF

Seitenbeschreibungs-Definition

PDF - 82 qm / 6,5kg Papier (1310 Seiten)

HTML - 24qm / 2kg Papier (389 Seiten)

Page 6: und das kann man dann als PDF runterladen

Was ist PDF

Austauschformat

Containerformat

WYSIWYG

Page 7: und das kann man dann als PDF runterladen

Was ist PDF nicht

Page 8: und das kann man dann als PDF runterladen

Was ist PDF nicht

Unveränderlich

Immer gleich

Sicher

Page 9: und das kann man dann als PDF runterladen

Warum PDF?

Page 10: und das kann man dann als PDF runterladen

Warum?

Ausdrucken

Mitnehmen

Aufbewahren

Unveränderlich

Page 11: und das kann man dann als PDF runterladen

Warum: Ausdrucken

@print{}

Highend-Druckdaten

Page 12: und das kann man dann als PDF runterladen

Warum:Mitnehmen

@print{}

Speichern als PDF

Speichern als Webseite mit Bildern

Page 13: und das kann man dann als PDF runterladen

Warum:Aufbewahren

Ah!

PDF-Dateien

PDF-Dateien mit Archiv-Informationen

Page 14: und das kann man dann als PDF runterladen

Warum: Unveränderlich

Vergesst es!

Jedes PDF lässt sich bearbeiten und verändern!

Signierte PDF-Dateien

Page 15: und das kann man dann als PDF runterladen

PDF und PHP

Page 16: und das kann man dann als PDF runterladen

Bibliotheken

Konvertierender Ansatz

Programatischer Ansatz

Page 17: und das kann man dann als PDF runterladen

BibliothekenKonvertierend

DOMPDF

HTML2PDF

pdflatex

PHPpdf

Document-Komponente der zetaComponents

Page 18: und das kann man dann als PDF runterladen

DOMPDF

Nutzt intern PDFlib oder R&OS/CPDF

Nutzung: dompdf http://example.org

Page 19: und das kann man dann als PDF runterladen

HTML2PDF

Nutzt intern TCPDF

Letzte Aktualisierung 2011

Nutzung: html2pdf http://example.org

Page 20: und das kann man dann als PDF runterladen

pdflatex

Nutzt intern LaTeX

LaTeX-Dokument muss programmatisch erstellt werden

Nutzung: pdflatex meinHtmlDocument.tex

Wandelt dann in meinHtmlDocument.pdf

Page 21: und das kann man dann als PDF runterladen

PHPpdf

Konvertiert XML > PDF

Basiert auf Zend_Pdf

Page 22: und das kann man dann als PDF runterladen

ZetaComponents

Verarbeitet diverse Eingangsformate (XHTML, ReST, DocBook, odt, Confluence, Mediawiki)

Nutzt intern TCPDF oder Haru

Eigene Konverter möglich

Page 23: und das kann man dann als PDF runterladen

//  Convert  some  input  RSTfile  to  docbook$document  =  new  ezcDocumentRst();$document-­‐>loadFile(  './article/introduction.txt'  );

//  Load  the  docbook  document  and  create  a  PDF  from  it$pdf  =  new  ezcDocumentPdf();$pdf-­‐>options-­‐>errorReporting  =  E_PARSE  |  E_ERROR  |  E_WARNING;

//  Load  a  custom  style  sheet$pdf-­‐>loadStyles(  'custom.css'  );

//  Add  a  customized  footer$pdf-­‐>registerPdfPart(  new  ezcDocumentPdfFooterPdfPart(        new  ezcDocumentPdfFooterOptions(  array(                  'showDocumentTitle'    =>  false,                'showDocumentAuthor'  =>  false,                'height'                          =>  '10mm',        )  ))  );

//  Add  a  customized  header$pdf-­‐>registerPdfPart(  new  ezcDocumentPdfHeaderPdfPart(        new  ezcDocumentPdfFooterOptions(  array(                  'showPageNumber'          =>  false,                'height'                          =>  '10mm',        )  ))  );

$pdf-­‐>createFromDocbook(  $document-­‐>getAsDocbook()  );file_put_contents(  __FILE__  .  '.pdf',  $pdf  );

Page 24: und das kann man dann als PDF runterladen

BibliothekenProgrammatisch

FPDF/FPDI

PDF-PHP/CPDF

Zend_Pdf

pdflatex

PDFlib lite

TCPDF

PDFlib

Page 25: und das kann man dann als PDF runterladen

FPDF

PHP 4

Nicht mehr weitergeführt

Page 26: und das kann man dann als PDF runterladen

FPDI

Zum Import von PDF-Dateien

Page 27: und das kann man dann als PDF runterladen

PHP-PDF/CPDF

Kommerzielle Bibliothek

Free for Non-Commercial use

Page 28: und das kann man dann als PDF runterladen

Zend_Pdf

Wird aktuell nicht weiterentwickelt

Rewrite steht z.Zt. nicht an

Basiert auf PDF-1.4

Einziges Projekt, das PDFs bearbeiten kann!!

Sauberer OO-PHP-Code

Page 29: und das kann man dann als PDF runterladen

pdflatex

Kein „in-memory“ erzeugen einer PDF-Datei

Lässt sich wunderbar auslagern

LaTeX-Kentnisse

Page 30: und das kann man dann als PDF runterladen

libHaru

Freie PDF-Bibliothek

Länger keine Updates

C-Bibliothek auch für andere Sprachen

Page 31: und das kann man dann als PDF runterladen

pdflib lite

Stand von PDFlib 7

Nur für Nicht-Kommerzielle OpenSource-Projekte

Kein Support

Page 32: und das kann man dann als PDF runterladen

TCPDFFree & OpenSource

Dokumentation lässt zu wünschen übrig.

Nicola Asuni steht hinter TCPDF

Import von PDF-Dateien nur über FPDI

Signierte PDFs sind einfach zu erstellen

Funktionsumfang ausreichend

Code smells....

Page 33: und das kann man dann als PDF runterladen

PDFlib

teuer, ClosedSource

Dokumentation

Thomas Merz stehen hinter PDFlib

C-Bibliothek auch für andere Sprachen nutzbar

Neueste Features aus PDF

Page 34: und das kann man dann als PDF runterladen

Vergleich

Page 35: und das kann man dann als PDF runterladen

VergleichTCPDF PDFlib

KostenLizenz

PDF erstellenPDF bearbeiten

PDF importierenverschlüsseln

GeschwindigkeitStandards

SchrifttypenSprache

0,- ab 800,- €GPL3 Commercial

✔ ✔

✘ ✘

✔ (mit FPDF) ✔ (Je nach Lizenz)

✔ ✔ (mit Zusatzprodukt)

10 PDF in > 10 s 50 PDF in 4,08sPDF/A-1b PDF/A1-3, PDF/X1-4, PDF/VT, PDF/UA

TrueType, OpenType(TTF), Type1, CID TrueType, OpenType, Type1, CID

PHP C

Page 36: und das kann man dann als PDF runterladen

Code-BeispieleZu finden unter

https://github.com/heiglandreas/pdfexamples

Page 37: und das kann man dann als PDF runterladen

ressourceshttp://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdfhttp://www.w3.org/TR/REC-html40/http://www.pdfx-ready.ch/index.php?show=496https://github.com/dompdf/dompdfhttp://html2pdf.fr/de/defaulthttps://de.wikipedia.org/wiki/PdfTeXhttps://github.com/psliwa/PHPPdfhttps://github.com/zetacomponents/Documenthttp://www.fpdf.orghttps://github.com/lsolesen/fpdihttps://github.com/johnwhitington/cpdf-sourcehttp://framework.zend.com/manual/1.12/de/zend.pdf.usage.htmlhttp://libharu.orghttp://pdflib.comhttp://tcpdf.org

Page 38: und das kann man dann als PDF runterladen

Fragen?

Page 39: und das kann man dann als PDF runterladen

Danke!