我已按照此示例Create landscape PDF进行操作,但效果很好。我现在想将0,0引用从左下角移动到左上角。为此,我需要更改contentStream.transform(new Matrix(0, 1, -1, 0, pageWidth, 0));
。我已经查看了PDFBox Matrix的文档,其中列出了Matrix
的参数,如下所示。
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方向上移动参考。我在哪里可以找到描述参数的文档?
答案 0 :(得分: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 c d e f ]。
坐标转换应表示为矩阵乘法:
(第8.3.4节 - 转换矩阵)
因此,当当前设置转换[ abcdef ]并使用坐标( x,y )绘制某些内容时,它将出现在坐标处( x& #39;,y' )其中
常用的转换类型有:
翻译应指定为[1 0 0 1 t x t y ],其中 t x 和 t y 应分别是在水平和垂直维度上平移坐标系原点的距离。
缩放应通过[ s x 0 0 s y 0 0]获得。这会缩放坐标,以便新坐标系的水平和垂直尺寸中的1个单位与 s x 和 s y <的尺寸相同/ sub> 分别在前一个坐标系中。
旋转应由[cos( q )sin( q ) - sin( q )cos( q )0 0],具有逆时针旋转坐标系轴 q 的效果。
歪斜应由[1 tan( a )tan( b )1 0 0]指定,它会扭曲 x 以角度 a 和 y 轴的轴 b 。
(第8.3.3节 - 常见转换)
如果您想要组合转换,只需按适当顺序乘以矩阵即可。