Existe-t-il un moyen de faire en sorte que FPDF / FPDI ou Zend_Pdf prenne en charge l’analyse de fichiers PDF supérieurs à 1,4?

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

Question

J'essaie d'ajouter un fichier PDF existant (créé autrement) à un fichier PDF créé avec FPDF à l'aide de FPDI. Cela semble fonctionner pour la plupart des PDF, mais le message d'erreur suivant s'affiche:

FPDF error: Unable to find xref table.

Après quelques tests, j’ai compris que si j’utilisais une version PDF de 1.4 ou moins (Acrobat v5 ou moins), cela semblait fonctionner. En regardant le fichier, cela semble être dû à un format PDF différent.

Existe-t-il un moyen de contourner le problème ou une solution à ce problème? J'ai probablement plus de 10 000 PDF téléchargés par les utilisateurs, certains des nouveaux fichiers fonctionnant, d'autres non. Il est également contrariant que FPDI décède au lieu de provoquer une erreur ou même de renvoyer une erreur.

La seule solution à laquelle je puisse penser maintenant est d'analyser la première ligne du fichier PDF pour déterminer la version et d'ajouter uniquement celles qui sont compatibles avec les versions qui fonctionneront.

Modifier:

J'ai aussi essayé ceci dans Zend_Pdf et cela a eu le résultat suivant, en utilisant le fichier de démonstration fourni avec Zend Framework:

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 des PDF supérieurs à 1,4?

Était-ce utile?

La solution 4

J'ai constaté qu'en utilisant la version commerciale de FPDI PDF-Parser résolu mon problème. Je l'utilise depuis un an maintenant et je n'ai aucun fichier PDF à analyser (à moins que le fichier PDF ne soit corrompu ou qu'il ne se passe pas quelque chose de bizarre).

Autres conseils

Vous pouvez utiliser FPDI avec TCPDF. Il générera et lira (avec FPDI) les versions PDF 1.7.

Voir TCPDF - Classe PHP pour PDF .

MODIFIER

J'ai récemment été confronté au problème de l'utilisation de différentes versions et formats de PDF avec FPDI et TCPDF, et je peux confirmer que les versions PDF supérieures à 1.4 sont aléatoires. Ce qui est intéressant, c'est que j'ai beaucoup de travail 1.7 PDF et fonctionne environ 50/50 sur les versions 1.5 et 1.6.

J'ai résolu le problème en convertissant tous les fichiers PDF non exploitables en v1.4 à l'aide de GhostScript que vous pouvez exec depuis la ligne de commande. Utilisez ps2pdf14 à partir du dossier GhostScript lib.

Je viens de publier deux projets ( TCPDI / tcpdi_parser , basé sur FPDI et tcpdf_parser, respectivement) fonctionnant avec TCPDF 6 (et FPDF_TPL) pour importer des fichiers PDF supérieurs à la v1.4 (testés jusqu'à 1,6) jusqu'à présent, mais je vais m'assurer que cela fonctionne avec la version 1.7 une fois que j'ai trouvé un VFI de 1,7 pour le tester avec!) sans nécessiter d'addition commerciale. Des instructions d'installation et d'utilisation de base sont disponibles dans le fichier Lisez-moi TCPDI ; n'hésitez pas à l'essayer et à signaler tout problème via le suivi Github.

Setasign propose un analyseur PDF au format . vers FPDI. À ce jour, nous n’avons eu aucune difficulté à analyser les fichiers PDF jusqu’à la version 1.7 à l’aide du nouvel analyseur.

pour symfony, j'ai utilisé cette librairie 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 rendre le PDF que vous imprimez / enregistrez-le pour qu'il soit compatible avec PDF 1.4. Pour la petite raison pour laquelle j'ai besoin de ce produit, il ne semble pas valoir la peine de débourser 100 euros pour obtenir la version commerciale compatible avec les versions supérieures à 1.4.

mon équipe a supprimé une partie du code. nous avons arrêté le code en ajoutant un filigrane au pdf. cela a résolu le problème pour nous. PDF & Gt; = 1,5

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top