更改PDF坐标系

时间:2015-11-11 11:50:37

标签: pdf pdf-generation coordinate-systems

我想更改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

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:4)

PDF不是像PostScript这样的编程语言,但与您的示例中的原理完全相同,也适用于此处。您可以设置转换矩阵,而不是通过不同的PostScript调用(&#34;翻译&#34;和&#34;比例&#34;),

1 0 0 -1 0 95 cm

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

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

请记住&#34; cm&#34;运算符总是与现有的转换矩阵连接,它不会设置它。实际上没有方式设置矩阵。

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

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

这样可以保存当前的图形状态;更改矩阵,然后执行您想要的任何操作,最后将矩阵替换为原始值。

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