簡體   English   中英

itext7定位異常

[英]Itext7 positioning exception

對於電子簽名,原始坐標應從左下角到右上角。 但是有些頁面會變成左上角和右上角。 我該怎么辦

您假設對於注釋,特別是簽名表單字段小部件注釋,

原始坐標應來自左下角

並在評論中提供一個例子

我使用以下代碼。 原點坐標為左下角

Rectangle rect = new Rectangle(0, 0, 200, 100); appearance.setPageRect(rect);

你的假設是錯誤的,坐標系原點可以在可見區域內或外的任何地方 它確實經常在可見頁面區域的左下方,但這只是因為這通常是 PDF 生成軟件處理的最簡單的變體。

實際上可見頁面區域的坐標范圍由相應頁面的CropBox條目給出:

CropBox矩形(可選;可繼承)一個矩形,以默認用戶空間單位表示,應定義默認用戶空間的可見區域。 當頁面被顯示或打印時,其內容將被剪切(裁剪)到這個矩形。

(ISO 32000-1 表 30 – 頁面對象中的條目)

因此,如果您有相對於可見區域左下角的坐標來放置注釋,則必須將這些相對坐標添加到裁剪框左下角的坐標上。

因此,使用 iText 7,您可以將PdfSignatureAppearance appearance定位在PdfPage page相對於其左下角,如下所示:

Rectangle crop = page.getCropBox();
Rectangle rect = new Rectangle(crop.getLeft() + 0, crop.getBottom() + 0, 200, 100);
appearance.setPageRect(rect);

getCropBox已經考慮到CropBox通過檢查頁面樹中的祖先節點是可繼承的,並且默認為頁面的MediaBox是可選的。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM