PDF 框坐标是相对坐标还是绝对坐标?

Dan*_*ner 0 pdf pdf-generation pypdf

我想使用 pyPDF 以编程方式编辑 PDF。目前,我正在努力解释各种 PDF 框(TrimBox、MediaBox 等)的尺寸。每个盒子有四个维度存储为四元组,例如:

TrimBox:           56.69    56.69  1040.31   751.18
Run Code Online (Sandbox Code Playgroud)

根据 PDF 规范,这些应该描述一个矩形,并且当然 (56.69, 56.69) 确定了该矩形的左上角。然而,(1040.31, 751.18) 是被解释为这个矩形的右下角,还是相对于左上角的向量?

显然,这个答案在排字工中是如此众所周知,以至于到目前为止我在任何地方都找不到明确的拼写。

mar*_*004 5

正如 Mark Storer 和其他人正确评论的那样,四个框值应解释为(left start, bottom start, right end, top end),因为 PDF 格式使用绝对坐标。(MediaBox[0], MediaBox[1])盒子的左下角和(MediaBox[2] and MediaBox[3])右上角 也是如此。如果和包含值 0,MediaBox[2]MediaBox[3]仅表示宽度和高度,不应依赖该值。MediaBox[0]MediaBox[1]

此外,PDF 旋转会修改整个坐标系而不仅仅是页面,因此 PDF 框始终引用未旋转的页面。因此,如果旋转 90 度或 270 度,则需要交换宽度和高度才能获得盒子的视觉尺寸。

坐标值称为点,默认情况下 1 点相当于 1/72 英寸。但是,也不应依赖于此,因为每个页面都可以定义自定义UserUnit(自 PDF 1.6 起),如PDF 参考手册中所述。