Сценарии оболочки: изменить ширину страницы PDF?

312
kdb

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

Есть ли инструмент командной строки, который может назначить всем страницам одинаковую ширину?

Так как сканирование большое и уже сильно сжатое, фактические растровые изображения должны оставаться неизменными, и текст OCR, если таковой имеется, должен быть сохранен в процессе.

Например:

  • До.
    • Размер страницы 15x10 см
    • Размер дисплея 15х10 см
    • Размер пикселя изображения 1500x1000
  • После.
    • Размер страницы 30x20 см
    • Размер дисплея 30х20 см
    • Размер пикселя изображения 1500x1000, неизменный поток двоичных данных.

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

1

1 ответ на вопрос

1
harrymc

Вы можете попробовать Ghostscript :

gs -sOutputFile=output.pdf -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -dPDFFitPage -f input.pdf 

Измените a4на любой размер, который лучше соответствует вашим потребностям.

См. Выбор формата бумаги в документации.

Вы должны быть в состоянии установить GhostScript (gs) через программу Cygwin setup.exe.

Это действительно работает! За исключением странного углового случая, страницы с горизонтальными пропорциями автоматически поворачиваются на 90 ° против часовой стрелки. Знаете ли вы, есть ли способ сохранить ориентацию? kdb 5 лет назад 0

Похожие вопросы