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

7

Я использую GS для преобразования PDF в JPEG, и я использую следующую команду:

<code>gs -sDEVICE=jpeg -dNOPAUSE -dBATCH -g500x300 -dPDFFitPage -sOutputFile=image.jpg image.pdf
</code>

В этой команде, как вы можете видеть-g500x300 установить размер преобразованного изображения (ширина х высота).

Есть ли способ просто установить ширину, не вводя высоту, чтобы она основывалась на ширине, чтобы масштабировать высоту, используя исходное соотношение сторон? Я знаю, что это может быть достигнуто с помощью преобразования ImageMagick, где вы просто положите0 по параметру высоты, т.е.-resize 500x0, Я пытался с GhostScript, но я не думаю, что это правильный способ сделать это.

Я решил не использовать причину преобразования ImageMagick, потому что это очень медленно, когда дело доходит до преобразования многостраничного PDF-файла большого размера.

Спасибо за помощь!

Ваш Ответ

2   ответа
4

чтобы сделать это достаточно легко. Вот начало:

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
5

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 для сохранения соотношения сторон. Бонусные баллы, если вы можете выяснить единый набор команд, чтобы сделать все это :)

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