您的位置:

探究PDFSharp——一个开源PDF生成工具

一、简介

PDFSharp是一款用于生成和编辑PDF文档的开源工具。它提供了许多有用的功能,包括创建新文档、添加图像、文本、表格和页面等,同时还支持加密、添加书签、页码,并具有一些其他高级功能,例如向PDF文档添加数字签名。PDFSharp基于.NET标准,可以在各种操作系统和平台上使用。

二、创建PDF文档

使用PDFSharp可以轻松地创建新PDF文档。首先,创建一个新的PDF文档对象,指定文档属性,例如作者、主题和创建日期:

PdfDocument document = new PdfDocument();
document.Info.Author = "John Doe";
document.Info.Title = "My Title";
document.Info.Subject = "My Subject";
document.Info.Keywords = "PDFSharp, PDF, API";
document.Info.CreationDate = DateTime.Now;

接下来,可以为文档添加一个或多个页面。页面是PDF文档的基本单位,可以包含文本、图像、表格等元素。以下是创建一个新页面的示例:

PdfPage page = document.AddPage();

然后,可以在页面上添加各种元素,例如文字和图像。例如,下面是向页面添加一个简单文本框的代码:

XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
XBrush brush = new XSolidBrush(XColor.FromKnownColor(KnownColor.Black));
gfx.DrawString("Hello, World!", font, brush, new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

三、添加图像

PDFSharp支持多种图像格式,包括BMP、JPG、PNG、GIF和TIFF等。以下是添加图像的示例:

XImage image = XImage.FromFile("picture.jpg");
gfx.DrawImage(image, 0, 0, page.Width, page.Height);

四、添加表格

PDFSharp可以轻松地在页面上添加表格。以下是创建一个新表格并向其中添加数据的示例代码:

PdfTable table = new PdfTable();
table.Style = "Table";
table.Rows.Add(new PdfTableRow { Cells = { new PdfTableCell { Value = "Name" }, new PdfTableCell { Value = "Age" } } });
table.Rows.Add(new PdfTableRow { Cells = { new PdfTableCell { Value = "John Doe" }, new PdfTableCell { Value = "30" } } });
table.Rows.Add(new PdfTableRow { Cells = { new PdfTableCell { Value = "Jane Doe" }, new PdfTableCell { Value = "28" } } });
table.Draw(gfx, new XRect(0, 0, page.Width, page.Height));

五、数字签名

PDFSharp支持向PDF文档添加数字签名,以确保文档的完整性和真实性。以下是向PDF文档添加数字签名的示例代码:

PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();

X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
PdfSignatureOptions options = new PdfSignatureOptions
{
    Certificate = cert,
    ContactInfo = "John Doe",
    Location = "My Location",
    Reason = "My Reason",
    SignatureFormat = PdfSignatureFormat.Pkcs7
};

options.DocumentPermissions = PdfDocumentPermissions.AllowPrinting;

PdfSignature signature = new PdfSignature(options);
signature.SignatureAppearance = new PdfSignatureAppearance
{
    CustomAppearanceText = "My Custom Text",
};

signature.Sign(page, gfx);

六、加密

PDFSharp也支持对PDF文档进行加密。以下是对PDF文档进行加密的示例代码:

PdfEncoder encoder = new PdfEncoder();
encoder.SetEncryption(new PdfEncryptionOptions
{
    UserPassword = "password",
    OwnerPassword = "owner",
    Permissions = PdfDocumentPermissions.AllowPrinting
});

document.Save("document.pdf", encoder);

七、书签与目录

PDFSharp还支持在PDF文档中添加书签和目录。以下是创建一个新目录并向其中添加条目的示例:

PdfOutline root = document.Outlines.Add(null, "My Outline", true, PdfOutlineStyle.Bold, XColors.Red);
PdfOutline child = document.Outlines.Add(root, "My Child", false, PdfOutlineStyle.Regular, XColors.Blue);
PdfOutline subChild = document.Outlines.Add(child, "My Sub Child", false, PdfOutlineStyle.Italic, XColors.Green);

八、总结

PDFSharp是一个强大的PDF生成工具,可以帮助开发人员轻松地创建、编辑和加密PDF文档。它支持许多有用的功能,如添加图像、表格、数字签名和书签等,而且还相对容易学习。如果需要生成PDF文档,PDFSharp是一个值得考虑的工具。