【发布时间】:2018-05-28 16:35:50
【问题描述】:
我正在尝试使用 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';
}
【问题讨论】:
-
您应该首先显示您正在使用的确切命令行。这样,最终有人可以给你提示或解决问题。你最后一个问题太笼统了。有几十个这样的解决方案。例如,您可以在 PDF 阅读器中显示 PDF 文件,截取屏幕截图并将其转换为 JPG ...
-
不是实际的答案,但可能有用:可以将 TTF 字体(从 Windows 机器)复制到您的 Linux 机器,并让 Ghostscript 知道它们。很多年前我做过一次,所以我知道它有效,但我真的不记得确切的步骤。顺便说一句,如果您收到的 PDF 没有嵌入所有字体,那么您无论如何都会遇到问题(撇开特殊字符的问题不谈),因为(转换后的)文件看起来不像原始文件。
-
@Binarus,感谢您的回复。我添加了代码。我不知道为什么,但创建的 jpg 看起来与 pdf 文件一模一样——除了缺少的特殊字符。只有空白区域,而不是带边框的正方形或类似的东西。
-
由于我不了解 PHP 和 Ubuntu,我只能给出最后的建议:我认为 PHP 在后台使用 ImageMagick,所以为了进一步调试问题,您可以直接使用 ImageMagick(您你必须自己弄清楚所需的命令行开关:-))。如果可行,您就知道问题出在 PHP 或 PHP ImageMagick 库中,而不是 ImageMagick 本身,您最终可以编写一个简单的 shell 脚本来执行您想要的操作(不使用 PHP)。
-
最后一个提示:我曾经有一个复杂的海量图像转换任务,并尝试使用 ImageMagick 解决它。我进行了彻底的测试,发现 ImageMagick 在许多情况下都表现不佳。然后我切换到 GraphicsMagick 而不是 ImageMagick 并且从那以后没有任何问题。因此,如果您愿意尝试 bash 脚本而不是 PHP,您可以尝试 GraphicsMagick(最终,PHP 实现了 GraphicsMagick,以便您可以继续使用 PHP)。
标签: php ghostscript imagick