为什么PDF阅读器中的图像损坏,但在浏览器中却很好?

时间:2014-04-24 14:42:10

标签: pdf adobe-reader zend-pdf

我无法理解,因此也解决了以下问题。我正在使用Zend框架(Zend_Pdf)使用绘图,字体和图像创建动态PDF。问题出在图像上。我正在嵌入JPG,没有压缩,但在Adobe PDF Reader中它总是被破坏。我尝试使用不同的图像DPI,我在嵌入之前缩放并存储图像,或者我保留原始大小并且仅在嵌入到PDF时缩放它,但结果是相同的。我真的不明白什么是错的,或者我还能尝试什么,所以我将不胜感激任何帮助。

插入PDF(original is here)的图像:

the image inserted into PDF

当我在任何浏览器(Chrome,FF,IE)中打开pdf时,它看起来没问题,但在Adobe PDF阅读器中我得到了这个:

screenshot from PDF reader

我标记了已损坏的地方。 test.pdf can be seen herehere。有人可以帮我理解这个问题吗?

修改

经过进一步调试后,这似乎与图像大小和Zend_Pdf::drawImage()方法有关。

根据我提供的坐标,PDF中图像的预期大小应该是168x120px,但PDF中的实际大小要大得多。差异大约是35%。

我相信这就是图像被破坏的原因,但我仍然不明白我应该使用哪些坐标来显示所需的像素大小...基本上我使用的是这种模式:

$page->drawImage($image, $x, ($y - 120), ($x + 168), $y);

这是计算坐标的错误方法吗?

编辑2:

我正在使用其实际尺寸(168x120px)添加嵌入到PDF中的已缩放图像的示例,以显示PDF内的图像尺寸不同,或者至少看起来没有预期尺寸,尽管我m使用上面的代码。缩放后的图片为here,最终的pdf为this one。此缩放图像在调整大小之前已经有白色边框,因此结果看起来更好。

编辑3:

详细说明PDF内图像的所需像素大小。由于印刷,我需要遵循一个布局。布局规范是 mm ,我有确切的区域,图像必须定位,最大宽度/高度。即最大宽度为100mm,我在72ppi文件中计算为280px,类似于高度(42mm = 119px)。还要求嵌入图像必须为300 DPI。我认为可能存在问题,但我仍然不明白我应该如何重新计算PDF的宽度/高度?还建议嵌入大图像并将其绘制得更小,或者使用缩放图像并绘制其实际尺寸? 我使用72DPI在屏幕上看到了更好的结果,所以我是否可能需要创建2个PDF文件,一个仅用于打印,一个仅用于屏幕或浏览器?

编辑4(打印):

我在300和600 DPI中使用打印进行了测试。在两种情况下,使用PDF(scaled.pdf)绘制时使用全尺寸图像缩放的PDF都可以。在300 DPI打印中{{3}}非常糟糕(即使在边缘处可见一些红色)。它在600 DPI打印中非常好,但由于拉伸而非常模糊。如前所述,拉伸是由绘图时图像的错误点尺寸引起的。

1 个答案:

答案 0 :(得分:0)

如果单词"说"由字符组成,它取决于读者(浏览器,acrobat,foxit等)如何呈现字体。

尝试将字体合并到pdf中以查看是否有帮助。