更改 PDF 坐标系

Change PDF coordinate system

我想改变PDF坐标系来改变原点(0,0) -> 从左下到左上。因此,例如,当我将在 x=5 y=10 的位置写入文本时,它将以从左数 10 点和从上数 10 点(而不是从下数)写入。

我已经阅读了 PDF specification,它谈到了 CropBox、旋转、坐标变换('cm' 运算符)...但是我做不到。

注意。在 eps 中,我使用平移和缩放做了类似的事情:

% Rescaling and translate
0 95<-(height of the page) translate
1 -1 scale

任何帮助将不胜感激!

PDF 不是 PostScript 之类的编程语言,但与示例中的原则完全相同的原则也适用于此。您将设置一个转换矩阵

,而不是通过不同的 PostScript 调用("translate" 和 "scale")
1 0 0 -1 0 95 cm

这样的效果是 X 轴保持不变,Y 轴反转并且坐标系的原点移动,因此与您的 EPS 示例中发生的情况完全相同。

您可以更改页面开头的变换矩阵,也可以更改每个单独元素或元素组的变换矩阵。

请记住,"cm" 运算符总是与现有的转换矩阵连接,它不会 设置 它。实际上没有方法来设置矩阵。

因此,在几乎所有 PDF 文件中,您都会发现像

这样的结构
q
1 0 0 -1 0 95 cm
...
Q

这将保存当前图形状态;改变矩阵,然后做你想做的任何操作,最后将矩阵替换为原始值。

此外,如 Jongware 和 mkl 的评论所述;如果像这样翻转坐标系,很可能还需要翻转其他矩阵,例如文本转换矩阵,以确保绘制的对象是正面朝上的。