[英]Converting iTextSharp to iText7: How do I re-create iTextSharp's nested PdfDocument objects in iText7?
我正在vb.net中将iText5的繁重实现转换为iText7。 多亏了完整的API重写,我没有丢失的头发现在变成了灰色。
因此,在许多情况下,OLD iTextSharp代码将执行以下操作:
... 等等。
现在,在iText7中,我可以创建一个PdfCanvas对象,该对象可以使用许多与iTextSharp等相同的绘图函数进行绘制。但是,不能以与iTextSharp相同的方式将PdfCanvas添加到另一个PdfCanvas。
我看了教程,但解决方案似乎并不明显。 我知道可以做到,但是我不确定如何做到这一点。
我尝试使用Xobjects,但这有点限制。 可以将PdfCanvas转换为PdfFormXObject吗?
您不能转换PdfCanvas
成PdfFormXObject
,但你可以使用PdfCanvas
上绘制PdfFormXObject
直接。 事实上, PdfFormXObject
类iText 7
是直接替代PdfTemplate
类中的iText 5,它只是具有不同的名称,其更靠近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
轻松地将一个对象添加到另一个对象中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.