PDFsharp
.NET API с открытым исходным кодом для обработки PDF
Создавайте, манипулируйте, конвертируйте и обрабатывайте PDF-документы с помощью бесплатной библиотеки C# .NET.
Что такое PDFSharp?
Библиотека .NET с открытым исходным кодом, которую можно использовать для создания, рендеринга, объединения, разделения, изменения, печати и извлечения текста или метаданных файлов PDF. API PDFsharp поддерживает создание PDF-документов на лету с любого языка .NET. Он также поддерживает импорт данных из различных источников через XML-файлы или прямые интерфейсы. Он поддерживает множество вариантов макета страницы, форматирования текста и дизайна документа.
PDFsharp предоставляет графическую реализацию на основе GDI+ или WPF. API упрощает работу разработчика, предоставляя функции использования одного исходного кода для рисования на странице PDF, а также в окне или на принтере. Он поддерживает несколько важных функций для обработки PDF-файлов, таких как изменение PDF, объединение или разделение PDF-файлов, преобразование XPS в PDF, рендеринг PDF, извлечение данных PDF, встраивание и подмножество шрифтов, поддержка Unicode и многое другое.
Начало работы с 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 скачает для вас пакет, установит его и добавит ссылку на ваш проект.
Создание и изменение PDF-документов с помощью бесплатного API .NET
Разработчики программного обеспечения могут использовать PDFsharp API для создания нового документа PDF в своих собственных приложениях .NET. После создания документа вы можете легко добавить пустую страницу, а также графику или текст. Это также позволяет разработчикам изменять существующий документ в соответствии со своими потребностями и сохранять его с именем по своему выбору. Используя следующие шаги, вы можете создавать документы PDF и управлять ими на C#.
- Инициализировать PdfDocument
- Добавить страницу
- Получить объект XGraphics для рисования
- Создать шрифт
- Добавить текст
- Сохранить документ
Создать 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");
Создавайте аннотации PDF через .NET API
Аннотации позволяют пользователям добавлять пользовательский контент на страницы PDF. Приложения PDF обычно позволяют создавать и изменять различные типы аннотаций, таких как текст, линии, заметки или фигуры и т. д. PDFsharp позволяет программистам создавать различные типы аннотаций PDF в своих собственных приложениях. Библиотека поддерживает создание текстовых аннотаций, ссылок и аннотаций штампов.
Создание текстовой аннотации 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);
Объединение нескольких PDF-документов через .NET
У вас есть множество 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);