7

Вопрос по pdf, jpeg, ghostscript – Настройка авто-высоты / ширины для преобразованного JPEG из PDF с помощью GhostScript

Я использую GS для преобразования PDF в JPEG, и я использую следующую команду: gs -sDEVICE=jpeg -dNOPAUSE -dBATCH -g500x300 -dPDFFitPage -sOutputFile=image.jpg image.pdfВ этой команде, как вы можете видеть-g500x300 установить ...

2 ответа

5

Этот пост объясняет, почему ghostscript быстрее -https://serverfault.com/questions/167573/fast-pdf-to-jpg-conversion-on-linux-wantedИ единственный способ исправить это - изменить код imagemagick.

К сожалению, автоматически определенный размер вывода не поддерживается ghostscript. Это в первую очередь потому, что-g Используемая опция фактически определяетdevice размер, который будет содержать обработанный вывод, а не сам выводимый вывод. Этот выходной размер меняется из-за-dPDFFitPage переключатель, который затем пытается соответствовать размеру устройства. И хотя вы можете определить только высоту jpeg «устройства» с помощью-dDEVICEHEIGHT=n, что оставит ширину устройства без изменений по умолчанию.

Хотя это несколько утомительный обходной путь, вы можете использовать ghostscript или imagemagick, чтобы получить ширину и высоту страниц PDF. Чтобы сделать это с помощью ghostscript, смотрите ответ наИспользование GhostScript для получения размера страницы, Затем вы можете рассчитать правильную ширину, чтобы установить флаг -g для сохранения соотношения сторон. Бонусные баллы, если вы можете выяснить единый набор команд, чтобы сделать все это :)

4

Вы можете написать программу на PostScript, чтобы сделать это достаточно легко. Вот начало:

%!
% usage: gs -sFile=____.pdf  scale.ps

/File where not {
  (\n   *** Missing source file. \(use -sFile=____.pdf\)\n) =
  Usage
} {
  pop
}ifelse

% Get the width and height of a PDF page
%
/GetSize {
  pdfgetpage currentpagedevice
  1 index get_any_box 
  exch pop dup 2 get exch 3 get
  /PDFHeight exch def
  /PDFWidth exch def
} def


%
% The main loop
% For every page in the original PDF file
%
1 1 PDFPageCount 
{
  /PDFPage exch def
  PDFPage GetSize

% In here, knowing the desired destination size
% calculate a scale factor for the PDF to fit
% either the width or height, or whatever
% The width and height are stored in PDFWidht and PDFHeight
  PDFPage pdfgetpage
  pdfshowpage
} for

pdfgetpage и pdfshowpage - это внутренние расширения Ghostscript для языка PostScript для обработки файлов PDF.

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