Upload
heiglandreas
View
921
Download
0
Embed Size (px)
DESCRIPTION
Compare different technologies to create a PDF-file programatically
Citation preview
... und das kann man dann als
PDF runterladen
$ who am i
Andreas HeiglPHP & PDF seit ~15 Jahren@[email protected]
... und das kann man dann als PDF runterladen
Was ist PDF
Was ist PDF nicht?
Warum PDF?
Auswahl von Bibliotheken
Vergleich
Code-Beispiele
Was ist PDF
Was ist PDF
Seitenbeschreibungs-Definition
PDF - 82 qm / 6,5kg Papier (1310 Seiten)
HTML - 24qm / 2kg Papier (389 Seiten)
Was ist PDF
Austauschformat
Containerformat
WYSIWYG
Was ist PDF nicht
Was ist PDF nicht
Unveränderlich
Immer gleich
Sicher
Warum PDF?
Warum?
Ausdrucken
Mitnehmen
Aufbewahren
Unveränderlich
Warum: Ausdrucken
@print{}
Highend-Druckdaten
Warum:Mitnehmen
@print{}
Speichern als PDF
Speichern als Webseite mit Bildern
Warum:Aufbewahren
Ah!
PDF-Dateien
PDF-Dateien mit Archiv-Informationen
Warum: Unveränderlich
Vergesst es!
Jedes PDF lässt sich bearbeiten und verändern!
Signierte PDF-Dateien
PDF und PHP
Bibliotheken
Konvertierender Ansatz
Programatischer Ansatz
BibliothekenKonvertierend
DOMPDF
HTML2PDF
pdflatex
PHPpdf
Document-Komponente der zetaComponents
DOMPDF
Nutzt intern PDFlib oder R&OS/CPDF
Nutzung: dompdf http://example.org
HTML2PDF
Nutzt intern TCPDF
Letzte Aktualisierung 2011
Nutzung: html2pdf http://example.org
pdflatex
Nutzt intern LaTeX
LaTeX-Dokument muss programmatisch erstellt werden
Nutzung: pdflatex meinHtmlDocument.tex
Wandelt dann in meinHtmlDocument.pdf
PHPpdf
Konvertiert XML > PDF
Basiert auf Zend_Pdf
ZetaComponents
Verarbeitet diverse Eingangsformate (XHTML, ReST, DocBook, odt, Confluence, Mediawiki)
Nutzt intern TCPDF oder Haru
Eigene Konverter möglich
// 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 );
BibliothekenProgrammatisch
FPDF/FPDI
PDF-PHP/CPDF
Zend_Pdf
pdflatex
PDFlib lite
TCPDF
PDFlib
FPDF
PHP 4
Nicht mehr weitergeführt
FPDI
Zum Import von PDF-Dateien
PHP-PDF/CPDF
Kommerzielle Bibliothek
Free for Non-Commercial use
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
pdflatex
Kein „in-memory“ erzeugen einer PDF-Datei
Lässt sich wunderbar auslagern
LaTeX-Kentnisse
libHaru
Freie PDF-Bibliothek
Länger keine Updates
C-Bibliothek auch für andere Sprachen
pdflib lite
Stand von PDFlib 7
Nur für Nicht-Kommerzielle OpenSource-Projekte
Kein Support
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....
PDFlib
teuer, ClosedSource
Dokumentation
Thomas Merz stehen hinter PDFlib
C-Bibliothek auch für andere Sprachen nutzbar
Neueste Features aus PDF
Vergleich
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
Code-BeispieleZu finden unter
https://github.com/heiglandreas/pdfexamples
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
Fragen?
Danke!