2010-04-17 5 views
9

Я использую Ghostscript конвертировать мои одиночные фигуры графики в формате PDF, оказываемых в PNG:Повинуйтесь MediaBox/CropBox в формате PDF при использовании 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).

+0

Спасибо! Насколько я могу судить, это использует метод round-about для записи jpeg или аналогичного, сканирования полей, а затем повторного запуска с установленными полями. Информация об урожае, которую я хочу использовать, уже находится в самом PDF (heck, Acrobat автоматически определяет ее).Я не могу не задаться вопросом, могу ли я сделать что-то безумное, как преобразовать PDF в PS, а затем извлечь из него ограничительную рамку. :-) – user319080

ответ

0

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

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

4

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

-dPDFFitPage
-dUseTrimBox
-dUseCropBox

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

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

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

8

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

Пример:

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

Примечание: -dUseArtBox переключатель поддерживается since ghostscript version 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.