当前位置: 首页 > Linux

ImageMagick强大的PDF工具集

时间:2023-04-06 20:08:51 Linux

ImageMagick是一个命令行工具,用于在Linux上进行超强大且功能丰富的图像处理。ImageMagick在做PDF相关的工作时,是基于Ghostscript的。所以两者都要安装。首先,确保机器上已经安装了ImageMagick和Ghostscript。Mac安装:brewinstallghostscriptimagemagickUbuntu安装:sudoapt-getinstall-yghostscriptimagemagick#onerror:sudoapt-getupdate一系列命令,包括:convert常用的命令有:#JPG图片转PNG图片$convertimage.jpgimage.png#缩放图片到50%大小$convertimage.png-resize50%image2.png#缩放图片指定长宽$convertimage.png-resize640x480image2.png#Horizo??ntalmergeimage$convertimage1.pngimage2.pngimage3.png+appendimage123.pngPDFtoimage使用imagemagick将pdf转成图片(不是提取图片)命令是:$convertsample.pdfsample.jpg命令很简单非常快。但是在PDF转图片的过程中,如果不做任何设置,直接转xx.pdfxx.png,效果很差,如下图:注意:一般情况下,如果设置输出为png,则程序将发出警告:convert:profile'icc':'RGB':RGB色彩空间不允许出现在灰度PNGsample-default-convert.png'@warning/png.c/MagickPNGWarningHandler/1744上。这是因为程序不支持PNG格式图片的问题。虽然报错,但是也可以正常生成png文件。如果你不喜欢,就把它改成JPG格式输出。清晰度设置convert命令将PDF转图片最大的难点就是清晰度问题。网上有很多解决方案,各有优缺点。以下是一些尝试的总结:#默认转换:图像大小与pdf几乎相同$convertsample.pdfsample.jpg#resize设置:无论resize100还是3000,都没有清晰度$convert-resize3000sample.pdfsample.jpg#质量设置:完全没有影响$convert-quality100%sample.pdfsample.jpg#verbose+density+quality+flatten+sharpen转换:大致恢复80%的清晰度$convert-verbose-density150-trim-quality100-flatten-sharpen0x1.0sample.pdfsample.jpg#density300转换:100%恢复,但文件大了10倍$convert-density300-trim-quality100sample.pdfsample.jpg#geometryconversion:100%还原,文件大7倍$convert-geometry1600x1600-density200x200-quality100sample.pdfsample.jpg总结:经过多方调查,中外网友都在猜测convert的分辨率设置转换图片阶段。而且设置过于固定,无法稳定保证所有PDF转换成同样的清晰度。所以解决这个问题需要换一种思路:直接提取PDF中的原画,做到100%原画质。而且一般扫描书籍的PDF,整页只有一张图片,最好用pdfimages来解决。这需要另一个命令行工具pdfimages来完成。请参考另一篇相关说明。将批处理图像合并到PDFcd/path/to/images/convert"*.{png,jpeg,jpg}"-quality100outfile.pdf