摘要
在C#開發(fā)中,生成和編輯PDF文檔是一個(gè)常見的需求,而PdfSharp是一個(gè)流行的庫,可用于創(chuàng)建、編輯和操作PDF文件。
正文
首先,你需要在你的C#項(xiàng)目中安裝PdfSharp庫。你可以使用NuGet包管理器來安裝它。
1.創(chuàng)建一個(gè)pdf文件
public Form1()
{
InitializeComponent();
//初使化字體
GlobalFontSettings.FontResolver = new FontProvider();
}
private void btnCreatePdf_Click(object sender, EventArgs e)
{
// 創(chuàng)建一個(gè)新的PDF文檔
PdfDocument document = new PdfDocument();
// 添加一個(gè)空白頁面
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");
}
創(chuàng)建一個(gè)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)
{
// 創(chuàng)建一個(gè)新的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.合并多個(gè)Pdf
private void btnMergePdf_Click(object sender, EventArgs e)
{
// 創(chuàng)建一個(gè)新的PDF文檔
PdfDocument mergedDocument = new PdfDocument();
// 打開第一個(gè)PDF文檔
PdfDocument firstDocument = PdfReader.Open("example-1.pdf", PdfDocumentOpenMode.Import);
// 將第一個(gè)文檔的頁面添加到合并文檔
foreach (PdfPage page in firstDocument.Pages)
{
mergedDocument.AddPage(page);
}
// 打開第二個(gè)PDF文檔
PdfDocument secondDocument = PdfReader.Open("image_example-1.pdf", PdfDocumentOpenMode.Import);
// 將第二個(gè)文檔的頁面添加到合并文檔
foreach (PdfPage page in secondDocument.Pages)
{
mergedDocument.AddPage(page);
}
// 保存合并后的文檔
mergedDocument.Save("merged_documents.pdf");
}
該文章在 2024/6/1 15:27:28 編輯過