PDFSharp 简介

PDFSharp 是一个基于.NET的开源库,专门用于处理PDF文档。

它支持从零开始创建PDF文件,也可以对现有PDF文件进行修改。

PDFSharp的特点在于其简洁的API设计和强大的布局引擎,使我们能够轻松地实现复杂的PDF文档生成任务。

另外,PDFSharp还有一个姊妹项目——MigraDoc Foundation,专注于文档对象模型的构建,并能将文档渲染为PDF或RTF格式。

主要功能

创建PDF:无需模板,直接从头开始构建PDF文档。

内容插入:支持文本、图像、表格和图形等元素的添加。

格式化:提供字体选择、颜色设定和布局调整等功能,实现高度定制化。

合并与拆分:可以合并多个PDF文件或拆分单个PDF文件。

加密与解密:设置安全选项,保护PDF内容不被非法访问。

优势特点

简单易用:简洁的API设计,便于快速上手和使用。

全面功能:涵盖创建、编辑、合并、拆分、转换和加密等多种操作,满足不同需求。

应用场景

PDFSharp 广泛应用于生成报告、创建电子书、生成发票和合同等。无论是个人用户还是企业用户,都能从中受益。

PDFsharp示例

下面将详细解释示例中的所有代码,分为两个部分:创建文档和渲染文档。

设置字体解析器

为了确保文档所需的所有字体都能被解析,在使用MigraDoc的核心开发时(请参阅选择PDFsharp开发)需要设置字体解析器:


c#

代码解读

复制代码

// 核心构建不使用Windows字体, // 因此需要设置一个处理样本所需字体的FontResolver。 GlobalFontSettings.FontResolver = new SamplesFontResolver();

对于自己的项目,应该创建一个支持所需字体的自定义字体解析器。

请注意,SamplesFontResolver从PDFsharp.Samples特定的资源文件夹加载字体,而需要以一种不需要依赖仓库的方式提供字体文件。

创建文档

示例执行其 CreateDocument函数,其中包含以下代码:


c#

代码解读

复制代码

//创建一个新的MigraDoc文档。 var document = new Document(); //向文档添加一个节点。 var section = document.AddSection();

创建了一个MigraDoc文档和一个节点,因为文档的所有内容都组织在节点中。

接下来,继续添加以下代码:


c#

代码解读

复制代码

// 节点中添加一个段落。 var paragraph = section.AddParagraph(); // 设置字体颜色。 paragraph.Format.Font.Color = Colors.DarkBlue; // 向段落添加一些文本。 paragraph.AddFormattedText("Hello, World!", TextFormat.Bold);

向节点中添加了一个段落,并将整个段落的字体颜色设置为深蓝色。

然后,添加了带有"Hello, World!"内容并设置为粗体的格式化文本。

之后,创建并填充页脚:


c#

代码解读

复制代码

// 创建主要页脚。 var footer = section.Footers.Primary; // 向页脚添加内容。 paragraph = footer.AddParagraph(); paragraph.Add(new DateField { Format = "yyyy/MM/dd HH:mm:ss" }); paragraph.Format.Alignment = ParagraphAlignment.Center;

主要页脚添加了一个段落,并在其中添加了日期字段,同时将整个段落设置为中心对齐。

最后,向节点中添加图像:


c#

代码解读

复制代码

// 添加MigraDoc标志。 string imagePath = IOUtility.GetAssetsPath(@"migradoc/images/MigraDoc-128x128.png")!; document.LastSection.AddImage(imagePath);

GetAssetsPath调用仅获取图像路径,重要的是第二行,它将图像添加到节中。

在返回CreateDocument后,修改Normal样式:


c#

代码解读

复制代码

var style = document.Styles[StyleNames.Normal]!; style.Font.Name = "Arial";

Normal样式是所有其他段落样式的默认样式。因此,Arial字体将继承到文档中的所有对象,除非被覆盖。

渲染文档

当文档创建完成后,开始渲染。

首先,创建PdfDocumentRenderer实例:


c#

代码解读

复制代码

// 创建一个用于MigraDoc文档的渲染器。 var pdfRenderer = new PdfDocumentRenderer { // 将MigraDoc文档与渲染器关联。 Document = document, PdfDocument = { // 在渲染MigraDoc文档之前更改一些设置。 PageLayout = PdfPageLayout.SinglePage, ViewerPreferences = { FitWindow = true } } };

创建了PdfDocumentRenderer实例,将其与创建的文档关联,并设置一些PDF文件的属性。

然后渲染并保存文档:


c#

代码解读

复制代码

// 布局并渲染文档为PDF。 pdfRenderer.RenderDocument(); // 保存文档... var filename = PdfFileUtility.GetTempPdfFullFileName("samples-MigraDoc/HelloWorldMigraDoc"); pdfRenderer.PdfDocument.Save(filename); // ...并在PDF查看器中打开。 PdfFileUtility.ShowDocument(filename);

RenderDocument 将 MigraDoc文档实例渲染为PDFsharp的PdfDocument实例。

Save方法将PDFsharp文档保存到指定文件中。

总结

以上仅展示了PDFSharp库的部分功能。更多实用特性和详细信息,请大家访问项目地址。

希望通过本文能为.NET PDF文档处理和开发方面提供有价值的参考。欢迎在评论区留言交流,分享您的宝贵经验和建议。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐