script - php to doc



PHP PDF-Vorlagenbibliothek mit PDF-Ausgabe? (10)

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

Bedarf:

  • Benötigt keinen Webservice von Drittanbietern

  • Die Fähigkeit, auf gemeinsam genutztem Webhosting zu laufen, wäre ideal (keine binären Installationen / Pakete erforderlich)

Eine Bibliothek, die eine vorhandene PDF-Datei laden und programmatisch Text an einer bestimmten Stelle einfügen kann, ist für meinen Anwendungsfall nicht ausreichend .

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

  • TCPDF kann Dokumente nur von Grund auf neu generieren

  • FPDI kann vorhandene PDF-Vorlagen lesen, aber Inhalte nur programmatisch hinzufügen (keine Ersetzung von Vorlagenvariablen)

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

PHPDOCx behauptet, genau das zu tun, was ich brauche - aber sie bieten keine Testversion an und ich werde keine Katze in einer Tasche kaufen, vor allem dann nicht, wenn es im Internet anscheinend kein anderes Produkt gibt Dies. Ich finde es schwer zu glauben, dass sie dies ohne Probleme tun können - wenn Sie dies erfolgreich mit dem Produkt getan haben, schreiben Sie bitte hier eine Zeile.

Übersehe ich etwas?

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

Ich kann in der Lage sein, Standard-Linux-Befehle zu verwenden ( pdftk ist zum Beispiel verfügbar und versucht das gerade pdftk .)

Update: * Argh! * Ich wurde aus dem Büro gerufen und das Kopfgeld ist in der Zwischenzeit abgelaufen. Ein neues Kopfgeld starten: Soweit meine Tests zeigen, funktioniert für mich noch keine Lösung.

Update II: Ich werde bald den pdftk-Ansatz sehen, aber ich beginne auch ein weiteres Bounty für eine weitere Runde, um zusätzliche Inputs zu sammeln. Diese Frage hat jetzt 1300 Rep-Punkte in Bounties gesehen, muss eine Art von Rekord sein :)

https://code.i-harness.com


Am besten wäre es, das gesamte Dokument im laufenden Betrieb zu erstellen, 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 einfach nach Bedarf positionieren.


Dies entspricht nicht Ihrem "no binary" -Mandat , aber PDFlib hat ein schönes Templating-System mit "blocks", das sind PDFlib-spezifische Metadaten, die Sie mit einem Acrobat-Plugin in ein PDF "zeichnen" können und dann zur Laufzeit programmatisch ausfüllen mit einem einzigen Funktionsaufruf pro Block. Die Blöcke können Text sein (mit pseudohtml für einfache Textformatierung von Schriftart, -größe und -farbe), Bilder (fast alles, was in einer PDF angezeigt werden kann) und PDFs selbst, sodass Sie ganze andere Dokumente oder Schnipsel einbetten können von Dokumenten in einem Block.

Es kann dies von einer bereits bestehenden PDF (laden Sie es, fügen Sie Inhalt / füllen Sie Block / etc .., Ausgabe), oder erstellen Sie eine neue PDF von Grund auf (ernsthaft schmerzhaft, um programmatisch zu tun, aber möglich).

Ich habe die Blöcke erfolgreich verwendet, um ein einfaches Templating-System für einen Client zu erstellen, wo sie Blöcke in ein Dokument mit eingebetteten kleinen Bits von Metadaten zeichnen konnten, das dann serverseitig analysiert wurde, um ein Formular zu erzeugen, um die Eingabe von Daten anzufordern diese Blöcke zur Dokumentgenerierungszeit.



Es ist ein bisschen spät, aber werfen Sie einen Blick auf die PDFTemplate Bibliothek, die es genau tut, was Sie wollen. Sie können Open Document-Dateien (odt) erstellen und Platzhalter darin einfügen. Die PDFTemplate-Bibliothek kann diese Platzhalter (auch mit Bildern) ausfüllen und eine PDF-Datei erstellen.

ODT-Dateien mit Platzhaltern zu PDF


Ich konnte Platzhalterwerte in einer .docx-Datei über eine Bibliothek auf github namens phpdocx (https://github.com/djpate/phpdocx) ersetzen (nicht die, auf die an anderer Stelle verwiesen wird).

Ich habe dann erfolgreich eine portable Version von libreoffice auf dem Webserver meines Hosts installiert, die ich mit PHP anrufe, um eine Befehlszeilenkonvertierung von .docx usw. nach pdf durchzuführen. im laufenden Betrieb Ich habe keine Administratorrechte auf dem Webserver meines Hosts. Hier ist mein Blogbeitrag 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 teilweise Ihre Frage. Ich hoffe es ist hilfreich.


Ich werde diese neue Antwort hinzufügen, da die FDF-PHP-Erweiterung jetzt tot ist.

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

Ich bin mir ziemlich bewusst, dass es weit davon entfernt ist, eine echte PHP-Lösung zu sein, aber es ist zuverlässig und ziemlich einfach auf jeder * nix-Plattform zu implementieren.

Die dort beschriebenen Tools sind auch auf Debian verfügbar, nur für den Fall, dass Sie sich fragen.


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

Zuerst die Antwort für ein paar Ihrer Frage.

Q - übersehe ich etwas?

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

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

A - Ja. Absolut wichtig ist dies mit einem PDF-Formular

Für beide Antworten können Sie Justin Koivisto füllen PDF-Formular Feld PHP-Bibliothek. Für weitere Details gehen Sie bitte zu http://koivi.com/fill-pdf-form-fields/tutorial.php . Sehen Sie sich dort nach weiteren Informationen um.

Dank an Justin Koivisto für seine Arbeit

PS

Zur Behebung des Problems, eine Tabelle wie die Ausgabe aus dem PDF-Formular anzuzeigen, lesen Sie bitte das Oracle Business Intelligence Publisher-Benutzerhandbuch - Erstellen einer PDF-Vorlage


PDFlib ist nett, und Ihr geteilter Host könnte es bereits haben. Ich konnte mit PDFlib Dinge wie diese http://www.housejockey.com/flyers/12/80/MyListing.pdf ziemlich einfach erreichen, aber die grundlegende Technik ist der Drop-In-Absatztext ... den du gesagt hast nicht gut.

Ich habe auch mit abcPDF für ASP / ASP.NET gearbeitet und festgestellt, dass es ziemlich gut ist, um in PDFs zu stochern, aber auch nicht dafür gedacht, innerhalb existierender Textbereiche herumzugrabeln.

Die Arbeit mit robusten Vorlagen und Platzhaltern ist ein Komplexitätssprung über Drop-In-Inhalten. Ein Reflow eines bestehenden Textes in einer PDF ist in der Regel nicht möglich. Es erfordert eine zusätzliche Dokumentenstruktur, was teure Softwarepakete für variable Daten, wie XMPie und Creo, ermöglichen sollen ...

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


Spät, aber Sie können OpenSource Vorlagen-Designer https://github.com/applicius/dhek/releases , um PKassen / Bereiche über alle vorhandenen PDFs zu definieren, diese dann in PHP (als JSON-Format) zu laden und entsprechend auf das Original-PDF zu schreiben mit fpdf lib, um benutzerdefinierte PDF mit dynamischen Daten zu erstellen.


Wenn Sie einen externen Dienst nutzen möchten, könnte PDF Otter Ihr Problem lösen. Es gibt einen kostenlosen Plan, für den Sie sich anmelden und sofort in Ihre Anwendung integrieren können.

Zusätzliche Vorteile bei der Verwendung von PDF Otter umfassen weniger Abhängigkeiten in Ihrer Anwendung und eine freundlichere Erfahrung beim Auswählen der Felder, die Sie ausfüllen müssen (Ich habe manuelle Trial-and-Error verwendet, um die Positionen von Feldern in der Vergangenheit zu erhalten, und es war zeitaufwendig ).





odt