PDF尺寸与实际内容尺寸

时间:2011-05-19 22:35:28

标签: php pdf jpeg imagick file-conversion

我目前正在使用php的imagick将一些PDF转换为图像 - 这适用于输出过程中图像被“切断”的小细节。

这是由于PDF中包含的信息与实际内容维度的不同。

PDF报告为612x792 72ppi文档,但当我通过Mac上的预览从中导出图像时,图像为1651x1275 - 这怎么可能?

显然导出是正确的,因为在这些尺寸中正确查看图像 - 可能是PDF在宽度和高度混合的情况下被错误地编码了吗?如何通过代码检测到这个?此外,图像导出的大小不同(大得多),大小只有两倍,这让我相信想象力无法正确读取某些信息。

基本上我想知道是否有正确的方法来确定实际的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

另外,这里是来自identifyImage()函数的imagick输出,看起来文件大小看起来有点不对。

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
)

2 个答案:

答案 0 :(得分:3)

您应该知道PDF本身是一种无分辨率的格式。页面以数学方式描述,除了由浮点数强加的限制之外,它与任何特定的分辨率限制无关。

PDF仅在呈现给特定设备时才具有分辨率(并且可能是也可能不是设备的分辨率)。

“但是图像怎么样?PDF格式的图片肯定会给它分辨率!”有点。 PDF中的图像表示为无单位样本,并且在页面上实例化之前本身不具有分辨率。我可以拍摄一张300 dpi的8.5“x11”1位图像并将其嵌入到PDF中,但同样的图像可以放入页面的内容流中,填充整个8.5“x11”的空间,从而保持分辨率或它可以渲染成更小的缩略图(通过比例创建更高的分辨率) - 甚至那些“分辨率”也不适用,直到页面实际呈现给设备。此外,不会阻止PDF渲染器进行双线性(或其他)插值以提高图像的表观分辨率。

为了给您一个更具体的例子,如果我在96 dpi监视器上以100%渲染PDF页面,该页面的分辨率不会超过96 dpi。如果我在1800 dpi照排机上渲染该PDF页面,页面的分辨率不会超过1800 dpi。

如果我在96 dpi显示器上以100%渲染的PDF页面上以100%渲染300 dpi图像,则页面上图像的分辨率为96 dpi。如果我在1800 dpi照排机上以100%渲染的PDF页面上以100%渲染300 dpi图像,则页面上图像的分辨率为300 dpi。

您从图像magick看到的输出可能反映出PDF单位的8.5“x 11”页面为612 x 792,1 PDF单位相当于1/72英寸。预览渲染似乎在~194 dpi完成。

答案 1 :(得分:1)

PDF中的图像缩小到PDF中的某个尺寸(或者在Reader等人看到它时会被裁剪。)

ImageMagick(我想象你使用它)使用GhostScript将PDF转换为图像。 GhostScript非常擅长渲染PDF文件。我不得不怀疑你是否传递了一些不良信息。

我们能看到一些代码吗?输入PDF和​​输出图像[s]的链接也不错。


我刚刚在你的PDF上运行了gs 8.71,它渲染得很好。您使用的是什么版本的GhostScript?