2017-01-23 64 views
0

我遵循这个例子Create landscape PDF,它工作正常。现在我想将0,0参考从左下角移到左上角。要做到这一点,我需要更改contentStream.transform(new Matrix(0, 1, -1, 0, pageWidth, 0));。我查看了PDFBox Matrix的文档,其中指定了Matrix的参数,如下所示。在PDFBox矩阵中,参数意味着什么

public Matrix(float a, 
     float b, 
     float c, 
     float d, 
     float e, 
     float f) 
Creates a matrix with the given 6 elements. 

但它并没有告诉我6个不同的参数/元素做什么。我想人们已经做了旋转和两个在X和Y方向移动参考。我在哪里可以找到描述参数的文档?

回答

4

我在哪里可以找到描述参数的文档?

寻找该文件是PDF规范(ISO 32000-1)在结合一些线性代数101

在PDF的转换矩阵,由六个数字指定,通常在包含六个元素的数组的形式。在其最一般的形式中,该阵列表示为[a b c d e f];它可以表示从一个坐标系到另一个坐标系的任何线性变换。

(8.3.3节 - 通用转换)

含义此后不久解释说:

PDF代表二维空间坐标。在这样的空间中的点(x,y)可以以矢量形式表示为[x y 1]。该矢量(1)的常数第三个元素是必需的,以便该矢量可以在下面描述的计算中与3乘3矩阵一起使用。

两个坐标系可以通过写为一个3×3变换矩阵来表示之间的变换如下:

a b 0 c d 0 e f 1

因为变换矩阵只具有6可以改变的,在大多数元素PDF中的情况应指定为六元素阵列[abcdef]。

坐标转换应被表示为矩阵乘法:

transformation

(8.3节。4 - 变换矩阵)

因此,当变换[ABCDEF]当前设置和您使用坐标画点什么(X,Y),它会出现在坐标(X 'Y' )其中

transformation as coordinate-wise equations

常用变换类型是:

  • 翻译应被指定为[1 0 0 1 Xÿ],其中 Xý应翻译的原点的距离坐标系分别在水平和垂直维度上。

  • 缩放应由[小号 X 小号ý 0 0]来获得。这个缩放坐标,以便1个单元在新的坐标系的水平和垂直尺寸,其大小与相同小号 X小号ý单位,分别在前面的坐标系。

  • 轮作应由[COS(q)SIN(q)-sin(q)COS(q)0 0],其具有旋转的坐标系轴的作用产生以一个角度q逆时针方向。

  • 斜交应由[1黄褐色(一个)黄褐色(b)1 0 0],它以角度一个偏斜的X轴指定的y轴由一个角度b

(8.3.3节 - 通用转换)

如果你想有一个组合变换,简单地乘以矩阵中相应的订单。

+0

感谢您提供非常详细的答案。最后,我知道我应该使用我在大学学到的线性代数:)。 – g3blv