0

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

TrimBox:           56.69    56.69  1040.31   751.18

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

显然,这个答案在排字机中非常有名,以至于到目前为止我在任何地方都找不到明确的拼写。

4

3 回答 3

4

丹尼尔,由于左下角是坐标系的原点,只要 TrimBox 的左下角位于原点(也就是说,当 (x1,y1) = (0,0)) 时。

顺便说一句,花了一些时间才发现使用的单位是点——在 PDF 规范文档中我可以找到并不清楚。显然,它不是物理学家写的。http://en.wikipedia.org/wiki/Point_(排版)

于 2010-10-22T19:23:40.773 回答
2

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

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

坐标值称为点,默认情况下 1 点等于 1/72 英寸。然而,这也不应该被依赖,因为每个页面都可以定义一个自定义UserUnit(从 PDF 1.6 开始),如PDF 参考手册中所述。

于 2021-09-06T18:34:00.123 回答
0

经过一些额外的修补,我实际上找到了我的问题的两个答案。就 pyPDF 源而言,四个框坐标应该读作 (x1, y1, x2, y2),其中前两个代表左下角,后两个代表右上角。

但是,当我将坐标解释为 (x, y, w, h) 时,在 PDF 的 TrimBox 内绘图工作得非常好,其中 (x, y) 是左上角, (w, h) 是矩形的宽度和高度源于那里。

所以,我可能把第一个解释弄错了,但至少第二个对我有用。

于 2010-02-24T08:55:10.133 回答