PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘PHP PDF erstellen’ tag

84 Formate nach PDF konvertieren mit 7-PDF

with 5 comments

Vor kurzem bin ich von Thorsten Hodes auf sein Projekt aufmerksam gemacht worden und er fragte, ob das vielleicht von Interesse ist und ich es hier mal vorstellen möchte. Natürlich möchte ich!

Sein Projekt heißt 7-PDF und ist ein Service bzw. Server, mit dessen Hilfe man nahezu jedes bekannte Bild- und Textformat (aktuell werden 84 Formate unterstützt) nach PDF konvertieren kann. Das ist natürlich besonders interessant für Dateien, die bereits vorliegen und zusätzlich noch als PDF zur Verfügung stehen sollen, als auch zur Erstellung neuer PDFs. Häufig ist es einfacher, einen Text schnell via HTML zusammenzustellen, zu formatieren und dieses HTML dann in ein PDF-Dokument zu konvertieren, als z.B. mit Hilfe von Zend_Pdf, FPDF, PDFlib und wie sie alle heißen programmatisch neue PDF-Dokumente zu erstellen.

Nehmen wir also an, wie haben bereits ein fertiges Word-2007-Dokument, zum Beispiel eine Rechnung. Diese möchten wir dem Kunden nun auch als PDF zum Download zur Verfügung stellen. Mit den oben genannten programmatischen Lösungen funktioniert das nicht, was wir brauchen ist ein Konverter, und genau das ist 7-PDF.

7-PDF ist ein Service, den man sowohl kostenlos online nutzen kann (Thorsten stellt dort einen Server im Internet bereit, den man zum Konvertieren nutzen kann), oder man lädt sich den 7-PDF Server herunter und installiert ihn lokal, dann verlassen die Rechnungen nicht den eigenen Server bzw. die Firma.

Diesem Service übersendet man die zu konvertierende Datei, definiert einige Einstellungen (PDF-Passwort, Bilderkomprimierung usw.), startet dann den Konvertierungsprozess und erhält das generierte PDF-Dokument. Dazu gibt es als Client sowohl eine Windows-Anwendung, eine Java-Client-Library und auch eine PHP-Client-Library, die ich hier natürlich vorstellen möchte.

Der Server, der intern auf OpenOffice zurückgreift, kann dabei ca. 2000 PDF-Dokumente pro Stunde konvertieren. Das ist natürlich abhängig von der Größe der Dateien und ob der Service parallel befeuert wird oder nicht. Aber es ist recht performant, soviel kann man sagen.

Nun zur Praxis: Wir wollen also eine .docx-Datei nach PDF konvertieren. Das ist schnell gemacht mit dem kostenlosen Online-Service und dem PHP-Client:

require_once 'SevenPdf/Client.php';
$sevenPdfClient = new SevenPdf_Client();
$sevenPdfClient->setUsername('libdemouser')
		->setPassword('12345')
		->useSsl(true);

//Set some additional PDF Settings
$sevenPdfClient->setEncryptFile(true); //set PDF Encryption
$sevenPdfClient->setDocumentOpenPassword('test'); //set Open Password

$sevenPdfClient->convertToPdf('invoice.docx', 'invoice.pdf');

Das ist etwas mehr als ein Minimalbeispiel, aber man kann dort schön sehen, was so alles möglich ist. Zur Demonstration reicht hier der „libdemouser“ aus, sobald man aber vertrauliche Daten nutzt sollte man sich einen kostenlosen Account auf der Webseite registrieren auf den andere keinen Zugriff haben, oder sich lokal einen Server installieren. SSL wird für die Verbindung aktiviert ebenso wie die PDF-Verschlüsselung bzw. der Passwortschutz. Dann wird der Funktion „convertToPdf“ die Word-Datei und der Speicherort für die PDF-Datei übergeben. Das war es schon.

Morgen wird Thorsten selbst hier auch noch einen Artikel veröffentlichen und die Installation des Servers vorstellen (*jubel*, der erste Gastbeitrag!).

Written by Michael Kliewe

März 16th, 2010 at 9:10 am