我目前正在使用php的imagick将一些PDF转换为图片 - 这很好用,但输出时图片会被“切割”。
这是由于PDF中所包含的信息与实际内容尺寸之间的差异造成的。
PDF报告为612x792 72ppi文档,但当我通过Mac上的预览导出图像时,图像为1651x1275 - 这怎么可能呢?
显然,导出是正确的,因为图像在这些尺寸下可以正确查看 - PDF是否只是编码错误,宽度和高度被混淆了?我该如何通过代码检测此问题?此外,图像导出的大小也不同(大得多),大约是原始PDF的两倍,这让我相信imagick并没有正确读取某些信息。
基本上,我想知道是否有一种正确的方法来确定实际的PDF内容大小,以便从中导出的图像具有最佳质量。
谢谢!
编辑:(添加代码)
这是由于PDF中所包含的信息与实际内容尺寸之间的差异造成的。
PDF报告为612x792 72ppi文档,但当我通过Mac上的预览导出图像时,图像为1651x1275 - 这怎么可能呢?
显然,导出是正确的,因为图像在这些尺寸下可以正确查看 - PDF是否只是编码错误,宽度和高度被混淆了?我该如何通过代码检测此问题?此外,图像导出的大小也不同(大得多),大约是原始PDF的两倍,这让我相信imagick并没有正确读取某些信息。
基本上,我想知道是否有一种正确的方法来确定实际的PDF内容大小,以便从中导出的图像具有最佳质量。
谢谢!
编辑:(添加代码)
<?php
$im = new Imagick();
$im->readImage("SomeTest.pdf");
$im->setImageColorspace(255);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(60);
$im->setImageFormat('jpeg');
$im->writeImages("SampleImage.jpg");
?>
使用的PDF文件如下: http://www.pantone.com/pages/MYP_mypantone/software_downloader.aspx?f=3
此外,以下是imagick从identifyImage()函数输出的结果,看起来文件大小有些不对。
Array
(
[imageName] => /tmp/magick-XXehkI8e
[format] => PDF (Portable Document Format)
[geometry] => Array
(
[width] => 612
[height] => 792
)
[type] => TrueColor
[colorSpace] => RGB
[resolution] => Array
(
[x] => 72
[y] => 72
)
[units] => Undefined
[fileSize] => 50mb
[compression] => Undefined
[signature] => 9426f3fc4f45afd71941435a37d585d01e01d32458f3ca241e72892c2f7f35d5
)