使用 imagemagick 将 png 转换为 pdf:如何设置分辨率?

使用 imagemagick 将 png 转换为 pdf:如何设置分辨率?

foo.png我有一张1240 * 1754 像素的图像。

使用 OS X 上的 imagemagick,我将其转换为 .pdf 并将分辨率指定为每英寸 150 点,因此它的物理格式将正好是 A4 纸:

convert -units PixelsPerInch -density 150 foo.png bar.pdf

但是,如果我现在检查生成文件的分辨率:

identify -verbosy bar.pdf | grep Resolution

它说:

Resolution: 72x72

注意:图像应该不是可以缩放或调整大小或做其他任何事情。它是 1240 * 1754,应该保持这种状态。我只想确保 PDF 恰好覆盖一整张 A4 纸,这就是这些像素尺寸为 150 dpi 的情况。

我如何确保生成的 .pdf 文件具有正确的分辨率?

(编辑)仔细想想,我意识到也许 PDF 文档(即使只有一页)不一定具有一个整体的每英寸点数或分辨率设置。
在这种情况下,我用一张图片创建 PDF,但一般来说,PDF 可以包含许多元素,可能所有元素的分辨率都不同。

所以我想知道,也许我的方法只是为这张图片设置了 dpi,但是Resolution报告的却identify -verbose bar.pdf是完全不同的东西?

答案1

从图像转换为 pdf 时,降低密度提高分辨率。

convert -units PixelsPerInch -density 72 foo.png bar.pdf

另一方面,当从 pdf 转换为打印质量图像时,密度应该很高。

convert -units PixelsPerInch -density 600 bar.pdf foo.png

但我找不到这方面任何文档。

(这是一个老问题。希望它能帮助那些仍在寻找答案的人。)

答案2

尝试这个:

convert foo.png -page A4 bar.pdf

答案3

PDF 的原始默认分辨率是每英寸 72 点,因此每点一个点的 1" x 1" 图像可以说是 72 dpi,但这并不是在按比例缩放到 1" 正方形的位置上计算其宽 72 x 高 72 像素的方式。

因此,原件宽度为 1240,高度为 1754,应用于 210 毫米 x 297 毫米,因此水平方向每毫米大约有 6.095 个点,垂直方向每毫米大约有 5.905 个点(这不是一个非常有用的描述)。

目标是 A4 比例,所需密度为每英寸 150 点,按照 PDF 术语来说,图像宽度为 1,240.157 点,高度为 1,753.937 点,真实比例为每英寸 72 点。

我们不能有子像素,所以它四舍五入为 1240 x 1754 @ 72 x 72 ptpi 因此也不是一个合理的描述,但却是准确的

如果我们添加@150 pxpi(作为标称像素密度),这将更加合理,并且 PDF 中的大多数图像将使用 hdpi 和 vdpi 或 x-ppi y-ppi 中的单位,例如

--0000.ppm: page=1 width=1800 height=682 hdpi=599.67 vdpi=599.12 colorspace=DeviceRGB bpc=8
--0001.ppm: page=3 width=1834 height=665 hdpi=345.93 vdpi=345.75 colorspace=DeviceRGB bpc=8

或者

>pdfimages -list tt.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     950   575  gray    1   8  image  no        27  0    72    72 42.4K 7.9%
   1     1 image     950   575  index   1   8  image  no        19  0    72    72 2454B 0.4%

相关内容