2013-02-25 1 views
8

Я пытался работать с pdftk для проверки информации из сжатых потоков PDF, созданных Nitro Reader, но pdftk не будет дефлировать потоки. Он не производит ошибок, но, похоже, ничего не делает, кроме переупорядочения PDF-объектов. Here - это минимальный пример одного из этих pdf-файлов.pdftk не будет распаковывать потоки данных

pdftk test.pdf output test-d.pdf uncompress 

Когда я пытаюсь использовать pdftk для других PDF-файлов, это работает нормально. Если я вручную извлечу потоки данных и распакую их с помощью zlib в Python, они будут распаковываться правильно. Кроме того, если я открою PDF-документ в Adobe Reader и перезаряжаю, pdftk отлично работает с полученным pdf-файлом.

Я вручную изучил PDF-файл Nitro, и, похоже, это действительный pdf-файл. Я очень смущен тем, что здесь происходит.

В качестве фона для проблемы у меня есть сотни этих PDF-файлов, и я пытаюсь найти определенные ключевые слова, которые я должен был бы сделать, если бы я мог автоматизировать декомпрессию.

Pdftk версия 1,45
Windows 7 Home Premium SP1
Nitro Reader 2 версии 2.5.0.36

Спасибо, Джеймс

ответ

2

Я получил ответ на этот вопрос от разработчика. Это оказалось ошибкой на пути pdftk обработал линию /DecodeParms [null].

Если параметры декодирования равны нулю, писатель может просто опустить строку /DecodeParms, но совместимый читатель должен понимать это в любом случае. Я опробовал новую версию pdftk, и проблема, похоже, решена.

6

Если вы не привязаны к pdftk, вы можете использовать qpdf. Например, вы можете использовать:

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

Для чего это стоит, если есть сгустки, они все равно могут появиться в двоичном виде. Хотя, остальная часть потока будет несжатой (либо с pdftk, либо с qpdf). qpdf позволяет распаковать все или только потоки.

Из qpdf инструкции:

При указании --stream-данных = распаковывать, qpdf попытается удалить без сжатия с потерями фильтров, которые он поддерживает. Это включает в себя /FlateDecode,/LZWDecode,/ASCII85Decode и/ASCIIHexDecode. Этот может быть очень полезен для проверки содержимого различных потоков.

То же самое может случиться с pdftk.

Смежные вопросы