.NET 免费开源强大的 PDF 类库(PDFSharp)
PDFSharp 是一个基于.NET的开源库,专门用于处理PDF文档。它支持从零开始创建PDF文件,也可以对现有PDF文件进行修改。PDFSharp的特点在于其简洁的API设计和强大的布局引擎,使我们能够轻松地实现复杂的PDF文档生成任务。另外,PDFSharp还有一个姊妹项目——MigraDoc Foundation,专注于文档对象模型的构建,并能将文档渲染为PDF或RTF格式。以上仅展示了PD
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文档处理和开发方面提供有价值的参考。欢迎在评论区留言交流,分享您的宝贵经验和建议。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)