Подтвердить что ты не робот

Замена векторных изображений в PDF растровыми изображениями

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

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

Меня интересуют любые возможные решения, но предпочтительнее использовать Linux или Windows.

4b9b3361

Ответ 1

У меня была аналогичная проблема, и я решил ее использовать с помощью средства преобразования ImageMagics (http://www.imagemagick.org/script/index.php). Это связано с Linux и отлично работает в Windows/Cygwin или OS X

convert -density 300 largeVectorFileFromR.pdf out.pdf

С -density 300 вы управляете разрешением (как DPI).

Даунсайд: текст тоже растеризуется, я понимаю, что Майкл этого не хочет.

Ответ 2

Это немного сложно, но вы спросили о любом возможном решении. Кроме того, это решение не может быть автоматизировано.

1) Откройте pdf с векторными изображениями в Inkscape. Затем выберите все изображение с помощью инструмента select (F1)

2) Если векторное изображение состоит из более чем одного графического изображения svg, нажмите Ctrl + G (Object → Group)

3) вырезаем сгруппированное изображение svg Ctrl + x

4) откройте новое окно InkScape Ctrl + n и вставьте изображение Ctrl + v

5) выберите File → export Bitmap (Shift + Ctrl + e), возможно, вы хотите увеличить dpi

6) вернитесь в первое окно InkScape, File → import (Ctrl + i) и выберите ранее экспортированное растровое изображение

7) поместите растровое изображение в место, где изображение svg было

Сохраните pdf, а векторное изображение будет заменено растровым изображением.

Ответ 3

Обновление Pitstop Pro v2 3 от Enfocus может сделать именно это. У него есть действие под названием "Растрировать содержимое страницы, сохраняя текст", который работает очень хорошо. Это плагин для Adobe Acrobat, поэтому он требует немного больше, но также доступен как серверное решение.

Ответ 4

Вот один из способов решения вашей проблемы:

Шаг 1: используйте онлайн-конвертер PDF-to-HTML, например, здесь:

http://www.idrsolutions.com/online-pdf-to-html5-converter/

Этот инструмент преобразует PDF в набор изображений и текстовый оверлей. В этот момент векторные изображения должны быть преобразованы в растр.

Шаг 2. Преобразование HTML + изображений в PDF:

http://pdfcrowd.com/#convert_by_upload+with_options

В результате PDF будет растеризован все векторные изображения, и весь текст останется текстовым, поэтому вы можете выбрать, скопировать и т.д.

Ответ 5

Я использовал следующее:

gswin32c -o "%2" -dFirstPage=1 -dLastPage=1 -sDEVICE=pngalpha -r72x72 -dUseCropBox -dFitPage "%1" -dBATCH -dNOPAUSE

где %1 - это входной файл, а %2 - вывод. Это можно использовать с LaTeX, сгенерированный PNG имеет такое же отношение и размер страницы, что и исходный PDF, поэтому относительное положение изображения не изменится.

Обратите внимание, что в Linux вам может понадобиться gs, а не gswin32c.

Вы также можете установить диапазон страниц, а затем распечатать страницы в формате PDF. Недостатком является то, что текст также растеризуется.

Ответ 6

Преобразуйте PDF в djvu с помощью https://jwilk.net/software/pdf2djvu. Снимите флажок "antialias fonts, vector.". Это значительно уменьшит размер файла и улучшит время загрузки документа.

Ответ 7

После нескольких дней поиска какого-то решения на основе "Удалить весь текст из файла PDF" и "Как добавить изображение в существующий файл PDF?" Я нашел (уродливое) решение для сценариев:

gs -o /tmp/onlytxt.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERIMAGE $INPUT_FILE && \
gs -o /tmp/graphics.pdf -sDEVICE=pdfwrite -dFILTERTEXT $INPUT_FILE && \
convert -density $DPI -quality 100 /tmp/graphics.pdf /tmp/graphics.png && \
convert -density $DPI -quality 100 /tmp/graphics.png /tmp/graphics.pdf && \
pdftk /tmp/graphics.pdf stamp /tmp/onlytxt.pdf output $OUTPUT_FILE && \
rm /tmp/onlytxt.pdf /tmp/graphics.pdf /tmp/graphics.png

были три переменные INPUT_FILE, OUTPUT_FILE и DPI. Мы разделяем текстовое и графическое содержимое с помощью Ghostscript, преобразуем графическое изображение в растровое изображение (PNG) и присоединяем два, используя pdftk.

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