[Обновлено 2014-10-15]
Использование Ghostscript
Ghostscript имеет небольшую служебную программу, написанную на PostScript в своем хранилище исходного кода. Это называется pdfinflt.ps
. Если вам повезет, он может уже дремать в подкаталоге «toolbin» вашего места установки Ghostscript. В противном случае, получите это здесь:
Теперь запустите его вместе с целевым входным PDF-файлом через интерпретатор Ghostscript:
gswin32c.exe -- c:/path/to/pdfinflt.ps your-input.pdf deflated-output.pdf
pdfinflt.ps
будет (пытаться) расширить все «потоки», содержащиеся в PDF, которые используют следующие фильтры / методы сжатия: /FlateDecode
, /LZWDecode
, /ASCII85Decode
, /ASCIIHexDecode
.
Он не будет пытаться удалить /RunLengthDecode
, /CCITTFaxDecode
, /DCTDecode
, /JBIG2Decode
и /JPXDecode
. (Сжатые / двоичные шрифты также будут передаваться без изменений в выходной файл PDF.)
Если вы находитесь в авантюрном настроении, вы можете позволить себе раскомментировать те строки в утилите, которые отключают /RunLengthDecode
, /DCTDecode
и CCITTFaxDecode
, и посмотреть, все ли еще работает ...
Использование qpdf
Еще один полезный инструмент для преобразования PDF во внутренний формат, обеспечивающий доступ к текстовому редактору: qpdf
. Это "программа командной строки, которая выполняет структурные, сохраняющие содержимое преобразования в файлах PDF" .
Пример использования:
qpdf \
--qdf \
--object-streams=disable \
input-with-compressed-objects.pdf \
output-with-expanded-objects.pdf
Вывод QDF
-мод, обеспечиваемый переключателем --qdf
, организует и упорядочивает объекты аккуратно. Он добавляет комментарии для отслеживания исходных идентификаторов объектов и потоков содержимого страницы. Все словари объектов записаны в «нормализованном» стандартном формате для более простого анализа.
--object-streams=disable
вызывает извлечение (иначе не распознаваемые) отдельных объектов, которые сжимаются в данные потока другого объекта.
Использование mutool
Artifex , создатели Ghostscript , предлагают еще один инструмент в рамках лицензии на бесплатное и открытое программное обеспечение: MuPDF
.
MuPDF поставляется с инструментом командной строки mutool
, который также может расширять потоки сжатых объектов PDF:
mutool \
clean \
-d \
-a \
input.pdf \
output.pdf \
4,7,8,9
clean
: перезаписывает PDF;
-d
: распаковывает все потоки;
-a
: ASCIIhex кодирует все двоичные потоки;
4,7,8,9
: выбирает страницы 4, 7, 8 и 9 для включения в output.pdf
.
Использование pdftk
Наконец, вот как использовать инструмент pdtk
для распаковки потоков объектов PDF:
pdftk your-input.pdf cat output uncompressed-output.pdf uncompress
Запишите последнее слово uncompress
в командной строке.
Выберите свой любимый
Все вышеперечисленные инструменты доступны для Linux, Mac OSX, Unix и Windows.
Мой любимый вариант - QPDF
для большинства практических случаев.
Однако вы должны провести свои собственные эксперименты и сравнить (разные) результаты каждого из предложенных инструментов. Затем сделайте свой выбор.