我正在尝试使用命令行程序转换将PDF转换为图像(JPEG或PNG)。这是我正在转换的pdf文件之一。

我想让程序去掉多余的空白,并返回足够高质量的图像,以便上标可以轻松读取。

这是我目前最好的尝试。正如你所看到的,修剪工作很好,我只是需要锐化的分辨率相当多。这是我正在使用的命令:

convert -trim 24.pdf -resize 500% -quality 100 -sharpen 0x1.0 24-11.jpg

我试着做了以下有意识的决定:

调整它的大小(对分辨率没有影响) 尽可能提高质量 使用-锐化(我已经尝试了一系列值)

任何建议,请在最终的PNG/JPEG图像的分辨率更高,将非常感谢!


当前回答

它也会给你带来好的结果:

exec("convert -geometry 1600x1600 -density 200x200 -quality 100 test.pdf test_image.jpg");

其他回答

这里的许多答案集中在使用magick(或其依赖项GhostScript)作为OP问题的设置,少数人建议使用Gimp作为替代,但没有描述为什么某些设置可能在不同情况下最有效。

对于OP“样本”,要求是一个清晰的修剪过的图像,尽可能小,但保持良好的可读性。这里的结果是96dpi在58 KB(一个非常小的增加矢量源54 KB),但仍然保持一个好的图像,即使放大。将其与上面接受的答案图像中的72 dpi (226 KB)进行比较。

关键是任何图像处理器都可以通过脚本从命令行批量运行,使用配置文件作为输入,所以这里IrfanView(带或不带GS)被设置为自动裁剪pdf页面,并在默认的96 dpi输出到PNG,仅使用16个灰色阴影的4个BitPerPixel颜色。 尺寸可以通过降低分辨率到72来进一步减小,但96是PNG屏幕显示的最佳设置。

通常我在原生分辨率下用'pdfimages'提取嵌入图像,然后使用ImageMagick的转换为所需的格式:

$ pdfimages -list fileName.pdf
$ pdfimages fileName.pdf fileName   # save in .ppm format
$ convert fileName-000.ppm fileName-000.png

这将生成最佳和最小的结果文件。

注意:对于有损的JPG嵌入图像,你必须使用-j:

$ pdfimages -j fileName.pdf fileName   # save in .jpg format

最近的“poppler-util”(0.50+,2016),你可以使用-所有保存有损为jpg和无损为png,所以一个简单的:

$ pdfimages -all fileName.pdf fileName

从PDF中提取总是最好的质量内容。

在很少提供的Win平台上,您必须下载最近的(0.68,2018)' popler -util'二进制从: http://blog.alivate.com.au/poppler-windows/

看来以下方法是有效的:

convert           \
   -verbose       \
   -density 150   \
   -trim          \
    test.pdf      \
   -quality 100   \
   -flatten       \
   -sharpen 0x1.0 \
    24-18.jpg

它的结果是左图。将其与我的原始命令的结果进行比较(右侧的图像):

  

(为了真正看到和欣赏两者之间的差异,右键单击每个,并选择“在新选项卡中打开图像…”)

还要记住以下事实:

右边最糟糕的模糊图像的文件大小为1.941.702字节(1.85 MByte)。 它的分辨率是3060x3960像素,使用16位RGB颜色空间。 左边图像比较清晰,文件大小为337.879字节(330 kByte)。 它的分辨率是758x996像素,使用8位灰色空间。

所以,不需要调整大小;添加-density标志。密度值150很奇怪——尝试一个范围的值会导致图像在两个方向上看起来都很糟糕!

对于Windows(在W11上测试):

magick.exe -verbose -density 150 "input.pdf" -quality 100 -sharpen 0x1.0 output.jpg

你需要安装:

ImageMagick https://imagemagick.org/index.php。

ghostscript https://www.ghostscript.com/releases/gsdnld.html

额外的信息:

注意使用-flatten参数,因为它只能生成首页作为图像 使用-scene 1参数从索引1开始,其中包含图像名称 上面提到的转换命令已经被弃用,取而代之的是魔法

这里的Linux用户:我尝试了转换命令行实用程序(PDF到PNG),我对结果不满意。我发现这样做更简单,效果也更好:

使用PDFTK提取PDF页面 例如:PDFTK file.pdf cat 3输出page3.pdf 用GIMP打开(导入)该pdf 重要:改变导入分辨率从100到300或600像素/英寸 在GIMP导出为PNG(更改文件扩展名为。PNG)

编辑:

根据评论的要求,添加了图片。转换命令使用:

Convert -density 300 -trim struct2vec.pdf -quality 100 struct2vec.png

GIMP: 300dpi进口(px/in);导出为PNG压缩级别3。

我没有在命令行上使用GIMP(回复:我的评论,在下面)。