Imagick / Ghostscript将pdf转换为jpg的替代方案

时间:2017-12-14 14:35:54

标签: php ghostscript imagick

我正在尝试使用imagick / ghostscript(v9.10,显然是最新为ubuntu 14.04构建的)和php将pdf文件转换为jpg格式。不幸的是,imagick不断删除像éö这样的特殊字符。我假设缺少字体是造成这种行为的原因。我从几十家不同的公司收到PDF文件,他们经常更改他们使用过的字体。因此,我无法导入任何使用过的字体。 我想将pdf转换为jpg(或png)并稍微调整一下,这就是全部。还有其他可能的溶剂不需要ghostscript吗? 编辑:源代码

foreach(glob("$files_temp*.pdf") as $globpdf){
            $imagick = new Imagick(); 
            $imagick->readImage($globpdf);
            $imgname=basename($globpdf,".pdf");
            $imagick->setImageCompressionQuality(25);
            $imagick->setImageFormat('jpg');

            $imagick->writeImage($files_img.$imgname.'.jpg');
            $imgsql=$imgname.'.jpg';
            }

1 个答案:

答案 0 :(得分:0)

如果没有看到导致您出现问题的示例文件,就不可能对此进行彻底评论。请注意,对于此转换,您根本不需要IM,Ghostscript完全能够自行渲染为JPEG。

Binarus是完全正确的,如果您的PDF文件不包含他们需要的所有字体,那么无论您使用什么工具, 都会有渲染问题。它们可能在不同的应用程序中或多或少地夸大了,但是无论何时替换字体,结果都是不正确的。所以你应该努力教育你的用户,让他们用嵌入的字体创建PDF文件,然后你就不会有这么多问题。

说了这么多,你正在使用一个相当老的版本的Ghostscript。 9.10是4岁,完全有可能在那段时间内对丢失的字体替换进行了改进(事实上,我知道有)。我理解坚持使用LTS版本的愿望但是认真地说,你需要考虑升级。

当然还有其他PDF渲染工具,我可能会建议使用Poppler或MuPDF或Evince。但是所有这些都可能是旧版本的旧版本,并且在任何情况下都可能遇到与任何其他PDF消费者相同的问题,如果字体不可用,则会出现输出问题。

如果您提供一个示例,那么我将查看实际问题是什么,并将9.10结果与当前代码进行比较,但如果没有,则无需继续。