编辑
2025-09-25
C#
00

目录

摘要
正文
1.创建一个pdf文件
2.添加图片到Pdf
3.合并多个Pdf

摘要


在C#开发中,生成和编辑PDF文档是一个常见的需求,而PdfSharp是一个流行的库,可用于创建、编辑和操作PDF文件。

正文


首先,你需要在你的C#项目中安装PdfSharp库。你可以使用NuGet包管理器来安装它。

image.png

1.创建一个pdf文件

image.png

C#
public Form1() { InitializeComponent(); //初使化字体 GlobalFontSettings.FontResolver = new FontProvider(); } private void btnCreatePdf_Click(object sender, EventArgs e) { // 创建一个新的PDF文档 PdfDocument document = new PdfDocument(); // 添加一个空白页面 PdfPage page = document.AddPage(); // 获取页面的绘图上下文 XGraphics gfx = XGraphics.FromPdfPage(page); // 添加文本到页面 XFont font = new XFont("Arial", 20, XFontStyleEx.Italic); XTextFormatter tf = new XTextFormatter(gfx); tf.DrawString("Hello, PdfSharp!", font, XBrushes.Black, new XRect(10, 10, page.Width, page.Height), XStringFormats.TopLeft); // 保存PDF文档到文件 document.Save("example-1.pdf"); }

创建一个Provider

C#
public class FontProvider: IFontResolver { public string DefaultFontName => throw new NotImplementedException(); public byte[] GetFont(string faceName) { using (var ms = new MemoryStream()) { using (var fs = File.Open(faceName, FileMode.Open)) { fs.CopyTo(ms); ms.Position = 0; return ms.ToArray(); } } } public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic) { if (familyName == "Arial") { if (isBold && isItalic) { return new FontResolverInfo("arial.ttf"); } else if (isBold) { return new FontResolverInfo("arial.ttf"); } else if (isItalic) { return new FontResolverInfo("arial.ttf"); } else { return new FontResolverInfo("arial.ttf"); } } return null; } }

2.添加图片到Pdf

C#
private void btnAddImg_Click(object sender, EventArgs e) { // 创建一个新的PDF文档 PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); // 添加图像到页面 XImage image = XImage.FromFile("feGsv0kJ6CEBng3.png"); gfx.DrawImage(image, 10, 10, 200, 100); // 保存PDF文档 document.Save("image_example-1.pdf"); }

image.png

3.合并多个Pdf

image.png

C#
private void btnMergePdf_Click(object sender, EventArgs e) { // 创建一个新的PDF文档 PdfDocument mergedDocument = new PdfDocument(); // 打开第一个PDF文档 PdfDocument firstDocument = PdfReader.Open("example-1.pdf", PdfDocumentOpenMode.Import); // 将第一个文档的页面添加到合并文档 foreach (PdfPage page in firstDocument.Pages) { mergedDocument.AddPage(page); } // 打开第二个PDF文档 PdfDocument secondDocument = PdfReader.Open("image_example-1.pdf", PdfDocumentOpenMode.Import); // 将第二个文档的页面添加到合并文档 foreach (PdfPage page in secondDocument.Pages) { mergedDocument.AddPage(page); } // 保存合并后的文档 mergedDocument.Save("merged_documents.pdf"); }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!