使用 Ghostscript 将多页 PDF 转换为单个 JPG?

And*_*rew 17 linux pdf ghostscript imagemagick

我知道 Ghostscript 可以将 PDF 转换为 JPG,在多页 PDF 的情况下,可以将每个页面翻录为单个 JPG。但是是否可以将它们撕成一个 JPG,以便将页面相互粘贴,例如 JPG 的上半部分是第 1 页,下半部分是第 2 页?或者我是否必须使用另一个程序(ImageMagick 可以这样做吗?)将 JPG 页面组合成一个图像?

Kur*_*fle 19

是的,您必须将每个 PDF 页面转换为单个 JPG 文件(Ghostscript 可以做到)。

然后使用另一个程序将生成的 JPG 文件拼接在一起(ImageMagickGraphicsMagic可以使用它们的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
Run Code Online (Sandbox Code Playgroud)

这将创建名为pdffile-001.jpegpdffile-002.jpg等的JPG 。参数 *-dJPEGQ=95" 将“JPEG 质量”设置为 95%。它使用“600x600 dpi”的分辨率。您可能需要另外控制生成的 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
Run Code Online (Sandbox Code Playgroud)

或者

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
Run Code Online (Sandbox Code Playgroud)

使用montage(ImageMagick 或 GraphicsMagick)进行多对单 JPG 拼接:montage命令(在本例中使用的是 ImageMagick)允许您控制平铺模式。如果你使用 eg-tile 4x3你会得到这个拼版布局:

1  2  3  4    
5  6  7  8    
9 10 11 12    
Run Code Online (Sandbox Code Playgroud)

您可以使用此命令将 12 个单独的 JPG 拼接成一个:

montage ^
    -border 0  ^
    -tile 4x3  ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg  ^
    c:/path/to/final.jpg
Run Code Online (Sandbox Code Playgroud)

当然,montage还有许多附加参数,允许您为输入和生成的 JPG 确定背景、间距、偏移、装饰、标签、旋转、裁剪、标题等。


编辑:(我本来想在我的原始答案中给出这个提示,但忘记了。)montage默认情况下将使用 120x120 像素的图块大小。如果要保留每个图块的原始页面大小,则必须添加-geometry到命令行。假设您的 PDF 中有A4 (=595x852 pt) 页面,并且您想保留此页面,但还要在平铺的水平方向上添加 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
Run Code Online (Sandbox Code Playgroud)

编辑 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
Run Code Online (Sandbox Code Playgroud)