pdfium
Высокопроизводительная библиотека с открытым исходным кодом для рендеринга и обработки PDF-документов. Написанная на C++, она служит основой для встроенного просмотрщика PDF в браузерах Google Chrome и Microsoft Edge. Благодаря своей скорости, эффективности и строгому соответствию стандартам PDF, PDFium широко используется в настольных, мобильных и серверных приложениях.
Особенности
- высокая производительность рендеринга благодаря оптимизированному C++ коду;
- поддержка стандартов PDF (включая PDF/A);
- возможность рендеринга страниц в растровые изображения;
- извлечение текста и метаданных из документов;
- работа с интерактивными формами;
- поддержка аннотаций и цифровых подписей;
- возможность создания и модификации PDF-документов.
Основные компоненты
PDFium предоставляет обширный C-интерфейс, разбитый на несколько заголовочных файлов, каждый из которых отвечает за определённый функционал (подробнее с документацией можно ознакомиться здесь).
Инициализация и глобальное управление
Прежде чем использовать любые функции PDFium, библиотеку необходимо инициализировать, а после завершения работы — корректно завершить. Это обеспечивает настройку глобальных ресурсов и, при необходимости, интеграцию с движком V8.
Основные функции инициализации:
FPDF_InitLibraryWithConfig()— инициализация библиотеки с передачей структуры конфигурацииFPDF_LIBRARY_CONFIG. Требуется для настройки параметров V8 и пользовательских шрифтов;FPDF_InitLibrary()— упрощённая инициализация (для обратной совместимости);FPDF_DestroyLibrary()— деинициализация и освобождение всех ресурсов библиотеки.
Работа с документами
PDFium позволяет загружать PDF-документы из различных источников и управлять ими. Основным объектом является FPDF_DOCUMENT.
Функции для работы с документами:
FPDF_LoadDocument()— загрузка документа из файла по имени пути. Вторым аргументом передаётся пароль (илиNULL);FPDF_LoadMemDocument()— загрузка документа из буфера в памяти;FPDF_LoadCustomDocument()— загрузка документа с использованием пользовательского ридера (например, для потоковой загрузки по сети);FPDF_GetLastError()— получение кода последней ошибки при загрузке документа;FPDF_CloseDocument()— закрытие документа и освобождение связанных ресурсов;FPDF_GetPageCount()— получение количества страниц в документе;FPDF_GetMetaText()— извлечение метаданных документа (например, заголовка, автора).
Работа со страницами
Страницы PDF представлены объектом FPDF_PAGE. PDFium предоставляет функции для их загрузки, рендеринга и получения свойств.
Основные функции для страниц:
FPDF_LoadPage()— загрузка конкретной страницы по индексу;FPDF_ClosePage()— выгрузка страницы;FPDF_GetPageSizeByIndex()— получение размеров страницы без её загрузки;FPDF_GetPageWidth()иFPDF_GetPageHeight()— получение ширины и высоты загруженной страницы;FPDF_RenderPageBitmap()— рендеринг страницы в растровое изображение. Позволяет задавать параметры отрисовки (масштаб, поворот, флаги рендеринга).
Работа с текстом
Для извлечения текста из PDF-документов используется модуль fpdf_text.h. Он предоставляет функции для посимвольного и поблочного извлечения текста с учётом позиционирования.
Ключевые функции для текста:
FPDFText_LoadPage()— создание объекта текстовой страницы (FPDF_TEXTPAGE) из загруженнойFPDF_PAGE;FPDFText_ClosePage()— освобождение объекта текстовой страницы;FPDFText_CountChars()— получение количества символов на странице;FPDFText_GetText()— извлечение текста в буфер;FPDFText_GetBoundedText()— извлечение текста из заданной области страницы.
Растровые изображения
PDFium использует свой собственный тип FPDF_BITMAP для представления растровых изображений, в которые рендерятся страницы.
Функции для работы с растрами:
FPDFBitmap_Create()— создание пустого растрового изображения заданного размера и формата;FPDFBitmap_FillRect()— заполнение прямоугольника на растре цветом;FPDFBitmap_GetBuffer()— получение указателя на буфер с пиксельными данными для дальнейшей обработки или сохранения;FPDFBitmap_Destroy()— уничтожение растрового изображения.
Формы, аннотации и редактирование
PDFium поддерживает более сложные операции, такие как работа с интерактивными формами (AcroForms), аннотациями и модификацией содержимого PDF.
Основные возможности этой группы:
FORM_OnAfterLoadPage(),FORM_OnBeforeClosePage()— функции для интеграции с окружением форм, необходимые для корректной обработки полей форм;FPDFPage_GetObject()и родственные функции — доступ к отдельным объектам на странице (изображения, пути, текст) для их анализа или модификации;FPDFPage_InsertObject()— вставка нового объекта на страницу;FPDF_ImportPages()— импорт страниц из одного PDF-документа в другой;- Функции для работы с аннотациями (
FPDFAnnot_*) и закладками (FPDFBookmark_*).