Y a-t-il un moyen de faire en sorte que FPDF/FPDI ou Zend Pdf prennent en charge l'analyse des fichiers PDF supérieure à 1,4?
j'essaie d'ajouter un PDF existant (créé autrement) à un PDF créé avec FPDF en utilisant FPDI. Ça a l'air de trouver pour la plupart des documents Pdf, mais j'obtiens l'erreur suivante:
FPDF error: Unable to find xref table.
après quelques tests, j'ai compris que si j'utilise une version PDF de 1.4 ou moins (Acrobat v5 ou inférieur), cela semble fonctionner. En regardant le fichier, il semble être en raison d'un format PDF différent.
Est-il contourner ou une solution à cela? J'ai probablement téléchargé plus de 10 000 fichiers PDF par les utilisateurs, certaines des nouvelles de travail, certains d'entre eux pas. Il est également ennuyeux que FPDI meurt juste au lieu de causer une sorte d'erreur ou même retourner false
la seule solution à laquelle je peux penser maintenant est de parcourir la première ligne du fichier PDF pour déterminer la version et ajouter seulement ceux qui dépassent les versions qui fonctionneront.
Edit:
j'ai aussi essayé cela dans Zend_Pdf et il a eu le résultat suivant, en utilisant le fichier de démonstration qui vient avec le Zend Cadre:
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
est-il impossible d'analyser les fichiers PDF supérieurs à 1,4?
7 réponses
vous pouvez utiliser FPDI avec TCPDF, il générera et lira (avec FPDI) la version 1.7 PDFs.
Voir TCPDF-PHP class for PDF.
EDIT
j'ai récemment été mis au défi avec la question de l'utilisation de différentes versions et formats de PDF avec FPDI et TCPDF, et je peux confirmer que les versions PDF au-dessus de 1.4 sont frappées et manquées, la chose intéressante est que j'ai beaucoup de travail 1.7 PDFs, et travaille environ 50/50 sur 1.5 et 1.6.
j'ai travaillé autour de la question en convertissant tous les fichiers PDF non réalisables en v1.4 en utilisant GhostScript que vous pouvez exec
à partir de la ligne de commande. Utilisez ps2pdf14
à partir de GhostScript lib
dossier.
je viens de sortir une paire de projets ( TCPDI / tcpdi_parser, Basé sur FPDI et tcpdf_parser, respectivement) qui travaillent avec TCPDF 6 (et FPDF_TPL) pour importer des fichiers PDF au-dessus de v1.4 (testé jusqu'à 1,6 jusqu'à présent, mais je m'assurerai qu'il fonctionne avec 1,7 une fois que j'aurai trouvé un 1,7 PFD pour le tester!) sans exiger d'addons commerciaux. Les instructions d'installation et d'utilisation de base se trouvent dans le TCPDI README; n'hésitez pas à l'essayer et de signaler tout problèmes via le traceur Github.
Setasign propose un analyseur PDF comme un commercial addon pour FPDI. Nous n'avons eu aucun problème à analyser les fichiers PDF jusqu'à la version 1.7 jusqu'à présent en utilisant le nouvel analyseur.
j'ai trouvé que l'utilisation commerciale de la version de FPDI PDF-Parser résolu mon problème. Je l'utilise depuis un an maintenant et n'ai pas eu de PDF qu'il ne pouvait pas analyser (à moins que le PDF était corrompu ou avait quelque chose d'autre bizarre en cours).
pour symfony, j'ai utilisé ce lib pour convertir > 1.4 https://packagist.org/packages/xthiago/pdf-version-converter
si vous avez Acrobat PDF writer, vous pouvez manipuler les paramètres de travail pour faire le PDF que vous imprimez/économingas pour être compatible avec PDF 1.4. Pour la petite raison que j'ai besoin de ce produit, il ne semble pas la peine de 100 euros pour obtenir la version commerciale qui est compatible avec les versions supérieures à 1.4.
mon équipe avait enlevé une partie du code. nous avons empêché le code d'ajouter du filigrane au pdf. cela a résolu le problème pour nous. PDF > = 1,5