Vb.net 将iTextSharp转换为iText7:如何重新创建iTextSharp';iText7中的嵌套PdfDocument对象?
我正在vb.net中将iText5的一个繁重实现转换为iText7。由于API的完全重写,我没有丢失的头发现在是灰色的 因此,在许多情况下,旧的iTextSharp代码将执行以下操作:Vb.net 将iTextSharp转换为iText7:如何重新创建iTextSharp';iText7中的嵌套PdfDocument对象?,vb.net,itext,itext7,Vb.net,Itext,Itext7,我正在vb.net中将iText5的一个繁重实现转换为iText7。由于API的完全重写,我没有丢失的头发现在是灰色的 因此,在许多情况下,旧的iTextSharp代码将执行以下操作: 创建一个PdfTemplate对象 对其进行调整(旋转、绘制等) 创建另一个PdfTemplate对象B 使用AddTemplate将PdfTemplate对象A添加到PdfTemplate对象B 为PdfTemplate B做其他事情(添加段落或其他内容) 创建新的PdfTemplate对象C 使用AddTe
- 创建一个PdfTemplate对象
- 对其进行调整(旋转、绘制等)
- 创建另一个PdfTemplate对象B
- 使用AddTemplate将PdfTemplate对象A添加到PdfTemplate对象B
- 为PdfTemplate B做其他事情(添加段落或其他内容)
- 创建新的PdfTemplate对象C
- 使用AddTemplate将Pdftemplate对象B(包含Pdftemplate对象A)添加到Pdftemplate对象C
我尝试过使用XObject,但这有点限制;我可以将PdfCanvas转换为PdfFormXObject吗?您不能将
PdfCanvas
转换为PdfFormXObject
,但可以使用PdfCanvas
直接利用PdfFormXObject
。事实上,iText 7
中的PdfFormXObject
类是iText 5中的PdfTemplate
类的直接替代,它只是有不同的名称,更接近于PDF规范术语
下面是一个示例,说明如何创建一个PdfFormXObject
,通过PdfCanvas
在其上绘制一些东西,然后再次使用PdfCanvas
将此对象添加到页面:
//Create form XObject and flush to document.
PdfFormXObject form = new PdfFormXObject(new Rectangle(0, 0, 50, 50));
PdfCanvas canvas = new PdfCanvas(form, document);
canvas.rectangle(10, 10, 30, 30);
canvas.fill();
canvas.release();
//Create page1 and add forms to the page.
PdfPage page1 = document.addNewPage();
canvas = new PdfCanvas(page1);
canvas.addXObject(form, 0, 0).addXObject(form, 50, 0).addXObject(form, 0, 50).addXObject(form, 50, 50);
canvas.release();
如您所见,
PdfCanvas
是一种抽象,可用于在页面或PdfFormXObject
上绘制,因此您可以使用PdfCanvas
轻松地将对象添加到另一个对象中。谢谢!这确实有助于推动事情向前发展。