将 PDF 转换为 JPG - 两页跨页?

Posted

技术标签:

【中文标题】将 PDF 转换为 JPG - 两页跨页?【英文标题】:Convert PDF to JPGs - two-page spreads? 【发布时间】:2012-10-05 15:10:38 【问题描述】:

我编写了一个脚本来使用 ImageMagick 将 PDF 转换为每个页面的 JPG,以及调整大小等。

更棘手的地方是一些 PDF 将中间的两页展开为“一页” - 所以它特别宽。有没有办法“检测”这个并将左右两侧裁剪为两个单独的页面?

【问题讨论】:

【参考方案1】:

假设您想为此使用 ImageMagick(并且 ImageMagick):这是无法做到的。 ImageMagick 无法单独处理 PDF 输入。无论如何,它必须使用 Ghostscript,因此如果没有本地 Ghostscript 安装,它将无法工作。 (当您将 PDF 输入提供给 ImageMagick 时,您不一定会看到 Ghostscript 在工作,除非您在其命令行中添加 -verbose,因为 ImageMagick 将工作委托给 Ghostscript 是在您背后发生的。 .)

您的问题分为两部分:

“有没有办法“检测”超宽页面,比如中间跨页?” “有没有办法将中间跨页的左右部分裁剪为两个单独的页面?”

检测页面大小

您可以使用 ImageMagick 的 identify 来检测 PDF 的页面大小。

只需运行最简单的命令:

识别 multipage.pdf

输出将是 s.th。喜欢

multipage.pdf[0] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000
multipage.pdf[1] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000
multipage.pdf[2] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000
multipage.pdf[3] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000

输出的页数从 0 开始。所以[0]表示第一页,[1]表示第二页,以此类推

要更好地自定义输出,您可以这样做:

identify -format '%f, page %s + 1: %W x %H\n' multipage.pdf

得到

multipage.pdf, page  0 + 1: 595 x 792
multipage.pdf, page  1 + 1: 595 x 792
multipage.pdf, page  2 + 1: 595 x 792
multipage.pdf, page  3 + 1: 595 x 792

对于双跨页,相应的输出应该是1190 x 792 或类似的。

但是,请注意:使用 ImageMagick 查询 PDF 文件的页面大小非常缓慢。因此,最好为这个子任务使用不同的工具:pdfinfo。这会快几个数量级:

pdfinfo -f 1 -l 1000 -box multipage.pdf

会输出

Pages:          4
Page    1 size: 595 x 792 pts
Page    1 rot:  0
Page    2 size: 595 x 792 pts
Page    2 rot:  0
Page    3 size: 595 x 792 pts
Page    3 rot:  0
Page    4 size: 595 x 792 pts
Page    4 rot:  0

如果您需要有关页面的 ArtBox、TrimBox、BleedBox 和 CropBox 值的更多信息,只需在命令行中添加 -box

正如我所说:pdfinfo 在识别 PDF 的页面大小方面比 ImageMagick 快得多。 为工作使用正确的工具。

裁剪页面的左右部分

既然您已经确定了大的双展开页面,您可以使用以下方法之一(基于 Ghostscript)来拆分中间的页面:

How to crop a section of a PDF file to PNG using Ghostscript Split one PDF page into two Convert PDF 2 sides per page to 1 side per page How can I split a PDF's pages down the middle?

调整上述链接中描述的方法将导致 2 个 PDF 页面仍包含其所有原始矢量和字体信息。

或者,您可以使用 ImageMagick。假设您的“双展开”页面的尺寸为 1190x842 pt,基于 A4(595x842 pt),并假设它是原始 PDF 中的第 16 页(对于 ImageMagick,它转换为 [15]),您的 convert 命令可能是某某喜欢:

convert  multipage.pdf[15]  -crop 595x842+0+0    page16-left.png
convert  multipage.pdf[15]  -crop 595x842+595+0  page16-right.png

结果为您提供了两个光栅图像。

【讨论】:

以上是关于将 PDF 转换为 JPG - 两页跨页?的主要内容,如果未能解决你的问题,请参考以下文章

Ghostscript 设置 - 将任何 jpg 转换为 pdf 时出错

如何将jpg图片转换PDF?

使用 ghostscript 将 jpg 列表转换为 pdf

将图片文件夹转换为单个 PDF

PDF2JPG-使用ImageMagick将PDF转换为JPG图像

sh 将pdf转换为jpg