我想使用 将 PDF 转换为 PNG 图像convert
。图像必须具有 ?x1080 比例,适合 1920x1080 比例,并且具有最佳质量。
以下是我可以与 Convert 一起使用的许多选项: https://imagemagick.org/script/command-line-options.php#append
- 首先我尝试了以下命令行:
convert my.pdf -geometry 1920x1080 -size 1920x1080 -density 1920x1080 my_resized_pdf.png
该命令的结果为我提供了一个具有良好几何形状(763x1080)的图像,但我不想获得低质量的图像。
- 我使用不带几何参数的转换命令行,如下所示:
convert my.pdf -size 1920x1080 -density 1920x1080 my_resized_pdf.png
结果的质量正是我想要的,但分辨率不是 1920x1080 比例,而是 842x595。它的高度并不完全适合 1920x1080 的比例。
是否有可能从 PDF 中获取 ?x1080 比例和 100% 质量的 PNG 图像?或者 842x595 是获得 100% 质量图像的最大比例吗?我应该将 DPI 选项设置为convert
吗?
答案1
这涉及一些试验和错误,最后,您可能认为哪个结果是“最佳结果”是有争议的。因此,请允许我给出一些一般性建议:
使用该
-flatten
选项去除透明背景。透明度使得很难判断结果的实际质量。如果您需要最终图像的透明度,可以-flatten
在确定质量后将其删除。使用类似的东西
-density 300
来获得高 DPI 结果。主要问题convert
是它默认使用非常低的密度(72 DPI)。必须指定该参数前输入文件。缩小高 DPI 图像可能会导致额外的模糊,因此也许计算正确的 DPI 值以实现所需的分辨率是可行的方法:
$ convert -density 100 file.pdf -flatten file100.png $ file file100.png file100.png: PNG image data, 827 x 1169, 8-bit colormap, non-interlaced $ echo $((1080*10000/1169)) 9238 $ convert -density 92.38 file.pdf -flatten file9238.png $ file file9238.png file9238.png: PNG image data, 764 x 1080, 8-bit colormap, non-interlaced
我不确定是否有办法convert
自行确定“理想”DPI 值。
如果您将此问题带到 ImageMagick IRC 频道或论坛,我相信您会得到更多建议。如果您提供正在使用的 PDF 文件的链接,将会很有帮助。 ;)
您还可以通过其他方式提高质量,例如修剪空边框。如果页面的一半是白色的,您就会损失很多分辨率。甚至有一些解决方案可以重新包装 PDF 文本以充分利用可用的屏幕空间(例如k2pdfopt
)。
最后,还可以尝试其他程序。这是一个见仁见智的问题,但我更喜欢直接使用 Inkscape 或 GhostScript。 ImageMagick 具有“粘合在一起”的字符,Inkscape 具有更平衡的结果,GhostScript 允许您渲染无模糊的纯像素图像(如果您喜欢的话 - 使用pngalpha
模糊版本,它实际上与 相同convert
)。
图像魔术师:
水墨景观:
幽灵脚本:
gs -r92.38 -sDEVICE=png48 -sOutputFile=ghostscript.png file.pdf
答案2
尝试:
convert -resize 1920x1080 in.pdf out.png
如果您的 pdf 有 10 页,您将获得 10 个文件 out-1.png ... out-10.png
请忽略这个答案:虽然对于调整光栅文件大小很有用,但它会为 PDF 文件产生非常模糊的结果(低 DPI 放大)。