创建PDF文档的多种方式

在现代软件开发中,生成PDF文档是一个常见的需求。TallPDF.NET是一个强大的库,它允许开发者以编程方式或通过XML来构建PDF文档。本文将介绍如何使用TallPDF.NET来创建PDF文档,并展示一些示例代码。

文档对象模型

TallPDF.NET的文档对象模型(DOM)可以以编程方式构建,也可以从XML中构建。如果从XML创建,可以使用XSL来将任何XML转换为TallPDF.NET兼容的XML。

TallPDF.NET类库包括诸如Document、Section、Footer和Paragraph等类。以下是完整的文档:

以下图表展示了如何从布局对象构建PDF文档:

编程创建PDF

以下是一个创建PDF的“Hello world!”示例:

C# // 创建一个带有单个部分的新文档 Document document = new Document(); Section section = document.Sections.Add(); document.Sections.Add(section); // 向部分添加一个新的文本段落 TextParagraph textParagraph = new TextParagraph(); section.Paragraphs.Add(textParagraph); // 创建一个片段,设置一些文本并将其添加到段落 Fragment fragment = new Fragment(); fragment.Text = "Hello world!"; textParagraph.Fragments.Add(fragment); using (FileStream file = new FileStream("out1.pdf", FileMode.Create)) { document.Write(file); }

尽管这看起来像是为“Hello world!”编写了很多代码,但其灵活性在构建更复杂的文档时非常有用。

TallPDF.NET的5.0版本包括了iOS和Android的Xamarin版本。第一个版本已经可用。如果感兴趣,可以加入beta计划。

从XML创建PDF

如果熟悉XAML,那么就知道XAML是一种指定如何实例化对象以及如何分配属性的方法。使用TallPDF.NET从XML创建PDF的工作方式类似。顺便说一下,在2002年实现了这种方法,比2008年最初发布的XAML早得多。

以下是在XML中指定的与“Hello world!”相同的例子:

XML <document xmlns="http://www.tallcomponents.com/schemas/tallpdf/v3"> <section> <paragraph type="textparagraph"> <fragment>Hello World</fragment> </paragraph> </section> </document>

以下是将此XML转换为PDF的代码:

C# // 从XML创建新文档 Document document = new Document(); document.Read("helloworld.xml"); using (FileStream file = new FileStream("out2.pdf", FileMode.Create)) { document.Write(file); }

从XML和XSL创建PDF

考虑以下简单的XML文档,描述了两个客户:

XML <?xml version="1.0" encoding="utf-8"?> <Customers> <Customer id="1"> <Name>Chris Sharp</Name> </Customer> <Customer id="2"> <Name>Mike Jones</Name> </Customer> </Customers>

显然,这个文档不能直接转换为PDF,因为它不包含XML元素到布局元素的映射。为此,编写了一个XSL,将此XML转换为TalPDF.NET兼容的XML:

XML <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.tallcomponents.com/schemas/tallpdf/v3"> <xsl:output method="xml" encoding="utf-8"/> <xsl:template match="/"> <document> <section> <paragraph type="textparagraph"> <fragment font="helveticabold" fontsize="14">Simple XSL Transformation</fragment> </paragraph> <xsl:apply-templates select="/Customers/Customer"/> </section> </document> </xsl:template> <xsl:template match="/Customers/Customer"> <paragraph type="textparagraph"> <fragment font="helveticabold" fontsize="10"> <xsl:value-of select="@id"/>. </fragment> <fragment font="helvetica" fontsize="10"> <xsl:value-of select="Name"/> </fragment> </paragraph> </xsl:template> </xsl:stylesheet>

以下是使用XSL将客户XML转换为PDF的代码:

C# // 加载XML XmlReader xml = new XmlTextReader("data.xml"); // 加载XSL XslCompiledTransform xsl = new XslCompiledTransform(); xsl.Load("transform.xslt"); // 转换 Stream converted = new MemoryStream(); xsl.Transform(xml, null, converted); converted.Position = 0; // 从转换后的XML构建PDF Document document = new Document(); XmlReader reader = new XmlTextReader(converted); document.Read(reader); using (FileStream file = new FileStream("out3.pdf", FileMode.Create)) { document.Write(file); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485