Обработка PDF-файлов для уменьшения размера и / или сложности файлов

У меня есть PDF-файлы, мне нужно подготовить для просмотра на мобильных устройствах. В худшем случае будет ~50 страниц, с большим количеством полноцветных изображений и векторного искусства, размер файла прибл. 40МБ. Это приемлемо для просмотра ПК на широкополосном, но не отлично подходит для мобильного просмотра из-за длительного времени загрузки и очень медленной прокрутки на мобильном телефоне (по крайней мере, на моем разогнанном дроиде). Есть ли какие-либо инструменты или библиотеки для обработки файлов для простого векторного материала, downsample/recompress изображений, такого рода вещь?

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

5 ответов


есть несколько основных вещей, которые могут взорвать размер PDF на мобильных устройствах:

  • изображения с высоким разрешением (где достаточно lo-res)
  • встроенные шрифты (где контент по-прежнему будет читаться "достаточно хорошо" без них)
  • содержимое PDF больше не требуется для текущей версии / просмотра (более старая версия некоторых объектов)
  • встроенные профили ICC
  • встроенные сторонние файлы (используя PDF-файлы контейнер)
  • встроенные билеты на работу (для печати)
  • встроенный Javascript
  • и

программное обеспечение FOSS: Ghostscript может попытаться уменьшить размер ваших PDF-файлов, mainy быть повторной выборкой используемых изображений и удалением старых версий ("поколений") объектов PDF, которые были заменены новыми:

gswin32c.exe ^
  -o sized-down.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/ebook ^
  -dEmbedAllFonts=false ^
  -c ".setpdfwrite <</AlwaysEmbed [ ]>>" ^
  -f blown-up.pdf

Вы можете добавить больше параметров выше командной строки, чтобы уменьшить некоторые PDF-файлы еще больше f.e. путем устанавливать более низкое максимальное разрешение, etc.) Вот пример применения понижающей выборки для цветных и полутоновых изображений в 72dpi:

gswin32c.exe ^
  -o sized-down.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/ebook ^
  -dEmbedAllFonts=false ^
  -dColorImageDownsampleThreshold=1.0 ^
  -dColorImageDownsampleType=/Average ^
  -dColorImageResolution=72 ^
  -dGrayImageDownsampleThreshold=1.0 ^
  -dGrayImageDownsampleType=/Average ^
  -dGrayImageResolution=72 ^
  -c ".setpdfwrite <</AlwaysEmbed [ ]>>" ^
  -f blown-up.pdf

Commercial + программное обеспечение с закрытым исходным кодом: callas pdfToolbox4 может уменьшить размеры файлов еще больше, применяя пользовательский профиль к процессу сокращения PDF (он может даже не вставлять шрифты и профили ICC).


обновление 2: см. Также следующий (новый) вопрос с ответ:

Он предоставляет пример кода PostScript, который полностью удаляет все (растровые) изображения из PDF, оставляя остальную часть макета страницы без изменений. Это полезно в тех случаях, когда вам не нужны (растровые) изображения, а только текстовые части, чтобы уменьшить размер файла.


Adobe Acrobat Professional имеет два встроенных инструмента для оптимизации PDF-файлов:

"оптимизатор PDF" -http://www.adobe.com/designcenter/acrobat/articles/acr7optimize.html, что упростит векторы и удалит ненужный контент (среди прочего)

и

"оптимизация отсканированного PDF" -http://help.adobe.com/en_US/Acrobat/9.0/Standard/WS58a04a822e3e50102bd615109794195ff-7f71.w.html#WS0BEFAC0B-47D9-47b8-9AF8-4DE2FE9C9736.w, который будет downsample и сжатие встроенных растровых изображений.

оба являются лучшими инструментами для того, что они делают, которые я использовал. Однако в центре внимания большинства инструментов оптимизации PDF является уменьшение размера файла, а не повышение скорости рендеринга.

Если вы хотите существенно повысить производительность системы на вашем устройстве, вы должны рассмотреть возможность предварительного рендеринга PDF-файлов в растровые изображения. Если вы немного масштабируете их перед растеризацией (чтобы обеспечить масштабирование на устройстве) и придерживаетесь индексированной цветовой схемы, вы должен иметь возможность создавать растры для каждой страницы с приемлемым размером и разрешением файла. Они будут рисовать гораздо быстрее на устройстве, чем векторное содержимое.


в Acrobat есть опции для уменьшения размера изображения и улучшения размера/скорости файлов PDF. Вы смотрели этот вариант?


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

некоторые опции для преобразователей входят:

  • электронная почта либо ссылку на PDF, или фактический PDF в pdf2html@adobe.com. Вы получите обратно HTML-версию PDF. Больше информации о сайт Adobe
  • использовать автономное программное обеспечение, такое как pdf995 или pdf2html
  • используйте коммерческий плагин Adobe Acrobat, например LD-конвертер

Я уверен, что есть еще больше возможностей для выполнения преобразования.

в качестве внешней ставки вы пробовали просматривать PDF-файлы с телефона с помощью google online читатель?


некоторое время назад (несколько лет) я использовал для уменьшения размера PDF-файлов, преобразуя их в djvu (скажем, через http://any2djvu.djvuzone.org/ или локально установленные бесплатные инструменты командной строки). Результаты были очень хорошими (маленькими).

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

или вы можете распространять djvus, но я не уверен, что программное обеспечение для чтения djvu предварительно установлено в ваших ОС.