PDF 到光栅图像,渲染错误
PDF to Raster image, mistake in render
我已将 PHP 应用程序部署到具有更新版本的 ImageMagick 和 PHP 的新服务器,但是,新服务器 (ImageMagick) 在将 PDF 转换为光栅 ( jpg 或 png)。
这是两台服务器上的 PHP 代码 运行(具有相同的输入文件)
$im = new Imagick();
$im->setResolution( 72, 72 );
$im->readImage( 'vector.pdf' );
$im->setImageFileName('output-old.jpg');
$im->writeImage();
生成的文件如下所示
在旧服务器上生成的文件(看起来正确)
http://i.stack.imgur.com/owai5.jpg
在新服务器上生成文件(问题)
http://i.stack.imgur.com/xg3kv.jpg
原始 PDF
https://drive.google.com/file/d/0B9RgJSi9aRIJcUJYd2Z4bzFDTTA/view?usp=sharing
注意:通过命令行使用 ImageMagick 时会出现同样的问题
convert vector.pdf output.jpg
旧服务器配置
- PHP: 5.3.10
- ImageMagick: 6.7.6-0 2012-03-16 Q16
- OS: Ubuntu 12.04
新服务器配置
- PHP: 5.6.13
- ImageMagick: 6.9.2-3 Q16 x86_64 2015-09-23
- OS: CentOs 6.5
您希望 ImageMagick 的更高版本能够更好地工作,并且如果可能的话宁愿使用它。
问题可能出在配置文件或依赖库中吗?如果需要,将提供更多服务器详细信息。
我通过更新 ghostscript 解决了这个问题
新服务器只有ghostscript 8.7,我升级到9.16
您通常可以通过 运行
获取 ghostscript 版本
gs --version
我已将 PHP 应用程序部署到具有更新版本的 ImageMagick 和 PHP 的新服务器,但是,新服务器 (ImageMagick) 在将 PDF 转换为光栅 ( jpg 或 png)。
这是两台服务器上的 PHP 代码 运行(具有相同的输入文件)
$im = new Imagick();
$im->setResolution( 72, 72 );
$im->readImage( 'vector.pdf' );
$im->setImageFileName('output-old.jpg');
$im->writeImage();
生成的文件如下所示
在旧服务器上生成的文件(看起来正确) http://i.stack.imgur.com/owai5.jpg
在新服务器上生成文件(问题) http://i.stack.imgur.com/xg3kv.jpg
原始 PDF https://drive.google.com/file/d/0B9RgJSi9aRIJcUJYd2Z4bzFDTTA/view?usp=sharing
注意:通过命令行使用 ImageMagick 时会出现同样的问题
convert vector.pdf output.jpg
旧服务器配置
- PHP: 5.3.10
- ImageMagick: 6.7.6-0 2012-03-16 Q16
- OS: Ubuntu 12.04
新服务器配置
- PHP: 5.6.13
- ImageMagick: 6.9.2-3 Q16 x86_64 2015-09-23
- OS: CentOs 6.5
您希望 ImageMagick 的更高版本能够更好地工作,并且如果可能的话宁愿使用它。
问题可能出在配置文件或依赖库中吗?如果需要,将提供更多服务器详细信息。
我通过更新 ghostscript 解决了这个问题
新服务器只有ghostscript 8.7,我升级到9.16
您通常可以通过 运行
获取 ghostscript 版本gs --version