2013-02-25 13 views
8

Ho cercato di lavorare con pdftk per ispezionare le informazioni dai flussi PDF compressi creati da Nitro Reader, ma pdftk non sgonfierà i flussi. Non produce errori, ma non sembra fare nulla oltre a riordinare gli oggetti pdf. Here è un esempio minimo di uno di questi pdf.pdftk non decomprime i flussi di dati

pdftk test.pdf output test-d.pdf uncompress 

Quando provo pdftk su altri pdf, sembra funzionare correttamente. Se estraggo manualmente i flussi di dati e li decomprimo usando zlib in Python, si decomprimono correttamente. Inoltre, se apro il pdf in Adobe Reader e ri-salva, pdftk funziona bene sul pdf risultante.

Ho ispezionato manualmente il pdf Nitro al meglio delle mie possibilità e sembra essere un pdf valido. Sono molto confuso su cosa sta succedendo qui.

Come sfondo del problema, ho centinaia di questi pdf e sto cercando la ricerca di determinate parole chiave, che dovrei essere in grado di fare se posso automatizzare la decompressione.

pdftk versione 1.45
Windows 7 Home Premium SP1
Nitro Reader 2 versione 2.5.0.36

Grazie, James

risposta

2

Ho ricevuto una risposta a questa domanda dallo sviluppatore. Si è rivelato un bug nel modo in cui pdftk ha gestito una riga /DecodeParms [null].

Se i parametri di decodifica sono nulli, uno scrittore potrebbe semplicemente omettere la riga /DecodeParms, ma un lettore compatibile dovrebbe capirlo in ogni caso. Ho provato la nuova versione di pdftk e il problema sembra essere risolto.

6

Se non sei attaccato a pdftk, è possibile utilizzare qpdf. Per esempio, è possibile utilizzare:

$ qpdf --stream-data=uncompress input.pdf output.pdf 

Per quello che vale, se ci sono macchie, che ancora potrebbe essere visualizzato come binario. Sebbene, il resto dello stream non sia compresso (con pdftk o qpdf). qpdf consente di decomprimere tutti o solo i flussi.

Da qpdf manuale:

Quando viene specificato --stream-data = decomprimere, QPDF tenterà di rimuovere eventuali filtri senza perdita che supporta. Ciò include /FlateDecode,/LZWDecode,/ASCII85Decode e/ASCIIHexDecode. Questo può essere molto utile per ispezionare il contenuto di vari flussi.

Lo stesso potrebbe accadere con pdftk.

Problemi correlati