Вопрос по pdf, jpeg, ghostscript – Настройка авто-высоты / ширины для преобразованного JPEG из PDF с помощью GhostScript
Я использую 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-файла большого размера.
Спасибо за помощь!
чтобы сделать это достаточно легко. Вот начало:
%! % 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.
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 для сохранения соотношения сторон. Бонусные баллы, если вы можете выяснить единый набор команд, чтобы сделать все это :)