gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:14:40 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

  • 检测页面大小
    您可以使用 ImageMagick 的 identify检测 PDF 的页面大小。
    只需运行最简单的命令:
    识别多页.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
    结果为您提供了两个光栅图像。

    关于imagemagick - 将 PDF 转换为 JPG - 两页跨页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12749099/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com