Gibt es eine Möglichkeit FPDF / FPDI oder Zend_Pdf unterstützt das Parsen von PDF-Dateien größer als 1,4 zu machen?

StackOverflow https://stackoverflow.com/questions/660425

Frage

Ich versuche, eine vorhandene PDF (erstellt auf andere Weise) in einer PDF mit FPDF mit FPDI erstellt hinzuzufügen. Es scheint für die meisten PDF-Dateien finden zu arbeiten, aber ich erhalte den folgenden Fehler:

FPDF error: Unable to find xref table.

Nach einigen Tests, habe ich herausgefunden, dass, wenn ich eine PDF-Version 1.4 verwenden oder niedriger (Acrobat v5 oder niedriger) scheint es zu funktionieren. Mit Blick auf die Datei scheint es wegen eines anderen PDF-Format zu sein.

Gibt es eine Arbeit um oder Lösung für dieses? Ich habe wahrscheinlich 10 000+ PDFs hochgeladen von Nutzern, einige der neuen Arbeits, einige von ihnen nicht. Es ist auch ärgerlich, dass FPDI nur stirbt, anstatt irgendeine Art von Fehler verursacht oder sogar Rückkehr false

Die einzige Lösung, die ich jetzt denken kann, ist die erste Zeile der PDF-Datei zu analysieren, um die Version zu bestimmen, und nur diejenigen hinzu, dass über Versionen, die funktionieren werden.

Edit:

Ich habe auch versucht, dies in Zend_Pdf und hatte folgendes Ergebnis, die Demo-Datei, die mit dem Zend Framework kommt:

Fatal error: Uncaught exception 'Zend_Pdf_Exception' with message 'Cross-reference streams are not supported yet.' in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php:331
Stack trace:
#0 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php(455): Zend_Pdf_Parser->_loadXRefTable('116')
#1 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(297): Zend_Pdf_Parser->__construct('/Volumes/Docume...', Object(Zend_Pdf_ElementFactory_Proxy), true)
#2 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(250): Zend_Pdf->__construct('/Volumes/Docume...', NULL, true)
#3 /Volumes/Documents/temp/ZendFramework-1.7.7/demos/Zend/Pdf/demo.php(37): Zend_Pdf::load('/Volumes/Docume...')
#4 {main}
  thrown in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php on line 331

Ist es nicht möglich, PDF-Dateien zu analysieren mehr als 1.4?

War es hilfreich?

Lösung 4

Ich fand, dass mit Handelsversion FPDI PDF-Parser mein Problem gelöst. Ich habe nun ein Jahr lang mit und haben keine PDFs hatte es analysieren couln't (es sei denn, die PDF beschädigt war oder hatte etwas anderes seltsam los).

Andere Tipps

Sie können FPDI verwenden mit TCPDF, generiert es und lesen (mit FPDI) Version 1.7 PDFs.

Siehe TCPDF -. PHP-Klasse für PDF


Bearbeiten

Ich habe vor kurzem mit der Frage der Verwendung verschiedener Versionen und Formate PDF mit FPDI und TCPDF in Frage gestellt, und ich kann die PDF-Versionen bestätigen über 1,4 sind der Hit, ist die interessante Sache, dass ich eine Menge Arbeit 1.7 haben PDF-Dateien und arbeitet etwa 50/50 auf 1,5 und 1,6.

arbeitete ich, um das Problem von allen nicht-bearbeitbaren PDF-Dateien konvertieren mit Ghostscript v1.4, die Sie von der Kommandozeile exec können. Verwenden Sie ps2pdf14 vom Ghost lib Ordner.

Ich habe gerade ein paar Projekte ( TCPDI / tcpdi_parser , bezogen auf FPDI und tcpdf_parser, jeweils), die mit TCPDF arbeitet 6 (und FPDF_TPL) zu PDFs oben v1.4 importieren (getestet bis zu 1,6 so weit, aber ich werde sicherstellen, dass es mit 1.7 funktioniert, wenn ich einen 1,7 PFD testen sie es mit!), ohne irgendwelche kommerziellen Addons finden. Basisinstallation und Gebrauchsanweisungen können in der TCPDI README gefunden werden; Sie fühlen sich frei, um es auszuprobieren und berichten Sie jegliche Probleme über den Github-Tracker.

Setasign bietet einen PDF-Parser als kommerziellen Add-on FPDI. Wir hatten keine Probleme PDF-Dateien bis zur Version 1.7 so weit mit dem neuen Parser verarbeiten.

für symfony, habe ich diese lib> 1.4 zu konvertieren https://packagist.org/packages/xthiago/pdf-version-converter

Wenn Sie Acrobat PDF-Writer haben, können Sie die Auftragseinstellungen manipulieren, um die PDF-Datei machen Sie drucken / savingAs zu PDF 1.4 kompatibel ist. Für den kleinen Grund, warum ich dieses Produkt benötigen, ist es nicht wert scheint die 100 Euro die kommerzielle Version zu erhalten, die auf Versionen größer als 1,4 kompatibel ist.

mein Team hatte einen Teil des Codes entfernt. wir hielten den Code aus Hinzufügen von Wasserzeichen in die pdf. dies löste das Problem für uns. PDF> = 1.5

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top