... und das kann man dann als PDF runterladen

Post on 21-Dec-2014

921 views 0 download

description

Compare different technologies to create a PDF-file programatically

Transcript of ... und das kann man dann als PDF runterladen

... und das kann man dann als

PDF runterladen

$ who am i

Andreas HeiglPHP & PDF seit ~15 Jahren@heiglandreasandreas@heigl.org

... 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!