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

Я использую 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, на самом деле).

Ответы [ 3 ]

8 голосов
/ 04 января 2014

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

Пример:

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

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

ghostscript

-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.

5 голосов
/ 05 июня 2010

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

-dPDFFitPage
-dUseTrimBox
-dUseCropBox

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

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

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

0 голосов
/ 17 апреля 2010

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

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

...