2010-09-02 9 views
13

Il mio gruppo ha utilizzato la libreria itext-sharp e C# /. NET per generare PDF dinamici personalizzati. Per la maggior parte, questo processo funziona alla grande per i nostri bisogni. L'unico problema che possiamo incontrare durante lo sviluppo/test è rappresentato dai problemi di layout che possono causare l'apertura/il rendering del PDF in Adobe Reader, esp. le versioni più recenti di Acrobat/Reader.Come si può trovare un problema con un PDF generato a livello di programmazione?

Il documento aprirà correttamente il display per le prime X pagine. Ma se c'è un errore, le pagine rimanenti nel documento non verranno visualizzate.

Come accennato, di solito siamo in grado di rintracciare questo problema in un problema di tipo layout con il nostro codice C#/iText. Alla fine troviamo l'errore usando il metodo guess e check o dividiamo e conquistiamo. Funziona, ma non sembra il modo migliore per risolvere questi problemi.

Mi chiedevo se ci sono strumenti disponibili che potrebbero accelerare il processo di convalida di un documento PDF e potrebbero aiutare a segnalare errori nel documento?

risposta

13

La convalida dei file PDF può essere un compito piuttosto complicato, soprattutto perché gli strumenti necessari per farlo correttamente sono molto costosi.

Acrobat dispone di uno strumento (Avanzate> Verifica preliminare> Analisi PDF> Segnala problemi di sintassi PDF) che consente di eseguire la scansione di un PDF per eventuali problemi di sintassi, ma non è possibile accedere a tale strumento a livello di programmazione.

Appligent ha uno strumento chiamato pdfHarmmony, che è alimentato dalla Libreria PDF di Adobe, ed è accessibile a livello di programmazione, ma è molto costoso (US $ 2500 +). Questa opzione ti darebbe i migliori risultati se ti puoi permettere.

C'è un'altra opzione che è 3-Heights PDF Analysis & Repair, non so come sia la qualità, ma è altrettanto costosa.

Questo PDF Validator tool su SourceForge potrebbe interessarti, tuttavia, analizza solo la struttura dei documenti e non il contenuto stesso, pertanto le immagini o i flussi di contenuti corrotti non verranno rilevati.

Purtroppo, a causa della difficoltà di analizzare i file PDF in dettaglio, non ci sono davvero tutti strumenti gratuiti che possono fare in modo corretto, ma suppongo uno strumento che controlla la struttura dei documenti è meglio di niente.

17

Il modo "più economico" (e allo stesso tempo abbastanza affidabile!) È utilizzare Ghostscript. Lascia che Ghostscript interpreti il ​​PDF e veda quale valore restituisce. Se non ha problemi, il file PDF dovrebbe essere OK. Su Windows:

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

Il dispositivo nullpage uscita non creerà alcun nuovo file. Ma Ghostscript dirà su stdout/stderr se incontra un errore. Verificare il contenuto della variabile di ambiente pseudo %errorlevel%. - Su Linux:

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

(. Controllare il valore di ritorno con echo $? per un valore 0 per "nessun problema")

In caso di errori, Ghostscript emette alcune informazioni che può essere utile a voi. In ogni caso, almeno puoi identificare positivamente quei file che hanno problemi NO: se Ghostscript li può processare, Acrobat (Reader) non avrà problemi a renderli anche loro.

+0

Molto utile, grazie! Una nota, però: su ghostscript v9.18 su Darwin (OS X), questo comando esce comunque '0' in caso di errore di analisi, ma solo per alcuni PDF, quindi ora mi baso sul codice di uscita e sull'output di stderr per capire se non è stato analizzato. – piersadrian

Problemi correlati