PDF генерация в C# (.NET): обзор библиотек и инструментов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

PDF генерация в C# (.NET): Полный обзор библиотек и инструментов

Создание PDF-документов — одна из самых частых задач в корпоративной разработке. Отчёты, счета, накладные, договоры — всё это требует надёжного инструмента для генерации. В экосистеме C# (.NET) существует несколько мощных библиотек, каждая со своими особенностями. В этой статье мы разберём самые популярные варианты, их плюсы и минусы, а также приведём примеры кода.

1. iTextSharp / iText 7 для .NET

iText — де-факто стандарт в мире генерации PDF. Библиотека существует с 2000 года и активно развивается. Для .NET доступна версия iText 7 (NuGet-пакет itext7).

Возможности:

  • Полный контроль над содержимым: текст, таблицы, изображения, аннотации.
  • Работа с формами (AcroForms), цифровыми подписями, шифрованием.
  • Поддержка PDF/A (архивное хранение).
  • Высокая производительность.

Недостатки:

  • Сложный API (низкоуровневая работа с координатами).
  • Для коммерческого использования требуется платная лицензия (AGPL для open-source).

Пример создания простого PDF:

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

public void CreatePdf(string filePath)
{
    using (var writer = new PdfWriter(filePath))
    using (var pdf = new PdfDocument(writer))
    using (var document = new Document(pdf))
    {
        document.Add(new Paragraph("Привет, мир!"));
        document.Add(new Paragraph("Это PDF, созданный с помощью iText 7."));
    }
}

2. PDFsharp

PDFsharp — легковесная open-source библиотека для .NET (также есть версия для GDI+). Отлично подходит для простых задач: создание документов с текстом, таблицами, изображениями.

Возможности:

  • Простой и интуитивный API.
  • Поддержка шрифтов (включая кириллицу).
  • Работа с графическими примитивами (линии, фигуры).
  • Бесплатная (MIT лицензия).

Недостатки:

  • Ограниченная поддержка сложных элементов (формы, закладки).
  • Медленнее iText на больших объёмах.

Пример:

using PdfSharp.Pdf;
using PdfSharp.Drawing;

public void CreatePdf(string filePath)
{
    using (var document = new PdfDocument())
    {
        var page = document.AddPage();
        using (var gfx = XGraphics.FromPdfPage(page))
        {
            var font = new XFont("Arial", 20, XFontStyle.Regular);
            gfx.DrawString("Привет, мир!", font, XBrushes.Black, 
                new XPoint(40, 100));
        }
        document.Save(filePath);
    }
}

3. QuestPDF

QuestPDF — современная библиотека с fluent API, вдохновлённая концепцией "layout-first". Позволяет описывать структуру документа декларативно, что сильно упрощает создание сложных макетов.

Возможности:

  • Декларативный стиль (как WPF или HTML).
  • Автоматическая разбивка на страницы (pagination).
  • Поддержка таблиц, заголовков, колонтитулов.
  • Бесплатная версия с ограничением (до 10 страниц).

Недостатки:

  • Бесплатная версия ограничена.
  • Меньше гибкости, чем у iText (сложно рисовать произвольную графику).

Пример:

using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

public void CreatePdf(string filePath)
{
    Document.Create(container =>
    {
        container.Page(page =>
        {
            page.Size(PageSizes.A4);
            page.Margin(30);
            page.Content().Column(col =>
            {
                col.Item().Text("Привет, мир!").FontSize(20);
                col.Item().Text("Это QuestPDF.").FontSize(14);
            });
        });
    }).GeneratePdf(filePath);
}

4. IronPDF

IronPDF — коммерческая библиотека, которая умеет конвертировать HTML в PDF. Идеально, если у вас уже есть шаблоны на HTML/CSS.

Возможности:

  • Конвертация HTML+CSS+JavaScript в PDF.
  • Поддержка современных стандартов CSS (Flexbox, Grid).
  • <

Рекомендаций