¿Hay alguna manera de hacer que FPDF / FPDI o Zend_Pdf admitan el análisis de archivos PDF superiores a 1.4?

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

Pregunta

Estoy tratando de agregar un PDF existente (creado de otra manera) a un PDF creado con FPDF usando FPDI. Parece funcionar para la mayoría de los archivos PDF, pero aparece el siguiente error:

FPDF error: Unable to find xref table.

Después de algunas pruebas, descubrí que si uso una versión PDF de 1.4 o inferior (Acrobat v5 o inferior) parece funcionar. Mirando el archivo parece ser debido a un formato PDF diferente.

¿Hay alguna solución o solución para esto? Probablemente tengo más de 10 000 archivos PDF cargados por los usuarios, algunos de los nuevos funcionan, otros no. También es molesto que FPDI simplemente muera en lugar de causar algún tipo de error o incluso devolver falso

La única solución que se me ocurre en este momento es analizar la primera línea del archivo PDF para determinar la versión y solo agregar las que sobre las versiones que funcionarán.

Edición :

También probé esto en Zend_Pdf y tuvo el siguiente resultado, usando el archivo de demostración que viene con 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

¿Es imposible analizar archivos PDF superiores a 1.4?

¿Fue útil?

Solución 4

Descubrí que usando la versión comercial de FPDI PDF-Parser resolvió mi problema. Lo he estado usando durante un año y no he tenido ningún PDF que no pueda analizar (a menos que el PDF esté dañado o haya sucedido algo extraño).

Otros consejos

Puede usar FPDI con TCPDF, generará y leerá (con FPDI) PDF de la versión 1.7.

Ver TCPDF - Clase PHP para PDF .


EDIT

Recientemente he tenido el problema de usar varias versiones y formatos de PDF con FPDI y TCPDF, y puedo confirmar que las versiones de PDF anteriores a 1.4 son impredecibles, lo interesante es que tengo mucho trabajo 1.7 PDF, y funciona aproximadamente 50/50 en 1.5 y 1.6.

Trabajé el problema convirtiendo todos los archivos PDF no viables a v1.4 usando GhostScript, que puede exec desde la línea de comandos. Use ps2pdf14 de la carpeta GhostScript lib.

Acabo de lanzar un par de proyectos ( TCPDI / tcpdi_parser , basado en FPDI y tcpdf_parser, respectivamente) que funcionan con TCPDF 6 (y FPDF_TPL) para importar archivos PDF por encima de v1.4 (probado hasta 1.6 hasta ahora, ¡pero me aseguraré de que funcione con 1.7 una vez que encuentre un PFD 1.7 para probarlo!) sin requerir ningún complemento comercial. Las instrucciones básicas de instalación y uso se pueden encontrar en TCPDI README ; no dude en probarlo e informar cualquier problema a través del rastreador de Github.

Setasign ofrece un analizador de PDF como complemento comercial a FPDI. Hasta ahora no tuvimos problemas para analizar archivos PDF hasta la versión 1.7 con el nuevo analizador.

para Symfony, utilicé esta lib para convertir > 1.4 https://packagist.org/packages/xthiago/pdf-version-converter

Si tiene Acrobat PDFwriter, puede manipular la configuración del trabajo para hacer que el PDF que está imprimiendo / guardando sea compatible con PDF 1.4. Por la pequeña razón por la que necesito este producto, no parece que valga la pena pagar los 100 euros para obtener la versión comercial que sea compatible con versiones superiores a la 1.4.

mi equipo había eliminado parte del código. detuvimos el código de agregar marca de agua al pdf. Esto resolvió el problema para nosotros. PDF & Gt; = 1.5

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top