Code our life 日日行,不怕千万里;时时学,不怕千万卷

22七/100

使用imageMagic实现PDF转图片

最近一个项目需要实现将PDF文件转成图片的功能,由于转换时间较长,所以选择在系统后台执行转换工作,使用的是一个叫imageMagic的程序(貌似很多图片处理软件用的就是这个库)。查看imageMagic的官方文档,参数实在太多,做了一番research之后,记录如下:

PDF转图片

convert -density 300 -quality 100 -resize 1024x768 -antialias test.pdf[0-50] test.jpg

使用convert命令进行转换:
density参数是设置图片DPI值
quality参数是设置图片质量(0-100,对png格式图片无效)
resize参数是对图片进行缩放(按比例)
antialias参数是设置开启文字抗锯齿效果
test.pdf是要转换的pdf文件(必要时需要指定绝对路径,不一定是pdf格式,图片格式即可,0-50是指要转换的页码,不指定就全部转换)
test.jpg是转成图片后的名字(如果pdf有多页,图片名称按照 test-0.jpg, test-1.jpg, test-2如此类推)

PHP中调用convert命令

PHP中有几个调用系统shell命令的函数,这次项目中我使用exec这个函数,使用方法如下:

    $cmd = "convert -density 300 -quality 100 -resize 1024x768 -antialias test.pdf[0-50] test.jpg";
    // $output变量记录命令执行时的所有输出,以数组格式返回
    // 执行后可以对$output变量进行检查,因为convert命令正常的话是没有输出的,如果有输出可能就是转换失败
    exec($cmd, $output);

解析PDF等图片的信息

可以使用identify命令对PDF进行解析,可以得到文件的分辨率等信息,简单命令如下(详细参数参考官方文档):
identify test.pdf

解决在IE下jpg图片无法显示的问题

因为imageMagic转换成jpg格式图片的时候,默认使用了CMYK格式,所以导致在IE下有时候会显示不了。
可以使用colorspace参数将图片使用RGB的格式进行转换。
命令如下:
convert -colorspace RGB test.pdf test.jpg