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

Использование ImageMagick или Ghostscript (или что-то еще) для масштабирования PDF в соответствии с страницей?

Я бил головой об этом безрезультатно.

Мне нужно сжать несколько больших PDF файлов для печати на странице 8.5x11 дюймов (стандартная буква). Может ли ImageMagick/Ghostscript обрабатывать подобные вещи, или у меня так много проблем, потому что я использую неправильный инструмент для работы?

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

4b9b3361

Ответ 1

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

Multivalent сохранит векторную информацию в формате PDF. Попробуйте:

java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf

для создания выходного файла myFile-up.pdf

Ответ 2

Я бы не использовал convert. Он использует Ghostscript в фоновом режиме, но намного медленнее. Я бы использовал Ghostscript напрямую, так как он дает мне гораздо более прямой контроль (а также некоторый контроль над настройками, которые гораздо труднее достичь с помощью convert). А для конвертации в PDF-to-PDF-конвертацию вы все равно будете иметь Ghostscript:

  gs \
    -o /path/to/resized.pdf \
    -sDEVICE=pdfwrite \
    -dPDFFitPage \
    -r300x300 \
    -g2550x3300 \
    /path/to/original.pdf

Ответ 3

ImageMagick mogrify/convert commands действительно выполнит эту работу. Стивен Пэйдж имел правильную идею, но вам также нужно установить формат dpi, иначе вы не выполнили эту работу.

Предполагая, что у вас есть файл с разрешением 300 dpi и уже такое же соотношение сторон, как 8.5 x 11, команда:

// 300dpi x 8.5 -2550, 300dpi x 11 -3300
convert original.pdf -density "300" -resize "2550x3300" resized.pdf

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

Ответ 4

Подход Ghostscript хорошо работал у меня. (Я переместил файл с моего ПК с ОС Windows на компьютер под управлением Linux и запустил его там.) Я сделал небольшое изменение в команде Ghostscript, потому что команда изменения размера Ghostscript выше полностью заполняет страницу размером 8.5 на 11 дюймов. Однако мой принтер не может печатать на краю, поэтому несколько миллиметров вдоль каждого края страницы были потеряны. Чтобы преодолеть эту проблему, я масштабировал свой PDF-документ до 0,92 от всего 8,5 на 11 дюймов. Таким образом, я увидел, что все сосредоточено на странице и имеет небольшой запас. Поскольку 0.92 * (2550x3300) = (2346x3036), я выполнил следующую команду Ghostscript:

  gs -sDEVICE=pdfwrite \
     -dPDFFitPage \
     -r300x300 \
     -g2346x3036 \
     /home/user/path/original.pdf \
     -o /home/user/path/resized.pdf