【发布时间】:2017-04-10 18:30:17
【问题描述】:
我正在尝试更新注释的坐标,并注意到在获取字段位置与首先添加注释时,iText 所做的位置调整会反转 270 和 90 的旋转。这不是我所期望的。
internal void AddAnnotation(PdfAnnotation annot, PdfDictionary pageN)
https://github.com/itext/itextsharp/blob/develop/src/core/iTextSharp/text/pdf/PdfStamperImp.cs#L1428
virtual public IList GetFieldPositions(String name)
https://github.com/itext/itextsharp/blob/develop/src/core/iTextSharp/text/pdf/AcroFields.cs#L1639
有人知道这是为什么以及如何解决这个问题吗?我基本上需要更新添加的注释的位置,并运行 iText 在首次将其添加为注释时所做的相同转换。我可以自己进行此调整,但如果有干净的方法,我不希望这样做。
我的尝试是
- 添加注释
- 直接更新注解矩形
- 获取注释的字段位置
- 使用从调用 GetFieldPositions 转换的坐标重新设置字段的矩形
这对于 180 度的页面旋转非常有效,但 90 和 270 则不起作用,因为转换是翻转的。
【问题讨论】:
-
你能通过提供一些示例代码来解释一下吗?
-
我添加了指向 itextsharp 源的链接,它在添加注释时转换坐标,然后获取字段位置。我真正想做的是更新字段的位置,并让 itextsharp 进行与最初添加注释时相同的矩形调整:github.com/itext/itextsharp/blob/develop/src/core/iTextSharp/…
-
我看到您添加了指向现有 iTextSharp 代码的链接。我没有(并且仍然不)理解的是您期望的行为。我希望我要求的示例代码可以证明这一点。
-
大概我想在旋转的页面上添加注释,稍后更新注释的位置,让它看起来不旋转。我将添加一个粗略的示例,但我正在寻找类似于 UpdateAnnotation() 的东西,它会采用一个矩形,然后在这里运行完全相同的 case 语句:github.com/itext/itextsharp/blob/develop/src/core/iTextSharp/…
-
我认为这是大致相同的问题:stackoverflow.com/questions/40878364/…,我想在更新注释的位置时简单地进行相同的旋转调整,就像它最初添加到页面时发生的那样,但是没有进行任何调整,因为我只是更新了注释的矩形。