gpt4 book ai didi

java - itext7定位异常

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:18 28 4
gpt4 key购买 nike

对于电子签名,原始坐标应该是从左下角到右上角。但有些页面会变成左上角和右上角。我该怎么办

最佳答案

您假设对于注释,特别是签名表单字段小部件注释,

the original coordinates should be from the lower left corner

并在评论中提供示例

I use the following code. The origin coordinate is the lower left corner

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

您的假设是错误的,坐标系原点可以在可见区域内部或外部的任何地方。它确实经常位于可见页面区域的左下角,但这仅仅是因为这通常是 PDF 生成软件处理的最简单的变体。

实际上可见页面区域的坐标范围是由相应页面的CropBox条目给出的:

CropBoxrectangle(Optional; inheritable) A rectangle, expressed in default user space units, that shall define the visible region of default user space. When the page is displayed or printed, its contents shall be clipped (cropped) to this rectangle.

(ISO 32000-1 表 30 – 页面对象中的条目)

因此,如果您有相对于可见区域左下角的坐标来放置注释,则必须将这些相对坐标添加到裁剪框左下角的坐标中。

因此,使用 iText 7,您可以将 PdfSignatureAppearance 外观 放置在 PdfPage 页面 上相对于其左下角的位置,如下所示:

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

(getCropBox 已经考虑到 CropBox 是可通过检查 Pages 树中的祖先节点来继承的,并且默认为页面的 MediaBox 时它是可选的。)

关于java - itext7定位异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59729937/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com