pdf - 更改 PDF 坐标系

标签 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

任何帮助将不胜感激!

最佳答案

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 在评论中所述;如果像这样翻转坐标系,很可能还需要翻转其他矩阵,例如文本转换矩阵,以确保绘制的对象正面朝上。

关于pdf - 更改 PDF 坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649952/

相关文章:

ios - Objective-C NSData 返回 nil

pdf - 将多页 PDF 转换为多页 TIFF 的工具

java - ICEPDF 隐藏 pagenav 、最后一页和首页

ios - NSString drawInRect :withAttributes: is not drawing text with greater width than the rect in iOS 7. 0.3

android - 通过 Intent.ACTION_VIEW 查看 pdf 后应用程序关闭后退按钮

java - java中的条形码

java - 如何让pdf图像适合整个屏幕android

python - 如何生成从赤道到 AltAz 的坐标转换表?

algorithm - 这种将坐标映射到数字的算法叫什么?

coordinates - 将本地平面坐标转换为 WGS84 的概述