5 Библиотек для Обработки PDF в C#, Которые Необходимо Знать

cc4769f3d180f27a4264245ed75d5e97.png

Работа с 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# может стать простой и приятной задачей.

© Habrahabr.ru