文字方向和页面旋转调整坐标之间有什么区别?

时间:2019-07-17 01:30:52

标签: pdfbox

由TextPosition类引用的“页面旋转调整坐标”和“文本方向调整坐标”之间有什么区别?视觉上的解释可能是最好的。

1 个答案:

答案 0 :(得分:1)

PDFBox文本提取功能可轻松访问这两个坐标系中文本字形的坐标:

页面旋转调整坐标

每个PDF页面可以具有 Rotate 属性,允许的值为0、90、180和270。PDF查看器通常获取页面内容并以该角度旋转显示。例如。您查看的横向页面实际上可能具有横向格式页面大小,或者实际上可能具有纵向格式页面大小,并且 Rotate 值90或270。

页面旋转调整坐标系是根据页面的 Rotate 值考虑要旋转页面的坐标系,其原点位于页面的左上角x坐标向右增加,y坐标向下增加。

文本方向调整的坐标

每个文本字形都可以以任意角度绘制(借助当前的变换矩阵和文本矩阵)。

给定文本字形的经文本方向调整的坐标系是考虑到要旋转页面(以90°的倍数)以便将文本字形垂直或至少垂直绘制的坐标系。 (因为可以以任意角度绘制字形,而不仅是90°的倍数),其原点位于页面的左上角,x坐标向右增加,y坐标向下增加。

比较

通常对文档页面上的文本进行排列,以便最终(考虑页面旋转)将其垂直显示。因此,通常在这两个坐标系中每个字形的坐标都将重合(或至少接近-因为它们的计算方式不同,由于float不准确,因此可能会有小的差异)。

对于最终未垂直显示的文本(例如,考虑以窄角度绘制窄表列的标题的情况),您可能更喜欢一种或另一种系统,具体取决于您要实现的目标:

  • 如果要比较任意字形相对于彼此的位置,显然需要一个公共坐标系,因此无法使用文本方向调整的坐标;对于这种情况,PDFBox选择了页面旋转调整的坐标系。

  • 如果要检查两个具有相同文本绘制方向的字形是否彼此相邻(即可能构成一个单词的一部分),则最好测试它们的文本方向调整坐标。

(实际上,根据我的经验,这两个坐标系都不是文本提取后处理所需的坐标系;通常,您需要在未旋转的默认PDF页面用户空间坐标系中的坐标,例如将其与某些标记注释叠加。他们必须从关联的文本矩阵中获取翻译值,然后对其进行反规范化...)