摘要
在C#开发中,生成和编辑PDF文档是一个常见的需求,而PdfSharp是一个流行的库,可用于创建、编辑和操作PDF文件。
正文
首先,你需要在你的C#项目中安装PdfSharp库。你可以使用NuGet包管理器来安装它。
1.创建一个pdf文件
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
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
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");
}
3.合并多个Pdf
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");
}
该文章在 2024/6/1 15:27:28 编辑过