不同的PDF版本在不同的坐标上打印相同的信息

时间:2014-03-19 11:59:42

标签: java pdf

我正在开发一个应用程序,我必须生成一个PDF文件,最终在指定的表单上打印。 我必须非常准确地了解生成的PDF文件中每个信息的X和Y坐标,以便将其打印在目标表单上的正确位置。 我的问题是,当我实际在所需的表格上打印此PDF文件时,在通过不同的PDF版本打印时,信息被打印在不同的坐标上。对我来说这是一个非常奇怪的问题,为什么同一个生成的PDF文件会被打印在不同的X-Y坐标上。 知道如何以编程方式解决这个问题或者它是Adobe Reader的问题吗?

1 个答案:

答案 0 :(得分:0)

理论上,它应该没有任何区别 - 因为你知道PDF坐标系是非常明确的,基于(0,0)是页面的左下角。

这里的事情变得有趣。 当你打印时,Acrobat是(当我说'是'我的意思是在1999年我最后一次工作时这是真的)将根据打印机/打印驱动程序决定如何打印文档。它应该在洗涤中都是相同的,但是代码会经历不同的路径,具体取决于打印机是否具有PostScript(以及哪个版本)或者是其他东西。在“其他”类别中,Acrobat必须光栅化页面以作为一个大图像打印,它的光栅化方式将取决于打印机作为页面的真实可打印区域及其标称分辨率的广告。如果Acrobat改变了解释信息的方式(因为,这是错误的),那么页面看起来会有所不同。

这是你真正的考验。制作一个带有网格的文档,例如1英寸或1/2英寸的边界,标记为(36,36)以定向角。使用两个版本的Acrobat打印该文档,看看它们是否排成一行(我会用尺子检查)。如果它们排成一行,则在已知位置用文本重做文档。如果它们仍然排成一行,那么问题很可能在你的代码中(比如,没有生成足够精确的坐标以及导致舍入误差的许多复合变换)。