Работа с PDF-документами — это распространённая задача в современном программировании. Независимо от того, создаёте ли вы отчёты,Invoices или управляете формами, наличие правильной библиотеки может значительно упростить вашу работу. В этой статье мы рассмотрим пять библиотек для работы с PDF-документами на C#, сосредоточив внимание на бесплатных или открытых вариантах. Мы обсудим плюсы и минусы каждой библиотеки и предоставим простой пример «Hello World» для создания PDF.
iTextSharp
Обзор
iTextSharp — это популярная библиотека PDF для .NET, которая позволяет разработчикам создавать и обрабатывать PDF-документы. Хотя у неё есть как бесплатные, так и платные версии, бесплатная версия является открытым исходным кодом под лицензией AGPL, что означает, что её можно использовать бесплатно, если приложение также является открытым.
Плюсы
Богатый функционал: Поддерживает продвинутые функции PDF, такие как цифровые подписи, аннотации и соответствие PDF/A.
Активное сообщество: Существует большая аудитория и обширная документация.
Кроссплатформенность: Хорошо работает на различных платформах, включая .NET Core.
Минусы
Лицензия AGPL: Требование открывать код, если вы используете бесплатную версию, может быть барьером для некоторых разработчиков.
Сложный API: API может быть сложным для простых задач, что требует более крутого обучения.
Пример: «Hello World» в iTextSharp
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
class Program
{
static void Main()
{
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream("HelloWorld.pdf", FileMode.Create));
document.Open();
document.Add(new Paragraph("Hello World!"));
document.Close();
}
}
PdfSharp
Обзор
PdfSharp — это библиотека с открытым исходным кодом для создания и обработки PDF-документов. Она проста в использовании и подходит для простых задач, таких как создание отчетов и счетов.
Плюсы
Простота использования: API прост и понятен, что позволяет быстро начать работу.
Хорошая производительность: Эффективно обрабатывает создание PDF, даже для больших документов.
Открытый исходный код: Полностью бесплатна для использования с разрешительной лицензией.
Минусы
Ограниченные функции: Не хватает некоторых продвинутых функций, доступных в других библиотеках, таких как заполнение форм и сложные варианты компоновки.
Меньше документации: Хотя есть некоторая документация, её меньше, чем у других библиотек.
Пример: «Hello World» в PdfSharp
using PdfSharp.Drawing;
using PdfSharp.Pdf;
class Program
{
static void Main()
{
PdfDocument document = new PdfDocument();
document.Info.Title = "Создано с помощью PDFsharp";
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
gfx.DrawString("Hello World!", font, XBrushes.Black, new XPoint(20, 50));
document.Save("HelloWorld.pdf");
}
}
MigraDoc
Обзор
MigraDoc — это библиотека для создания документов, которая может генерировать PDF-документы с помощью PdfSharp. Она предоставляет более высокий уровень API для создания документов, что особенно полезно для генерации отчетов и сложных компоновок.
Плюсы
Высокий уровень API: Проще создавать сложные документы с разделами, абзацами и таблицами.
Интеграция с PdfSharp: Хорошо работает с PdfSharp для рендеринга PDF.
Открытый исходный код: Бесплатно для использования под лицензией с открытым исходным кодом.
Минусы
Кривая обучения: Хотя упрощает создание документов, может потребоваться время для понимания его структуры.
Ограниченные примеры: Документация содержит меньше примеров по сравнению с другими библиотеками.
Пример: «Hello World» в MigraDoc
using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;
class Program
{
static void Main()
{
Document document = new Document();
Section section = document.AddSection();
section.AddParagraph("Hello World!");
PdfDocumentRenderer renderer = new PdfDocumentRenderer();
renderer.Document = document;
renderer.RenderDocument();
renderer.PdfDocument.Save("HelloWorld.pdf");
}
}
QuestPDF
Обзор
QuestPDF — это современная библиотека для создания PDF-документов в .NET. Она использует флюентный API для построения документов, что делает её интуитивно понятной и простой в использовании. QuestPDF поддерживает как .NET Framework, так и .NET Core.
Плюсы
Флюентный API: Очень интуитивно понятно и легко читается, что делает код чистым и удобным для поддержки.
Гибкие компоновки: Поддерживает сложные компоновки и динамическое генерирование контента.
Активная разработка: Регулярные обновления с новыми функциями и улучшениями.
Минусы
Новая библиотека: Будучи относительно новой, она может не иметь столько ресурсов и примеров, как более старые библиотеки.
Производительность: В некоторых сценариях производительность может уступать более устоявшимся библиотекам.
Пример: «Hello World» в QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
class Program
{
static void Main()
{
Document.Create(container =>
{
container
.Page(page =>
{
page.Content()
.Column(column =>
{
column.Item().Text("Hello World!");
});
});
}).Save("HelloWorld.pdf");
}
}
Free Spire.PDF for .NET
Обзор
Free Spire.PDF для .NET — это мощная библиотека для работы с PDF, которая позволяет разработчикам создавать, читать, изменять и конвертировать PDF-документы без необходимости использования Adobe Acrobat. Она поддерживает широкий спектр функциональных возможностей PDF, что делает её универсальным инструментом для любого разработчика на C#.
Плюсы
Без зависимостей: Не требует внешних зависимостей или программного обеспечения третьих сторон.
Богатый функционал: Поддерживает множество функций PDF, включая текст, изображения, таблицы и поля форм.
Простота использования: Простой API, который легко понять и реализовать.
Документация: Хорошо документирована с множеством примеров.
Минусы
Ограничения в бесплатной версии: Бесплатная версия имеет некоторые ограничения на количество страниц, которые можно генерировать или обрабатывать.
Пример: «Hello World» в Free Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
class Program
{
static void Main()
{
// Создайте новый PDF-документ
PdfDocument doc = new PdfDocument();
PdfPageBase page = doc.Pages.Add();
// Установите шрифт и кисть
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
PdfBrush brush = PdfBrushes.Black;
// Нарисуйте текст
page.Canvas.DrawString("Hello World!", font, brush, new PointF(10, 10));
// Сохраните документ
doc.SaveToFile("HelloWorld.pdf");
doc.Close();
}
}
Заключение
Каждая из библиотек, рассмотренных в этой статье, имеет свои сильные и слабые стороны, что делает их подходящими для различных типов проектов.
iTextSharp превосходит в продвинутых функциональностях, но имеет лицензионные ограничения.
PdfSharp идеален для простых задач, но не хватает некоторых продвинутых функций.
MigraDoc предоставляет API более высокого уровня для сложных документов.
QuestPDF предлагает современный подход с флюентным API, но всё ещё развивает своё сообщество.
Free Spire.PDF отлично подходит для общего использования с богатым набором функций.
При выборе библиотеки учитывайте конкретные требования вашего проекта, включая функции, лицензирование и удобство использования. С правильной библиотекой работа с PDF-документами на C# может стать простой и приятной задачей.
Комментарии (4)
qrKot
02.01.2025 08:04бесплатная версия является открытым исходным кодом под лицензией AGPL, что означает, что её можно использовать бесплатно, если приложение также является открытым.
Господи, что вы несете???
UserSergeyB
Чат жпт передает привет автору статьи.