根据 PDF 链接的矩形计算的负高度



我正在从PDF文档中提取链接和它们的位置。

每个链接都有一个边界矩形。

<</A 169 0 R/BS<</S/S/Type/Border/W 0>>/Border[0 0 0]/H/N/Rect[97.0153 116.556 185.543 21.5209]/Subtype/Link/Type/Annot>>

让我们看看Rect[97.0153 116.556 185.543 21.5209](我从我的文件中复制了它)。

Rectangle是一个包含四个数字的数组,在默认的用户空间单位中给出左、下、右、上边缘的坐标。

我们有left = 97.0153,bottom = 116.556,right = 185.543,top = 21.5209

据我所知,PDF的用户空间是一个规则的笛卡尔坐标系。因此,我希望矩形的上边缘大于下边缘,所以当我想计算矩形的高度时,我使用公式height = top - bottom。对于特定的PDF文档height = 21.5209 - 116.556 = -95.036,即高度是负的,我做错了什么。

我一定是错过了什么,做了错误的假设。有人能给点建议吗?

关于你的性格

Rectangle是一个数组,包含四个默认用户空间单位的数字,分别表示左、下、右、上边缘的坐标。

你在评论中说

我从BBox还有条目描述。BBox被声明为具有类型rectangle,并提供了ifrectangle的描述。PDF参考资料,第三版,p. 616.

但是BBox条目描述不是定义矩形类型。定义在第101页:

3.8.3矩形

矩形用于描述页面上的位置和各种对象(如字体)的边界框。矩形被写成由四个数字组成的数组,这些数字表示一对对角线相对的角的坐标。通常,数组的形式为

(ll子>将<子>你<子>x你的<子>]

指定矩形的左下x、左下y、右上x和右上y坐标,按此顺序。

注意:虽然矩形通常由其左下角和右上角指定,但也可以指定任意两个对角线相对的角。处理PDF的应用程序应该准备好在需要特定角的情况下规范化这些矩形。

因此,您为BBox找到的特性条目使成为BBox所需的典型格式条目。然而,其他矩形可能仍然使用非典型形式。因此,您需要规范化数组(或者在您的情况下,将该差值的绝对值作为高度)。 作为题外话,我不会指望BBox条目也必须总是以典型的形式出现。始终准备好规范化矩形数组。

这就是说,你应该帮自己一个忙,不要再使用2001年的旧PDF参考,而是使用指定PDF的ISO规范,即ISO 32000-1或ISO 32000-2。ISO 32000-1已于2008年发布。ISO 32000-2已于2017年发布,并于2020年更新。

如果你不想在规范上花钱,Adobe已经在他们的网站上分享了ISO 32000-1的副本,其中删除了ISO页面标题。要找到它,只需搜索"pdf32000";目前在https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf

PDF 1.4参考文献仍应使用的唯一情况是在基于该参考文献的规范上下文中,例如PDF/A-1。否则PDF参考文献是过时的,并且在Adobe PDF架构师Leonard Rosenthol之前已经被称为,本质上是不规范的

最新更新