PDFium Delphi Component Docs

Подписание PAdES · шифрование PDF 2.0 · шесть стандартов ISO · Delphi / C++Builder / Lazarus

Всё, что не умеет движок отрисовки, написано на Object Pascal

Движок рисует страницы и читает структуры. Он не подписывает документы, не записывает шифрование, не проверяет соответствие стандартам PDF и не формирует линеаризованные или инкрементальные редакции. PDFium Delphi Component реализует всё это поверх PDFium: более 62 000 строк в 36 модулях, аналогов которым нет в API движка, плюс архитектура просмотрщика и читалки с поддержкой доступности — и каждая строка поставляется в виде исходного кода

Читать полный обзор Открыть каталог возможностей

Что вы получаете сверх движка

Каждый пункт ниже — уже реализованная возможность, которую можно проверить в справочнике API и демо

Цифровые подписи, а не только их чтение

Движок способен лишь сообщить, что словарь подписи существует. Эта библиотека создаёт его сама: PAdES baseline B-B, B-T, B-LT и B-LTA по ETSI EN 319 142-1, CMS / CAdES SignedData по RFC 5652, запросы меток времени RFC 3161, внедрение Document Security Store, архивные метки времени и проверка доверия цепочки сертификатов. Удалённое подписание и подписание через HSM разделяют операцию так, что закрытый ключ никогда не попадает на рабочую станцию

SignPades / ValidatePadesTrust / PreparePadesRemoteSignature

Шифрование, которое вы записываете, а не только открываете

AES-256 из ISO 32000-2 с R6-вычислением ключа по алгоритму 2.B, полное шифрование потоков и строк, AES-GCM из ISO/TS 32003 и токены PDF MAC из ISO/TS 32004. Примитивы AES, SHA-2, SHA-3, HMAC и ASN.1 написаны на чистом Object Pascal и сверены с опубликованными тестовыми векторами FIPS — ни одна внешняя C-библиотека не попадает в вашу поставку и в ваш обзор безопасности

SaveAsEncrypted; FPdfAes / FPdfSha512 / FPdfAsn1

Запись PDF, которой в движке нет

Движок умеет только одно последовательное сохранение всего файла. Эта библиотека поверх него формирует собственные редакции: линеаризованный Fast Web View с таблицами подсказок из Приложения F, упаковку в объектные потоки и xref-потоки, а также инкрементальные редакции изменённых объектов, сохраняющие предыдущий вывод байт в байт. Для повреждённых файлов предусмотрены строгая, совместимая и восстановительная политики загрузки со структурированной диагностикой вместо молчаливого ремонта

SaveAsLinearized / SaveAsObjectStream / BeginIncrementalSave / SaveAsRepaired

Извлечение содержимого сверх обычного текста

GetStructuredText строит иерархию страница / блок / строка / стилизованный фрагмент из геометрии символов и семантики Tagged PDF. ExtractTables распознаёт таблицы с границами и выровненные пробелами, сохраняет объединённые ячейки и выдаёт CSV или JSON. BuildReflowDocument превращает PDF с фиксированной разметкой в семантический HTML. XFDF и FDF переносят данные форм и 18 подтипов аннотаций — форматы, для которых у движка вообще нет API

ExtractTables / BuildReflowDocument / ExportXFDF

Самое широкое покрытие IDE в своём классе

Delphi / C++Builder (RAD Studio от XE5 до 13.1 Florence) плюс Lazarus / Free Pascal 3.8+, Win32 и Win64. Три семейства IDE используют одни и те же эталонные PDF и наборы регрессионных тестов

1257 тестов Pascal + 515 тестов C++, с побайтовой сверкой

Полный спектр стандартов PDF

Вывод PDF/A-1b (SaveAsPdfA) + проверка (ValidatePdfA), а также валидаторы PDF/UA, PDF/E, PDF/X, PDF/R и PDF/VT с кодами результатов на уровне пунктов, внедрением маркеров и контролем соответствия версии. PDF/A охватывает части 1–4 ISO 19005, PDF/X доходит до X-6, PDF/VT включает потоковую упаковку VT-2s

Выделенные модули FPdfPdfa/Pdfua/Pdfe/Pdfx/Pdfr/Pdfvt.pas

Доступность: чтение вслух / слабовидение

TPdfReadingSession управляет чтением вслух для хост-движков TTS (единицы чтения на уровне предложений, выделение на уровне слов, сопоставление произносимого текста); плюс преобразования для слабовидящих InvertPdfBitmap, GrayscalePdfBitmap, DuotonePdfBitmap и живой ночной дуотон-просмотр

Слой доступности, которого полностью лишено большинство обёрток

Отрисовка без копирования + отменяемая прогрессивная

Путь отрисовки пишет вывод PDFium прямо в DIB-буфер целевого TBitmap, минуя покадровое копирование пикселей всей страницы; RenderPageProgressive опрашивает токен отмены между итерациями и может быть прерван посреди отрисовки

Экономит одно копирование width×height×4 байта на кадр при высоком DPI

Потоковое чтение по требованию для многогигабайтных PDF

Через адаптер TStream по требованию в LoadCustomDocument PDFium читает документ блоками — многогигабайтные, удалённые или хранящиеся в базе данных документы загружаются без копии в памяти, а пригодный первый просмотр появляется почти сразу

Документы 2.x ГБ: почти мгновенный первый просмотр

Три компонента + 33 общих демо

TPdf (движок документов), TPdfView (интерактивный просмотрщик), TPdfThumbnailView (навигация по миниатюрам); 33 общих демо COMMON на три IDE, охватывающих просмотр, поиск, заполнение форм, слияние/разделение, пакетный экспорт, печать, аудит безопасности, предполётные отчёты и другое

PDFViewer / PreflightReport / SecurityAudit / StandardsLab и другие

Безопасность по умолчанию

Белый список действий ссылок (LinkOptions), отключённые по умолчанию launch-действия и демо SecurityAudit для аудита поверхностей риска — безопасно «из коробки», а не с открытыми по умолчанию опасными действиями

Подходит для чувствительных к безопасности развёртываний в финансах и здравоохранении

Исходный код включён · без роялти · долгосрочная поддержка

Поставляется с исходным кодом на Pascal, без роялти за время выполнения, с долгосрочным сопровождением. Включает pdfium.dll и pdfium.v8.dll для Win32/Win64 (с поддержкой V8/XFA) и опциональные хуки отрисовки Skia

Без платы за каждое развёртывание

Факты и цифры

3семейства IDE: Delphi / C++Builder / Lazarus
6+стандартов PDF: A / UA / E / X / R / VT
33общих демо COMMON на три IDE
1770+регрессионных тестов Pascal + C++

Кому стоит выбрать PDFium Delphi Component

Просмотрщики / читалки документов

Встроенные просмотрщики PDF, которым нужны качество отрисовки и взаимодействие производственного уровня (выделение текста, подсветка поиска, ссылки, масштабирование, непрерывный двухстраничный режим)

Доступность / вспомогательные технологии

Управление чтением вслух и преобразования для слабовидящих пользователей — слой, которого у большинства PDF-обёрток вообще нет

Инструменты соответствия / предполётной проверки

Которым нужны генерация и проверка PDF/A, доступность PDF/UA, контроль версий и предполётные отчёты, удобные для CI

Огромные / удалённые документы

Многогигабайтные PDF или PDF, хранящиеся в базе данных, которые должны загружаться по требованию, а не целиком удерживаться в памяти

Команды с несколькими IDE

Команды, одновременно использующие Delphi, C++Builder и Lazarus, — один набор компонентов, одни эталонные файлы, одни демо

Развёртывания с повышенными требованиями к безопасности

Сценарии в финансах, здравоохранении и госсекторе со строгим контролем действий ссылок и запуска

Отрисовка страницы в несколько строк

Без написанного вручную C-interop — сразу нативные компоненты на Pascal:

uses PDFium;

var
  Pdf: TPdf;
  Bmp: TBitmap;
begin
  Pdf := TPdf.Create(nil);
  try
    Pdf.FileName := 'report.pdf';
    Pdf.Active := True;
    Pdf.PageNumber := 0;              // страницы нумеруются с нуля

    Bmp := Pdf.RenderPage(0, 0,
      Round(PointsToPixels(Pdf.PageWidth, 150)),
      Round(PointsToPixels(Pdf.PageHeight, 150)));
    try
      Bmp.SaveToFile('page1.bmp');
    finally
      Bmp.Free;
    end;
  finally
    Pdf.Free;
  end;
end;

Следующие шаги

Начните с обзора продукта и Быстрого старта, просмотрите полный каталог возможностей и Примеры, либо прочтите Примечания к выпуску о последних новинках