将 PDF 转换为 1920x1080 的图像

将 PDF 转换为 1920x1080 的图像

我想使用 将 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 放大)。

相关内容