Использование Ghostscript для преобразования многостраничного PDF в один JPG?

Я знаю, что Ghostscript может конвертировать PDF-файлы в JPG, а в случае многостраничного PDF-файла может конвертировать каждую страницу в отдельный JPG. Но возможно ли сделать так, чтобы он копировал их в один JPG, чтобы страницы вставлялись друг в друга, например, верхняя половина JPG - это страница 1, нижняя половина - страница 2? Или мне нужно использовать другую программу (и может ли это сделать ImageMagick?), Чтобы объединить страницы JPG в одно изображение?

2 ответа

Решение

Да, вам придется конвертировать каждую страницу PDF в один файл JPG (Ghostscript может это сделать).

Затем объедините получившиеся файлы JPG с помощью другой программы ( ImageMagick или GraphicsMagic могут сделать это, используя свои montage суб-команд).

Я не знаю ни о каком программном обеспечении, которое может сделать это за один раз.

Преобразование PDF в JPG (с помощью Ghostscript): вам нужно убедиться, что вы получите наилучший возможный результат. Поэтому убедитесь, что вы настроили параметры командной строки, чтобы они работали для вас. Я бы начал с этого:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

Это создаст JPG с именами pdffile-001.jpeg, pdffile-002.jpg и т. Д. Параметр *-dJPEGQ=95"устанавливает" Качество JPEG "на 95%. Используется разрешение"600x600 точек на дюйм ". Возможно, вам понадобится дополнительно контролируйте размер страниц в результате JPG в случае, если ваш Ghostscript по умолчанию не соответствует вашим потребностям:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -dDEVICEWIDTHPOINTS=800 ^
    -dDEVICEHEIGHTPOINTS=600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

или же

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

многократное сшивание JPG с montage (ImageMagick или GraphicsMagick): montage Команда (в этом примере используется ImageMagick) позволяет управлять шаблоном листов. Если вы используете, например, -tile 4x3 Вы получите этот макет наложения:

1  2  3  4    
5  6  7  8    
9 10 11 12    

Вы можете использовать эту команду для сшивания 12 отдельных JPG в один:

montage ^
    -border 0  ^
    -tile 4x3  ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg  ^
    c:/path/to/final.jpg

Конечно, montage имеет много десятков дополнительных параметров, которые позволяют вам определить фон, интервал, смещения, оформление, метки, вращение, обрезку, заголовок и т. д. для ввода и результирующего JPG.


РЕДАКТИРОВАТЬ: (Я хотел дать эту подсказку уже в моем первоначальном ответе, но забыл.) montage по умолчанию будут использоваться размеры плитки 120x120 пикселей. Если вы хотите сохранить исходные размеры страниц для каждой плитки, вы должны добавить -geometry в командной строке. Предполагая, что у вас есть страницы формата A4 (= 595x852 pt) в вашем PDF, и вы хотите сохранить это, но также добавьте интервал 11pt к горизонтали и 22 pt к вертикальному направлению плитки (плюс 4pt сильные серые границы / линии рамки) вокруг каждой плитки), сделайте это:

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

РЕДАКТИРОВАТЬ 2: (Пропущена еще одна важная подсказка.) Если вы не хотите терять хорошее качество изображения во время процесса сшивания / монтажа, который создал ваше преобразование PDF в JPG, то также добавьте -quality 100 параметр вашей командной строки, как это:

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    -quality 100 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

Поскольку в ImageMagick встроена поддержка GhostScript, вы можете сделать все это за один раз:

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

который займет каждую страницу и создаст один длинный jpeg из них сквозной.

Другие вопросы по тегам