将 PDF 转换为 1920x1080 的图像

Alr*_*ick 7 pdf imagemagick conversion png

我想使用 .pdf 将 PDF 转换为 PNG 图像convert。图像必须符合 1920x1080 比率,具有 ?x1080 比率,并具有最佳质量。

这里有很多我可以使用转换的选项: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吗?

fro*_*utz 6

这涉及一些反复试验,最终,您可能认为哪个结果是“最佳结果”是有争议的。所以请允许我给出一些通用的建议:

  • 使用该-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
    
    Run Code Online (Sandbox Code Playgroud)

我不确定是否有办法convert自行确定“理想”的 DPI 值。

如果您将此问题带到 ImageMagick IRC 频道或论坛,我相信您会得到更多建议。如果您提供指向您正在使用的 PDF 文件的链接,它会有所帮助。;)

您还可以通过其他方式提高质量,例如通过修剪空白边框。如果页面的一半是白色的,您将失去很多分辨率。甚至还有一些解决方案可以重新包装 PDF 文本以充分利用可用的屏幕空间(例如k2pdfopt)。

最后,还尝试其他程序。这是一个见仁见智的问题,但我更喜欢直接使用 Inkscape 或 GhostScript。ImageMagick 将字符“粘合在一起”,Inkscape 具有更平衡的结果,GhostScript 允许您渲染无模糊的纯像素图像(如果您喜欢这种图像 -pngalpha用于模糊版本,它几乎与 相同convert)。

图像魔法:

图像魔术师

墨景:

墨景

幽灵脚本:

gs -r92.38 -sDEVICE=png48 -sOutputFile=ghostscript.png file.pdf
Run Code Online (Sandbox Code Playgroud)

幽灵脚本

  • 好答案!+1; 为了完成,您能否测试一下`pdftoppm -q -aa no -png -scale-to 1080 y.pdf out` 的性能? (2认同)