在 iTextSharp 中,可以更改 PdfTemplate 对象的宽度和高度。我们可以对 iText7 PdfCanvas/Xobject 做同样的事情吗?

In iTextSharp it is possible change the width & height of a PdfTemplate object. Can we do the same to an iText7 PdfCanvas/Xobject?

我正在将一些 iTextSharp-heavy VB.net 代码转换为 iText7,旧的 iTextSharp 代码的一部分会更改 Pdftemplate 对象的宽度和高度以适应给定的情况。

现在,在 iText7 中,我有一个 PdfCanvas 对象绑定到一个 PdfFormXObject,其作用与以前的 PdfTemplate 对象相同。到目前为止,一切都很好。

但是,唉,我要处理这个旧代码:

Dim oObjectTemplate As PdfTemplate = oContainerTemplate
dTemplateSizeIncrease = oObject.FontSize * 4
oObjectTemplate.Width += CSng(dTemplateSizeIncrease)
oObjectTemplate.Height += CSng(dTemplateSizeIncrease)

我尝试查看强大的文档来寻找答案,但在将 iTextSharp 转换为 iText7 方面几乎找不到任何智慧。

到代码中的这一点,对象模板(及其 iText7 副本)已经完成了一些逻辑并且已经设置了某些值。我并不急于必须创建一个新实例来适应大小变化。

所以...有没有办法在制作 iText7 PdfFormXObject 后调整它的大小?

iText 5 仅仅更改了 Form XObject 的 bbox,因此完全可以在 iText 7 中做同样的事情——只需将修改后的 bbox 设置为 PdfFormXObject 实例。示例代码(在 Java 中,但很容易转换为 C# 或 VB.NET):

Rectangle bbox = formXObject.getBBox().toRectangle();
bbox.setHeight(bbox.getHeight() + 100);
bbox.setWidth(bbox.getWidth() + 100);
formXObject.setBBox(new PdfArray(bbox));