【问题标题】:ImageMagick convert from pdf to image shrinks image and places it in bottom left cornerImageMagick 从 pdf 转换为图像缩小图像并将其放置在左下角
【发布时间】:2022-01-22 19:20:32
【问题描述】:

我正在使用此命令将页面从 pdf 转换为 jpeg 图像:

magick convert -density 300 sample.pdf output.jpeg

我看到白色背景,PDF 的内容显示为一个较小的图像,贴在白色“画布”的左下角谁能帮助解释为什么会发生这种情况以及如何防止这种“收缩”?

我的 PDF 有 14 页。以下是其中一些页面的元数据:

>magick identify sample.pdf
sample.pdf[0] PDF 2286x3600 2286x3600+0+0 16-bit sRGB 6458B 0.016u 0:00.017
sample.pdf[1] PDF 2286x3600 2286x3600+0+0 16-bit sRGB 6018B 0.016u 0:00.020
sample.pdf[2] PDF 2286x3600 2286x3600+0+0 16-bit sRGB 5732B 0.016u 0:00.023

以下是其中一页的实际和预期输出:

实际输出:

预期输出:

编辑:这是一个示例 PDF:

https://www.dropbox.com/s/0bzu5brfzbedd7i/sample.pdf?dl=0

【问题讨论】:

  • 发布您的实际 PDF 文件。您可以发布到一些免费的托管服务(如果需要,请将其压缩),然后将链接放入您的问题中。
  • @fmw42,添加了示例 pdf
  • 这无济于事,但通常最好只使用 magick 而不是 magick convert 和 ImageMagick 7,否则,您将无法获得更新的 ImageMagick 7 功能。如果您不这样做,语法将遵循 ImageMagick 6。

标签: imagemagick imagemagick-convert imagemagick.net


【解决方案1】:

我不确定你为什么会有这种行为。 PDF 中有一些东西,可能是一个裁剪框,Imagemagick/Ghostscript 没有拾取。但是你可以使用 -trim 去除多余的白色

magick sample.pdf -trim sample_%d.jpg

【讨论】:

  • 作为 imagemagick 的新手,我想知道转换为图像时使用的默认尺寸是多少?
  • 将 PDF 转换为光栅的默认输出尺寸由默认密度 72 dpi 和 pdf 的尺寸(以英寸为单位)定义。 dimension in pixels = density * dimension in inches。使用 magick identify -verbose 查看任何文件的英寸尺寸和密度(即分辨率)
  • 问题可能如前所述,封闭的光栅图像本身的密度与封闭的 PDF 不同。您最好使用 pdf2image 从 PDF shell 中删除光栅图像。 pdf2image 在 Poppler 包中。见pdf2image.readthedocs.io/en/latest/installation.html
【解决方案2】:

感谢您的示例

> magick identify sample.pdf
> sample.pdf[0] PDF 2286x3600 

似乎是错误的,因为没有匹配项

来自 PDF 内容

/Width 1531
/Im0
/Height 2454
/MediaBox [0 0 1531 2454]

on

Page Size:
/CropBox [0 0 919 1473]
919 pt x 1473 pt
32.42 x 51.96 cm
12.76 x 20.45 inches

因此,当图像以@120 dpi 插入时没有问题

我们可以通过在查看器中缩放到 100% 时复制并粘贴到说画中来检查图像,同意图像为 1531 x 2454 像素。 p>

由于使用@fmw42 的 cmets,决定查看 GhostScript(ImageMagick 依赖于 PDF 处理)是否有影响,当然使用 GS v 9.55 处理 PDF 时没有任何特殊开关会发出警告并产生左下方的输出 所以问题似乎是由最近的 GhostScript 调用/缩放方法引起的。 因为使用了简单的基于 GhostScript 的图像应用程序(Irfanview 使用左侧的 GS 插件)行为相同,而其他查看器的问题较小,即使是右侧预览的姊妹产品 MuPDF。因此,Ghostscript 所见并可能用于缩放的文件 Media Box 似乎是罪魁祸首,但在生成期间已由其他两个 PDF 处理程序处理。

一种解决方案是使用一种更简单的方法将图像提取为 PNG,因此请查看Xpdf command line tools“pdftopng”,它给出了很好的结果,但您需要计算出这种情况下的最佳分辨率是 120(或 240),典型的 Windows 命令行不需要 .exe,但最好在使用其他位置的路径作为前缀时使用它。

pdftopng.exe -r 120 -f 1 -l 1 sample.pdf

【讨论】:

  • 我试过magick convert -density 120 sample.pdf op_120.png,但没有奏效。也很抱歉,我没有遵循为什么应该有效的逻辑。 (我是新手)
  • ImageMagick 使用 Ghostscript 阅读 PDF。所以这个错误很可能与 Ghostscript 有关。
  • 对不起,我不明白你关于“但会转到 GS”的评论
  • 顺便说一句,我使用的是 GS 9.54。
  • @K.J 好的,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
相关资源
最近更新 更多