2010-09-02 7 views
13

Mi grupo ha estado utilizando la biblioteca itext-sharp y C# /. NET para generar archivos PDF personalizados y dinámicos. En su mayor parte, este proceso funciona de maravilla para nuestras necesidades. El único problema con el que podemos tropezar durante el desarrollo/prueba es problemas de diseño que pueden hacer que el PDF no se abra/renderice correctamente en Adobe Reader, esp. las versiones más nuevas de Acrobat/Reader.¿Cómo puede encontrar un problema con un PDF generado mediante programación?

El documento abrirá la pantalla correctamente para las primeras X páginas. Pero si hay un error, las páginas restantes en el documento no se mostrarán.

Como se mencionó, generalmente podemos rastrear este problema hasta un problema de diseño con nuestro código C#/iText. Eventualmente encontramos el error usando el método de adivinar y verificar, o dividir y conquistar. Funciona, pero no se siente como la mejor manera de resolver estos problemas.

Me preguntaba si hay alguna herramienta disponible que podría acelerar el proceso de validación de un documento PDF y podría ayudar a señalar errores en el documento.

Respuesta

13

La validación de archivos PDF puede ser una tarea bastante difícil, principalmente porque las herramientas necesarias para hacerlo correctamente son muy costosas.

Acrobat tiene una herramienta (Avanzada> Comprobaciones previas> Análisis de PDF> Informar problemas de sintaxis de PDF) que le permite escanear un PDF en busca de problemas de sintaxis, pero no se puede acceder a esa herramienta mediante programación.

Appligent tiene una herramienta llamada pdfHarmmony, que funciona con la Biblioteca de PDF de Adobe, y se puede acceder mediante programación, pero es muy costosa (US $ 2500 +). Esta opción le daría los mejores resultados si puede pagarla.

Hay otra opción que es 3-Heights PDF Analysis & Repair, no sé cómo es la calidad, pero es similarmente cara.

Este PDF Validator tool en SourceForge puede interesarle, sin embargo, solo analiza la estructura de los documentos y no el contenido en sí, por lo que las imágenes corruptas o las secuencias de contenido no serán recogidas.

Desafortunadamente, debido a la dificultad de analizar archivos PDF en detalle, no hay realmente ninguna herramienta gratuita que pueda hacerlo correctamente, pero supongo que una herramienta que verifique la estructura de los documentos es mejor que nada.

17

La manera "más barata" (y al mismo tiempo bastante confiable) es usar Ghostscript. Deje que Ghostscript interprete el PDF y vea qué valor de retorno le da. Si no tiene ningún problema, el archivo PDF debería estar bien. En Windows:

gswin32c.exe^
     -o nul 
     -sDEVICE=nullpage^
     d:/path/to/file.pdf 

El dispositivo de salida nullpage no creará ningún archivo nuevo. Pero Ghostscript dirá en stdout/stderr si encuentra un error. Compruebe el contenido de la variable de pseudo entorno %errorlevel%. - En Linux:

gs \ 
     -o /dev/null \ 
     -sDEVICE=nullpage \ 
     /path/to/file.pdf 

(. Compruebe el valor de retorno con echo $? por un valor de 0 "no hay problemas")

En caso de errores, Ghostscript emite algo de información que puede ser útil para usted. En cualquier caso, al menos puede identificar positivamente aquellos archivos que tienen NO problemas: si Ghostscript puede procesarlos, Acrobat (Reader) tampoco tendrá problemas para representarlos.

+0

Muy útil, ¡gracias! Una nota, sin embargo: en ghostscript v9.18 en Darwin (OS X), este comando todavía sale '0' en la falla de análisis, pero solo para algunos archivos PDF, por lo que ahora confío tanto en el código de salida como en la salida de stderr para saber si no se pudo analizar. – piersadrian

Cuestiones relacionadas