Соблюдайте MediaBox/CropBox в PDF при использовании Ghostscript для преобразования PDF в PNG

Я использовал Ghostscript для преобразования моих графиков с одной фигурой, отображаемых в формате PDF, в PNG:

gswin32c -sDEVICE=png16m -r300x300 -sOutputFile=junk.png ^
         -dBATCH -dNOPAUSE Figure_001-a.pdf

Это работает в том смысле, что я получаю PNG, и он содержит сюжет.

Но он также содержит огромное количество пробелов (пример исходного изображения: http://cdsweb.cern.ch/record/1258681/files/Figure_001-a.pdf).

Если вы просмотрите его в Acrobat, вы заметите, что вокруг графика нет пустого пространства. Если вы используете приведенную выше командную строку, вы обнаружите, что график занимает всего около 1/3 пространства.

Делая то же самое с файлом EPS, я сталкиваюсь с той же проблемой. Однако есть параметр командной строки -dEPSCrop, который можно передать, чтобы механизм рендеринга PS обратил внимание на BoundingBox.

Мне нужен аналогичный аргумент для рендеринга PDF-файлов. Я не смог найти его в документах (и даже -dEPSCrop на самом деле).


person user319080    schedule 17.04.2010    source источник
comment
Спасибо! Насколько я могу судить, здесь используется обходной метод записи в формате jpeg или аналогичного, сканирования полей и последующего повторного запуска с установленными полями. Информация об обрезке, которую я хочу использовать, уже находится в самом PDF-файле (черт возьми, Acrobat автоматически определяет ее). Я не могу не задаться вопросом, могу ли я сделать что-нибудь сумасшедшее, например, преобразовать PDF в PS, а затем извлечь оттуда ограничивающую рамку. :-)   -  person user319080    schedule 18.04.2010


Ответы (3)


У меня была точно такая же проблема. Я исправил это, добавив переключатель -dUseArtBox.

Пример:

 /usr/bin/gs -dUseArtBox -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=output.png input.pdf

Примечание. Переключатель -dUseArtBox поддерживается начиная с версии ghostscript 9.07.

-dUseArtBox Sets the page size to the ArtBox rather than the MediaBox. The art box defines the extent of the page's meaningful content (including potential white space) as intended by the page's creator. The art box is likely to be the smallest box. It can be useful when one wants to crop the page as much as possible without losing the content.

person sanchez    schedule 04.01.2014

Существуют различные параметры для управления тем, какой «размер носителя» Ghostscript отображает данный ввод:

-dPDFFitPage
-dUseTrimBox
-dUseCropBox

С PDFFitPage Ghostscript будет отображать текущий размер страницы на устройстве (обычно размер страницы по умолчанию). С UseTrimBox он будет использовать TrimBox (и в то же время установит PageSize на это значение). С UseCropBox он будет использовать CropBox (и в то же время установит PageSize на это значение). По умолчанию (без указания параметра) Ghostscript будет отображать с использованием MediaBox.

Для вашего примера похоже, что добавление "-dUseCropBox" сделает работу, которую вы ожидаете.

Обратите внимание, что вы можете дополнительно контролировать общий размер вашего вывода, используя "-sPAPERSIZE" (выберите среди всех предопределенных значений, которые знает Ghostscript) или (для большей гибкости) используйте "-dDEVICEWIDTHPOINTS=NNN -dDEVICEHEIGHTPOINTS=NNN".

person Community    schedule 05.06.2010

Пробовали ли вы использовать pdfcrop с помощью pdftex (поставляется с texlive, например) или (еще не пробовал) скрипт Python pdfcrop?

У меня есть аналогичный рабочий процесс с использованием первого упомянутого инструмента.

person topskip    schedule 17.04.2010