g3b*_*blv 1 java apache pdf pdf-generation pdfbox
我已经按照这个示例创建横向 PDF,它工作得很好。我现在想将 0,0 参考从左下角移动到左上角。为此,我需要改变contentStream.transform(new Matrix(0, 1, -1, 0, pageWidth, 0));。我查看了PDFBox MatrixMatrix的文档,其中指定了如下参数。
public Matrix(float a,
float b,
float c,
float d,
float e,
float f)
Creates a matrix with the given 6 elements.
Run Code Online (Sandbox Code Playgroud)
但它没有告诉我 6 个不同的参数/元素的作用。我猜其中一个与旋转有关,两个与 X 和 Y 方向上移动参考有关。我在哪里可以找到描述这些论点的文档?
我在哪里可以找到描述这些论点的文档?
要查找的文档是 PDF 规范 (ISO 32000-1) 以及一些线性代数 101。
PDF中的变换矩阵应由六个数字指定,通常采用包含六个元素的数组的形式。在其最通用的形式中,该数组表示为 [ abcdef ];它可以表示从一个坐标系到另一个坐标系的任何线性变换。
(第 8.3.3 节 - 常见转换)
随后不久解释了其含义:
PDF 表示二维空间中的坐标。这样的空间中的点( x,y )可以用向量形式表示为[ xy 1]。需要该向量的第三个常数元素 (1),以便该向量可以在下面描述的计算中与 3×3 矩阵一起使用。
两个坐标系之间的变换可以用如下所示的3×3变换矩阵来表示:
由于变换矩阵只有六个可以更改的元素,因此在 PDF 中大多数情况下应将其指定为六元素数组 [ abcdef ]。
坐标变换应表示为矩阵乘法:
(第 8.3.4 节 - 变换矩阵)
因此,当当前设置了变换 [ abcdef ] 并且您使用坐标 ( x, y ) 绘制某些内容时,它将出现在坐标 ( x', y' ) 处,其中
常用的转换类型有:
平移应指定为 [1 0 0 1 t x t y ],其中t x和t y分别是在水平和垂直维度上平移坐标系原点的距离。
缩放比例应通过 [ s x 0 0 s y 0 0] 获得。这会缩放坐标,以便新坐标系的水平和垂直维度中的 1 个单位分别与先前坐标系中的s x和sy单位大小相同。
旋转应由 [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 节 - 常见转换)
如果您想要组合变换,只需按适当的顺序乘以矩阵即可。
| 归档时间: |
|
| 查看次数: |
2744 次 |
| 最近记录: |