我正在尝试使用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';
}
答案 0 :(得分:0)
如果没有看到导致您出现问题的示例文件,就不可能对此进行彻底评论。请注意,对于此转换,您根本不需要IM,Ghostscript完全能够自行渲染为JPEG。
Binarus是完全正确的,如果您的PDF文件不包含他们需要的所有字体,那么无论您使用什么工具, 都会有渲染问题。它们可能在不同的应用程序中或多或少地夸大了,但是无论何时替换字体,结果都是不正确的。所以你应该努力教育你的用户,让他们用嵌入的字体创建PDF文件,然后你就不会有这么多问题。
说了这么多,你正在使用一个相当老的版本的Ghostscript。 9.10是4岁,完全有可能在那段时间内对丢失的字体替换进行了改进(事实上,我知道有)。我理解坚持使用LTS版本的愿望但是认真地说,你需要考虑升级。
当然还有其他PDF渲染工具,我可能会建议使用Poppler或MuPDF或Evince。但是所有这些都可能是旧版本的旧版本,并且在任何情况下都可能遇到与任何其他PDF消费者相同的问题,如果字体不可用,则会出现输出问题。
如果您提供一个示例,那么我将查看实际问题是什么,并将9.10结果与当前代码进行比较,但如果没有,则无需继续。