Itext ColumnText.ShowTextAligned

Itext ColumnText.ShowTextAligned,itext,Itext,有两个PDF文档-A.PDF和B.PDF。它们具有相同的页面大小。 我在两个文档的页面中都添加了一个对象短语 Stamper_A:=New PdfStamper(reader_A, New System.IO.FileStream( out_file1, System.IO.FileMode.CreateNew)); ContentByte_A:=Stamper_A.GetOverContent

有两个PDF文档-A.PDF和B.PDF。它们具有相同的页面大小。 我在两个文档的页面中都添加了一个对象短语

Stamper_A:=New PdfStamper(reader_A,  
             New System.IO.FileStream(
                 out_file1, 
                 System.IO.FileMode.CreateNew));

ContentByte_A:=Stamper_A.GetOverContent(2);
ColumnText.ShowTextAligned(
    ContentByte_A, 
    Element.ALIGN_LEFT, 
    phrase, 
    75, 
    680, 
    0);

Stamper_B:=New PdfStamper(reader_B,  New System.IO.FileStream(out_file2, System.IO.FileMode.CreateNew));
ContentByte_A:=Stamper_B.GetOverContent(2);
ColumnText.ShowTextAligned(ContentByte_B, Element.ALIGN_LEFT, phrase, 75, 680,0);
但是在文档out\u file1中的短语比文档out\u file2中的短语高。
为什么会发生这种情况?

A.pdf和B.pdf的MediaBox和/或CropBox不同。

请提供相关pdf,以获得准确答案。不过,您应该知道,不同的PDF(实际上甚至是同一PDF中的不同页面)可能有不同的坐标系来定位对象,尽管最终页面大小相同。好的,我理解。请告诉我,如何在两个文档中的相同绝对位置插入文本?首先尝试获取CropBox的矩形。大多数情况下,这将返回null(因为CropBox是可选的)。在这种情况下,获取正常的页面大小(总是有一个MediaBox)。有了这个矩形后,使用rect.left()和rect.bottom()作为坐标系的原点。因此,如果您想在位置x,y添加一些内容,请使用rect.left()+x和rect.bottom()+y作为坐标。