1. 产品
  2.   PDF格式
  3.   .NET
  4.   PDFsharp

PDFsharp

 
 

用于 PDF 处理的开源 .NET API

通过免费的 C# .NET 库创建、操作、转换和处理 PDF 文档。

什么是 PDFsharp?

开源 .NET 库,可用于创建、渲染、合并、拆分、修改、打印和提取 PDF 文件的文本或元数据。 PDFsharp API 支持从任何 .NET 语言动态创建 PDF 文档。它还支持通过 XML 文件或直接接口从各种来源导入数据。它支持多种页面布局、文本格式和文档设计选项。

PDFsharp 提供基于 GDI+ 或 WPF 的图形实现。该 API 通过提供使用一个源代码在 PDF 页面以及窗口或打印机上绘图的功能,使开发人员的工作变得轻松。它支持处理 PDF 文件的几个重要功能,例如修改 PDF、合并或拆分 PDF、XPS 到 PDF 转换、PDF 呈现、PDF 数据提取、字体嵌入和子集、Unicode 支持等等。

Previous Next

PDFsharp 入门

PDFsharp 是双重许可的 AGPL/商业软件。 AGPL 是免费/开源软件许可证。

强烈建议使用 NuGet 将 PDFsharp 添加到您的项目中,

NuGet 命令

 Install-Package PdfSharp

使用 Visual Studio,您可以安装 NuGet 包管理器以轻松访问 NuGet 包。它适用于 VS 2012 Express 以及 VS 2013 和 VS 2015 的社区版。在 Visual Studio 中,转到“工具”=>如果您还没有 NuGet 包管理器,请使用“扩展和更新...”来安装它。 NuGet 包管理器将为您下载包,安装它,并添加对您的项目的引用。

通过免费的 .NET API 生成和修改 PDF 文档

软件开发人员可以使用 PDFsharp API 在他们自己的 .NET 应用程序中创建新的 PDF 文档。创建文档后,您可以轻松添加空白页面以及插入图形或文本。也方便开发者根据自己的需要修改现有文档,并以自己选择的名称保存。使用以下步骤,您可以在 C# 中生成和操作 PDF 文档。

  1. 初始化 PdfDocument
  2. 添加页面
  3. 获取用于绘图的 XGraphics 对象
  4. 创建字体
  5. 添加文字
  6. 保存文档

使用 C# 创建 PDF

// Create a new PDF document
PdfDocument pdfDocument = new PdfDocument();
// Create an empty page
PdfPage pdfPage = pdfDocument.AddPage();
// Get an XGraphics object for drawing
XGraphics xGraphics = XGraphics.FromPdfPage(pdfPage);
// Create a font
XFont xFont = new XFont("Verdana", 20, XFontStyle.BoldItalic);
// Draw the text
xGraphics.DrawString("File Format Developer Guide", xFont, XBrushes.Black,
    new XRect(0, 0, pdfPage.Width, pdfPage.Height),
    XStringFormats.Center);
// Save the document...
pdfDocument.Save("fileformat.pdf");
    

通过 .NET API 创建 PDF 注释

注释允许用户在 PDF 页面上添加自定义内容。 PDF 应用程序通常允许创建和修改各种类型的注释,例如文本、线条、注释或形状等。PDFsharp 使程序员能够在自己的应用程序中创建各种类型的 PDF 注释。该库支持创建文本注释、链接和橡皮图章注释。

通过 C# 创建 PDF 文本注释

 // Create a PDF text annotation
PdfTextAnnotation textAnnot = new PdfTextAnnotation();
textAnnot.Title = "This is the title";
textAnnot.Subject = "This is the subject";
textAnnot.Contents = "This is the contents of the annotation.\rThis is the 2nd line.";
textAnnot.Icon = PdfTextAnnotationIcon.Note;
gfx.DrawString("The first text annotation", font, XBrushes.Black, 30, 50, XStringFormats.Default);
// Convert rectangle from world space to page space. This is necessary because the annotation is
// placed relative to the bottom left corner of the page with units measured in point.
XRect rect = gfx.Transformer.WorldToDefaultPage(new XRect(new XPoint(30, 60), new XSize(30, 30)));
textAnnot.Rectangle = new PdfRectangle(rect);
// Add the annotation to the page
page.Annotations.Add(textAnnot);

通过 .NET 合并多个 PDF 文档

您是否有大量 PDF 文档需要合并成一个大文档? PDFsharp API 为您提供了只需几行代码即可将多个 PDF 文件组合成一个文件的功能。开发人员可以轻松地从现有 PDF 文件创建新文档。这对于视觉比较或其他几个重要任务可能很有用。

通过 Java 合并文档

 // Open the input files
PdfDocument inputDocument1 = PdfReader.Open(filename1, PdfDocumentOpenMode.Import);
PdfDocument inputDocument2 = PdfReader.Open(filename2, PdfDocumentOpenMode.Import);
// Create the output document
PdfDocument outputDocument = new PdfDocument();
// Show consecutive pages facing. Requires Acrobat 5 or higher.
outputDocument.PageLayout = PdfPageLayout.TwoColumnLeft;
XFont font = new XFont("Verdana", 10, XFontStyle.Bold);
XStringFormat format = new XStringFormat();
format.Alignment = XStringAlignment.Center;
format.LineAlignment = XLineAlignment.Far;
XGraphics gfx;
XRect box;
int count = Math.Max(inputDocument1.PageCount, inputDocument2.PageCount);
for (int idx = 0; idx < count; idx++)
{
// Get page from 1st document
PdfPage page1 = inputDocument1.PageCount > idx ?
inputDocument1.Pages[idx] : new PdfPage();
// Get page from 2nd document
PdfPage page2 = inputDocument2.PageCount > idx ?
inputDocument2.Pages[idx] : new PdfPage();
// Add both pages to the output document
page1 = outputDocument.AddPage(page1);
page2 = outputDocument.AddPage(page2);
// Write document file name and page number on each page
gfx = XGraphics.FromPdfPage(page1);
box = page1.MediaBox.ToXRect();
box.Inflate(0, -10);
gfx.DrawString(String.Format("{0} • {1}", filename1, idx + 1),
font, XBrushes.Red, box, format);
gfx = XGraphics.FromPdfPage(page2);
box = page2.MediaBox.ToXRect();
box.Inflate(0, -10);
gfx.DrawString(String.Format("{0} • {1}", filename2, idx + 1),
font, XBrushes.Red, box, format);
}
// Save the document...
const string filename = "CompareDocument1_tempfile.pdf";
outputDocument.Save(filename);
 中国人