[英]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.