2017-02-09 30 views
0

我目前使用phantomjs呈现特定的网页,其中包含两个重叠的图像。生成PDF后,我将生成的PDF重新缩放到适当的大小 - 目前缩小到原始大小的三分之一。当比较转换后的phantomjs PDF和缩小的PDF时,我可以清楚地看到图像不再被对齐(它们在转换后的图像中)使用ghostscript缩小PDF导致图像不被alinged

看看放大的图像(3200%详细显示问题)区域,问题发生在哪里。蓝色图像(SVG)是覆盖较深的一个(PNG) - 两者都在右侧完全一致(白色区域是PDF的一部分)) Converted

但是,使用ghostscript的缩放此图像时:gs -o /path/to/output.pdf -sDEVICE=pdfwrite -dPDFFitPage -r300x300 -g2676x2676 /path/to/input.pdf (即使它得到下来缩放,而不是缩放,图像不再对齐: enter image description here

(两个图像都放置position:absolute; right: 0;,所以无论在右侧很好地对齐)

什么会导致这种行为,以及如何避免这种行为?

回答

0

这种行为可能在PDF使用者中,而不是在Ghostscript中。

首先,您需要注意的是,当你运行通过Ghostscript的PDF文件,并通过pdfwrite装置产生一个PDF文件,你是绝对“调整大小”,“缩减”,“合并”或这意味着任何其他条款输出PDF文件的内容与输入内容有任何关系。

'概述'here解释了为什么,我建议你阅读它。

现在我不能确定没有看到PDF文件(您没有给我们),但是..绝大多数可能的原因是算术中舍入误差意味着输出PDF文件中的图像不在精确地与输入相同的位置(并且不,无法避免)。

当您“放大”时,您正在修改当前变换矩阵,坐标的算术精度的微小差异会乘以“缩放因子”。如果对象覆盖超过1/2像素,通常像素是“开”,如果缩放正好合适,它可能很容易意味着顶层图像中的像素(假设它是*图像)几乎没有超过1/2像素,而下面的图像刚刚低于1/2像素。导致你看到的不匹配。

即使没有您正在进行的转换,这类问题也可能存在,经过培训的图形设计人员会意识到这一点,并以防止问题发生的方式创建内容。要么没有需要精确对齐的图像,或者如果必须,则图像都要延伸到您希望它们结束的位置,然后在两个图像周围放置一个剪切矩形。这样,无论如何缩放剪切矩形,图像将始终在同一点剪切。