PDF mit FPDM (PHP) ausfüllen - Wo liegt der Dateipfad für PDFtk Server-Dateien?
Moin,
ich möchte gerne eine PDF-Datei mit der PHP-Bibliothek FPDM ausfüllen. Allerdings bekomme ich dabei immer folgende Fehlermeldung ausgespuckt:
FPDF-Merge Error: Number of objects ( X) differs with number of xrefs ( X+1), something , pdf xref table is corrupted :(
Da man zu derartigen Problemen im Netz bei FPDM leider nur wenige nützliche Antworten findet habe ich mich an einer möglichen Lösung (hier) bei Stackoverflow festgebissen. Als Antwort wird dort eine Lösung mit PDFtk Server vorgeschlagen: "Then type the following command in cmd as: pdftk EmpDetails.pdf output fixed.pdf and issue will be fixed."
Das hilft mir leider nur so semistark weiter. Wo muss ich denn eine PDF-Datei als Ausgangsdatei ablegen und wo wird die neue generiert? Was genau passiert durch die Ausführung dieses Befehls? Und ist das ganze zielführend für mein ursprüngliches Problem?
LG
1 Antwort
Grundsätzlich solltest du dich fragen, ob du lieber eine andere Library verwenden solltest. Für mich wäre es schon Ausschlusskriterium, wenn ich zu einer Fehlermeldung nicht wirklich etwas finde.
Ich habe die letzte Woche mit FPDF gearbeitet und kann das bisher gut empfehlen.
Nachteil daran, mit der Trial-Version kannst du nur PDF mit Version <=1.4 als Source verwenden. Hier hilft dir aber Ghostscript weiter, damit lässt sich eine PDF leicht konvertieren.
Mit deinem eigentlichen Problem kann ich dir leider nicht helfen, aber vielleicht entscheidest du dich ja auch für eine andere Bibliothek.
Grüße
Wenn ich dich richtig verstehe ist das Möglich.
Ich nutze das ganze in einem Plugin für ein CRM-System.
- Kunde lädt Pdf-Vorlage X auf den Server
- Kunde legt Plugin an, wählt PDF aus
- Kunde legt fest, welche Felder geschrieben werden sollen
- Kunde legt die Position fest, wo die Felder geschrieben werden sollen
$pdf = new \FPDI();
$pdf->setSourceFile($pathToYourFile)
$tplIdx = $pdf->importPage(1);
$pdf->addPage();
$pdf->useTemplate($tplIdx);
Unter $pdf hast du nun deine PDF Vorlage liegen und kannst dort beliebig viele Felder einfügen.
Ich mache in dem Plugin noch ein bisschen Special-Kram, aber der ist ja hierfür nicht wichtig.
$pdf->Output($destination, $filename, isUTF8)
Hierüber kannst du die PDF dann speichern, Downloaden, anzeigen oder was auch immer :)
Wie in der Antwort schon erwähnt kannst du mit der Free-Version nur PDF-Versionen <= 1.4 laden. Entweder konvertierst du die Datei also selber, vorausgesetzt nur du kannst die Vorlage setzten. In meinem Fall kann der Redakteur die Vorlage setzten, daher konvertiere ich sie mit Ghostscript zur Laufzeit. Von Version X auf 1.4
@richardgerdes meld dich gerne nochmal wenn es geklappt hat, bzw du fragen hast :)
Hey, danke für deine Antwort!
Ist FPDF nicht eigentlich nur für die Neugenerierung von PDFs nutzbar? Also wenn man vorher kein Template hat, was man ausfüllen möchte, sondern eine komplett neue Datei erstellen lassen möchte? Oder liege ich da falsch? Hatte zwischenzeitlich auch schon überlegt, ob es nicht eventuell möglich wäre, eine Datei mit FPDF alleine zu erstellen und diese dann über die vorhandene rüberzulegen und dafür die Textfelder so zu generieren, dass die über den eigentlich auszufüllenden Feldern liegen... Wäre zwar nicht wirklich elegant, aber weißt zu zufällig, ob so etwas realisierbar wäre?
LG