14

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

2 ответа2

16

Да, вам придется конвертировать каждую страницу 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 пт) страниц в формате PDF, и вы хотите сохранить это, но и добавить интервал 11pt к горизонтали и 22 пт в вертикальном направлении кровлю (плюс 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
2

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

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .