我想在旋转的pdf(270度)中添加一个文本框。当我使用 GetPageSizeWithRotation(pageNum)的函数时,它返回一个位置不正确的矩形。因此,添加的文本框也处于不正确的位置。 我的问题如下图所示: 请建议我一些解决方案来准确获取PDF位置。谢谢!
答案 0 :(得分:0)
根据您的评论,您发现问题仅针对裁剪框与媒体框不同的网页发生。因此,您应该将计算基于裁剪框而不是媒体框
GetPageSizeWithRotation
基本上是这样实现的:
virtual public Rectangle GetPageSizeWithRotation(PdfDictionary page) {
Rectangle rect = GetPageSize(page);
int rotation = GetPageRotation(page);
while (rotation > 0) {
rect = rect.Rotate();
rotation -= 90;
}
return rect;
}
从此处调用的 GetPageSize(page)
基本上返回媒体框。
因此,你应该有基于裁剪框的模拟代码。
编辑 根据您的新结果,很明显问题不会出现 CropBox 条目,但更有可能与框的左下角不是坐标系的原点。
在这种情况下,盒子的旋转由iText(夏普)和Adobe Acrobat执行:
造成差异的原因:PDF规范描述了旋转条目,如下所示:
显示或打印时页面顺时针旋转的度数。
即。 旋转条目根本没有指定为更改坐标系的东西,而仅仅是改变输出方向的东西。因此,这些结果同样正确。
因此,要模拟Adobe Acrobat坐标转换,需要编写显式方法。通过这些示例结果,它应该易于实现。