wake-up-neo.com

PHP PDF Vorlagenbibliothek mit PDF Ausgabe?

Gibt es eine PHP PDF Bibliothek, die Platzhaltervariablen ersetzen in einem vorhandenen PDF-, ODT- oder DOCX-Dokument und eine PDF Datei generieren kann? als Endergebnis, ohne das Layout zu vermasseln?

Bedarf:

  • Benötigt keinen Webdienst von Drittanbietern

  • Die Möglichkeit, auf gemeinsam genutztem Webhosting zu laufen, ist ideal (keine binären Installationen/Pakete erforderlich).

Eine Bibliothek, die in der Lage ist, eine vorhandene PDF -Datei zu laden und programmgesteuert an einer bestimmten Position Text einzufügen, ist für meinen Anwendungsfall nicht genug .

Soweit meine Forschung zeigt, gibt es keine Bibliothek, die dies tun kann:

  • TCPDF kann Dokumente nur von Grund auf neu erstellen

  • FPDI kann vorhandene PDF Vorlagen lesen, aber nur programmgesteuert Inhalte hinzufügen (kein Ersetzen von Vorlagenvariablen)

  • Es gibt verschiedene DOCX/ODT-Vorlagenbibliotheken, die jedoch keine PDF-Dateien ausgeben

PHPDOCx behauptet, genau das tun zu können, was ich brauche - aber sie bieten keine Testversion an und ich werde keine Katze in einer Tasche kaufen, besonders nicht, wenn es scheinbar nein anderes Produkt im Web, das dies tut. Es fällt mir schwer zu glauben, dass sie dies ohne Probleme tun können. Wenn Sie dies mit dem Produkt erfolgreich durchgeführt haben, schreiben Sie bitte hier.

Übersehen ich etwas?

Gibt es eine Möglichkeit, dies mit PDF Formularen zu tun? Ich erstelle die Quelldokumente in OpenOffice 3.

Möglicherweise kann ich Standard-Linux-Befehle verwenden (pdftk ist beispielsweise verfügbar und probiert das gerade aus.)

Update: * Argh! * Ich wurde aus dem Büro gerufen und das Kopfgeld ist inzwischen abgelaufen. Start einer neuen Prämie: Soweit meine Tests belegen, funktioniert für mich noch keine Lösung perfekt.

Update II: Ich werde bald nach dem pdftk-Ansatz suchen, aber ich beginne auch eine weitere Prämie für eine weitere Runde, in der zusätzliche Eingaben gesammelt werden. Diese Frage hat jetzt 1300 Wiederholungspunkte in Kopfgeldern gesehen, muss eine Art Rekord sein :)

58
Pekka 웃

Pekka,

Ich habe mir das schon vorher angeschaut. Ich denke, Sie können pdftk (ein Befehlszeilendienstprogramm) verwenden, um ein PDF - Formular unter Verwendung von FDF/XFDF-Datendateien auszufüllen, die Sie leicht aus PHP heraus erzeugen können. Das war die beste Option, die ich bisher gesehen habe, obwohl es durchaus eine native Bibliothek geben könnte.

pdftk ist im Allgemeinen sehr nützlich, einen Blick wert.

Update: Schauen Sie hier: http://php.net/manual/de/book.fdf.php

13
Orbling

Dies ist nicht sehr praktisch, aber der Vollständigkeit halber: Wenn Sie bereits eine ODT-Vorlage haben, können Sie diese sehr gut als Vorlage beibehalten. Das Ändern der OpenDocument-Datei content.xml und das Ersetzen von Platzhaltern darin ist ziemlich einfach. Wenn ja, können Sie unoconv oder pyodconverter verwenden, um den ODT in eine endgültige PDF-Datei umzuwandeln.

unoconv -f pdf -o final.pdf template.odt

Dies erfordert natürlich ein vollständiges OpenOffice-Setup (UNO und Writer) auf dem Webserver. Und natürlich passt nicht jeder Webhoster dazu! Haha. Auch wenn es bei einem Debian- oder Fedora-Setup einfach ist. Die Ausführungsgeschwindigkeit wäre wahrscheinlich auch nicht herausragend. Aber dann ist es vielleicht der sauberste Ansatz, da OOo beide Formate viel besser regelt als jede PHP Klasse jemals könnte.

15
mario

Sie haben free nicht zu einer Anforderung gemacht, also werde ich LiveDocX vorschlagen. Sie haben eine kostenlose Option, aber sie erfüllt nicht Ihre keine Anforderung eines Drittanbieters.

Dafür gibt es auch ein ZF-Paket:

7
Gordon

Haben Sie überlegt, etwas wie XSL: Formatting Objects (XSL: FO) zu verwenden? Im Grunde handelt es sich um XML-Dokumente, die verarbeitet und in PDF-Dateien umgewandelt werden. Wenn Sie Zeichenfolgen - oder besser DOM - ersetzen, sollte dies ziemlich einfach sein. Es unterstützt das Einbetten von Bildern, Links, Anmerkungen usw.

Es ist nicht PHP, aber es gibt eine Reihe von PHP - Wrappern, zusammen mit den Möglichkeiten, es über exec usw. zu verwenden. Für weitere Informationen: http://techportal.inviqa.com/2009/12/16/transforming-xml-with-php-and-xsl/

Es gibt eine Implementierung als Apache-Projekt - http://xmlgraphics.Apache.org/fop/

5
CaseySoftware

Am besten erstellen Sie das gesamte Dokument im laufenden Betrieb, wobei die Vorlage programmatisch mit fpdf oder ähnlichem definiert wird. Auf diese Weise wird Ihr Text nicht durch Absätze oder ähnliches abgeschnitten, und Sie können Bilder/andere Elemente problemlos nach Bedarf positionieren.

3
John Cartwright

fpdf und darüber gibt es eine weitere Erweiterung, an die ich mich nicht erinnern kann, mit der Sie Vorlagen importieren können

3
renevdkooi

Dies entspricht nicht Ihrem "no binary" - Mandat, aber PDFlib verfügt über ein Nice-Templating-System, das "Blocks" verwendet. Hierbei handelt es sich um PDFlib-spezifische Metadaten, die Sie mit einem Acrobat-Plugin in ein PDF "zeichnen" können , dann zur Laufzeit mit einem einzigen Funktionsaufruf pro Block programmatisch auszufüllen. Bei den Blöcken kann es sich um Text (mit Pseudo-HTML für die einfache Textformatierung von Schriftart, -größe/-farbe), um Bilder (die meisten Elemente, die in einer PDF-Datei angezeigt werden können) und um PDF-Dateien selbst handelt, sodass Sie ganze andere Dokumente oder Ausschnitte einbetten können von Dokumenten in einem Block. 

Dies kann aus einem bereits vorhandenen PDF (Laden, Einfügen von Inhalt/Füllblock/etc .., Ausgabe) oder Erstellen eines neuen PDF von Grund auf (schwer zu tun, programmatisch zu tun) , aber möglich.

Ich habe die Blöcke erfolgreich verwendet, um ein einfaches Templating-System für einen Client zu erstellen, in dem Blöcke mit kleinen eingebetteten Metadatenblöcken in ein Dokument gezeichnet werden konnten, das dann serverseitig analysiert wurde, um ein Formular zu generieren, in das Daten eingefügt werden sollen diese Blöcke zum Zeitpunkt der Dokumenterstellung.

3
Marc B

PDFlib ist Nizza, und Ihr freigegebener Host könnte es bereits haben. Ich war in der Lage, diese Dinge mit PDFlib relativ einfach zu erledigen http://www.housejockey.com/flyers/12/80/MyListing.pdf , aber die grundlegende Technik ist der Drop-In-Absatztext. das du gesagt hast war nicht gut.

Ich habe auch mit abcPDF für ASP/ASP.NET gearbeitet und fand es ziemlich gut, um PDFs zu kopieren, aber auch nicht dafür, in vorhandenen Textbereichen herumzuwühlen.

Das Arbeiten mit robusten Vorlagen und Platzhaltern ist ein erheblicher Komplexitätssprung gegenüber dem Inhalt von Inhalten. Das Umfließen von vorhandenem Text in einem PDF ist im Allgemeinen nicht möglich. Es erfordert eine zusätzliche Dokumentenstruktur, für die teure Softwarepakete für variable Daten wie XMPie und Creo entwickelt wurden.

PHPDOCX fängt an, richtig gut zu klingen! Viel Glück.

2
Matt Montag

Später, aber Sie können OpenSource-Vorlagen-Designer https://github.com/applicius/dhek/releases verwenden, um Speicherhalter/-bereiche über einer vorhandenen PDF-Datei zu definieren und diese dann in PHP (als JSON) zu laden formatieren) und schreiben Sie entsprechend auf Original PDF mit fpdf lib, um benutzerdefinierte PDF mit dynamischen Daten zu erstellen.

2
cchantep

Ich füge diese neue Antwort hinzu, da die Erweiterung von FDF PHP nun tot ist.

Ich habe gerade diese Anweisungen befolgt und am Ende ein Perl-Skript ausgeführt, dann den Befehl pdftk

Ich bin mir ziemlich bewusst, dass es sich bei weitem nicht um eine echte PHP - Lösung handelt, aber sie ist zuverlässig und relativ einfach auf jeder * nix-Plattform zu implementieren.

Die dort beschriebenen Tools sind auch für Debian verfügbar, falls Sie sich fragen.

1
Capsule

Obwohl dies nicht genau das ist, was Sie gefragt haben, sollten Sie es in zwei Schritten machen: Verwenden Sie ein PHP-Template-System ( smarty , dwoo ), um eine HTML-Seite zu generieren, und verwenden Sie dann Tools wie Html2Pdf convert es zu pdf. Ich verwende es und die Ergebnisse sind gut (keine Probleme mit dem Seitenlayout usw.)

Natürlich hängt es von Ihren Eingabedokumenten ab (können Sie anstelle von PDF/ODT als Quelle html verwenden) und von der Komplexität des Layouts.

1
ts.

Ok, ich versuche Ihnen zu helfen, das Problem ein wenig zu lösen.

Zuerst die Antwort für ein paar Fragen.

Q - Übersehe ich etwas?

A - Nein. Es gibt eine Bibliothek PHP PDF, die Platzhaltervariablen in einer vorhandenen PDF ersetzen und als Endergebnis eine PDF -Datei generieren kann, ohne das Layout zu beeinträchtigen

F - Gibt es eine Möglichkeit, dies mit PDF Formularen zu tun?

A - Ja. Absolut der Trick dazu ist die Verwendung eines PDF - Formulars

Für beide Antworten können Sie Justin Koivisto verwenden. Füllen Sie das PDF-Formularfeld für die PHP-Bibliothek aus . Weitere Informationen finden Sie unter http://koivi.com/fill-pdf-form-fields/tutorial.php .. __: Dort finden Sie weitere Informationen.

Dank an Justin Koivisto für seine Arbeit

P.S

Um dieses Problem zu umgehen, lesen Sie bitte das Oracle Business Intelligence Publisher-Benutzerhandbuch - Erstellen einer PDF -Vorlage

1
Gajahlemu

Ich konnte Platzhalterwerte in einer .docx-Datei über eine Bibliothek mit dem Namen phpdocx (https://github.com/djpate/phpdocx) ersetzen (nicht die an anderer Stelle referenzierte).

Ich habe dann erfolgreich eine portable Version von libreoffice auf dem Webserver meines Hosts installiert, die ich mit PHP anrufe, um eine Befehlszeilenumwandlung von .docx usw. in das PDF-Format durchzuführen. on the fly Ich habe keine Administratorrechte für den Webserver meines Hosts. Hier ist mein Blogpost von dem, was ich getan habe:

http://geekswithblogs.net/robertphyatt/archive/2011/11/19/converting-.docx-to-pdf-or-.doc-to-pdf-or-.doc.aspx

Dies beantwortet Ihre Frage teilweise. Ich hoffe es ist hilfreich.

1
Robert Hyatt

DOM Pdf und mPdf sind die beiden verfügbaren Bibliotheken, um dies zu erreichen.

0
Anil Saini

Wenn Sie einen externen Dienst in Anspruch nehmen möchten, kann PDF Otter Ihr Problem lösen. Es gibt einen kostenlosen Plan, den Sie abonnieren und sofort in Ihre Anwendung integrieren können. 

Weitere Vorteile der Verwendung von PDF Otter sind weniger Abhängigkeiten in Ihrer Anwendung und eine freundliche Erfahrung bei der Auswahl der Felder, die Sie ausfüllen müssen es war zeitaufwändig).

0
mr_mariusz

Es ist etwas spät, aber schauen Sie sich die PDFTemplate Library an, die genau das macht, was Sie wollen. Sie können Open Document-Dateien (odt) erstellen und Platzhalter hinzufügen. Die PDFTemplate-Bibliothek kann diese Platzhalter ausfüllen (auch mit Bildern) und eine PDF -Datei erstellen.

ODT-Dateien mit Platzhaltern an PDF

0
Nikolai Fischer