我正在使用 itextpdf 将一些 pdf 合并为一个。itextpdf pdfcontentbyte addtemplate 的参数是什么意思,没有文档可以描述。
public void addTemplate(PdfTemplate template,
double a, double b, double c, double d, double e, double f)
Run Code Online (Sandbox Code Playgroud)
六个值a、b、c、d、e和f是具有三行三列的矩阵的元素。
您可以使用此矩阵来表示二维系统中的变换。
执行这个乘法结果是:
x' = a * x + c * y + e
y' = b * x + d * y + f
Run Code Online (Sandbox Code Playgroud)
矩阵中的第三列是固定的:您在二维中工作,因此您不需要计算新的 z 坐标。
在高中学习解析几何时,您可能已经学会了如何将变换应用于对象。在 PDF 中,我们使用了一种稍微不同的方法:我们不变换对象,而是变换坐标系。
该e和f值可用于翻译。的a,b,c,和d的值可用于旋转和/或缩放操作。
默认情况下,当前转换矩阵 (CTM) 为:
使用该addTemplate()方法,您可以将 Form XObject 添加到画布并使用e,定义位置f,例如:
canvas.addTemplate(template, 36, 36);
Run Code Online (Sandbox Code Playgroud)
这将template在坐标 x = 36 处添加;y = 36。
通过引入a、b、c和d,您还可以旋转和/或缩放template。
更新:如评论中所述,AffineTransform如果您不喜欢转换矩阵的代数,您可能希望使用接受参数的重载方法。
| 归档时间: |
|
| 查看次数: |
10032 次 |
| 最近记录: |