如何以高质量将 PNG 转换为 PDF 以使其不模糊或模糊?

cwd*_*cwd 69 imagemagick image-manipulation

有很多关于如何将 PDF 文件转换为 PNG 图像的问题,但我正在寻找一个漂亮清晰的 PNG 文件,并且基本上将其包装或嵌入到 PDF 文件中,而不会让它看起来模糊或模糊。

我意识到安装了 imagemagic 我可以做一个简单的转换,比如:

convert sample.png sample.pdf
Run Code Online (Sandbox Code Playgroud)

我还尝试了很多开关来设置深度和质量设置:

convert -quality 100 sample.png sample.pdf
Run Code Online (Sandbox Code Playgroud)

然而,PDF 仍然看起来模糊/模糊。

这是一个示例图像:

http://img406.imageshack.us/img406/6461/picture3mu.png

作为 png,它清脆干净。当我将其转换为 PDF 时,即使大小相同,它看起来也很模糊:

图片4.png http://img803.imageshack.us/img803/9969/picture4at.png

如何将 PNG 高质量转换为 PDF?

小智 40

尝试使用该-density选项。默认分辨率为每英寸 72 点。所以尝试类似的东西-density 300

有关参考,请参阅-densityImageMagick 命令行选项文档。

  • 这对我来说根本没有改变质量。 (2认同)

Bri*_*n Z 30

从 .pdf 文件中获得好的 pdf 输出可能非常复杂convert。试试吧img2pdf。从自述文件:

将图像无损转换为 PDF,无需对 JPEG 和 JPEG2000 文件进行不必要的重新编码。因此,没有质量损失,也没有不必要的大输出文件。

澄清一下:PDF 可以嵌入无损 JPEG 2000 图像(大多数读者似乎都支持它们)。所以这个转换是完全无损的:

convert sample.png -quality 0 sample.jp2
img2pdf -o sample.pdf sample.jp2
Run Code Online (Sandbox Code Playgroud)

(假设 JP2 代表当然可用:检查identify -list format | grep JP2。)

  • 恕我直言,这是最好的答案,但您应该更好地解释您的观点,即 PDF 可以嵌入无损 JPEG 2000 图像。因此 OP 的完整命令将类似于:`convert sample.png -quality 0 sample.jp2; img2pdf -o sample.pdf sample.jp2`。(假设 JP2 委托当然可用:检查 `identify -list format | grep JP2`。) (4认同)

roz*_*acz 15

我几乎可以肯定,您认为 PDF 质量下降的情况只是PDF 查看器抗锯齿功能的结果。

如果您使用evince查看 PDF,您可以看到抗锯齿功能在特定缩放比例(在我的快速测试中为 300%)自动关闭。当您继续放大时,您可以生动地看到这一点 - 您会注意到在某些时候,像素突然变得清晰可见。这就是必须关闭抗锯齿才能进行精确图像检查的时候。


Jac*_*ley 7

上面的 Brian Z 提供了以下内容,这是将 png 放入 pdf 的正确、完全可逆和无损(假设转换步骤实际上是无损的,我认为这是或至少应该是)方法。您需要从 png 转换为无损 jp2 以符合 PDF 结构/阅读器(我认为)。

$ convert sample.png -quality 0 sample.jp2
$ img2pdf -o sample.pdf sample.jp2
Run Code Online (Sandbox Code Playgroud)

但是值得注意的是,您可以将 .png 文件本身直接提供给 img2pdf,例如:

$ img2pdf -o sample.pdf sample-page1.png <sample-page2.png ...>
Run Code Online (Sandbox Code Playgroud)

这将生成最小的 pdf 文件,并将 png 的原始十六进制无损地插入到 pdf 中的对象中*。

*缺点是,与使用 jp2 不同,此过程不可逆。页眉/页脚和块页眉/页脚数据已从插入的 png 中剥离(这实际上使文件更小!),仅留下原始图片数据(已删除的元数据已集成到 pdf 结构中),大概是为了“破解”pdf以显示技术上不符合容器的原始png。它在 Firefox 中显示良好,并且可能在所有现代阅读器中显示良好,但如果 png 与容器不兼容,那么严格的阅读器可能无法呈现原始 png 数据(因为他们不应该期望它/正确处理它)。

在这里你可以找到一个非常原始的 bash 脚本,它对我有用,可以提取和重建 png 文件,其哈希值与用于输入到 pdf 的哈希值匹配。https://github.com/jack4455667788/RebuildRawPNGExtractedFromPDF