itextpdf pdfcontentbyte addtemplate 的参数是什么意思

din*_*jsh 3 itext

我正在使用 itextpdf 将一些 pdf 合并为一个。itextpdf pdfcontentbyte addtemplate 的参数是什么意思,没有文档可以描述。

Bru*_*gie 8

public void addTemplate(PdfTemplate template,
    double a, double b, double c, double d, double e, double f)
Run Code Online (Sandbox Code Playgroud)

六个值abcdef是具有三行三列的矩阵的元素。

在此处输入图片说明

您可以使用此矩阵来表示二维系统中的变换。

在此处输入图片说明

执行这个乘法结果是:

x' = a * x + c * y + e
y' = b * x + d * y + f
Run Code Online (Sandbox Code Playgroud)

矩阵中的第三列是固定的:您在二维中工作,因此您不需要计算新的 z 坐标。

在高中学习解析几何时,您可能已经学会了如何将变换应用于对象。在 PDF 中,我们使用了一种稍微不同的方法:我们不变换对象,而是变换坐标系。

ef值可用于翻译。的abc,和d的值可用于旋转和/或缩放操作。

在此处输入图片说明

默认情况下,当前转换矩阵 (CTM) 为:

在此处输入图片说明

使用该addTemplate()方法,您可以将 Form XObject 添加到画布并使用e,定义位置f,例如:

canvas.addTemplate(template, 36, 36);
Run Code Online (Sandbox Code Playgroud)

这将template在坐标 x = 36 处添加;y = 36。

通过引入abcd,您还可以旋转和/或缩放template

更新:如评论中所述,AffineTransform如果您不喜欢转换矩阵的代数,您可能希望使用接受参数的重载方法。