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_*).

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "pdfium/95.0.4629@aurora",
    )    

Процесс локальной сборки описан в документации.

pdfium

PDF generation and rendering library.
Лицензия
BSD-3-Clause
Версия
Домашняя страница
Скачать
x86_64
2.5 Mb
MD5: b98da15f020e6f91672cf91c86adaf79
Updated: 03.09.2025, 18:40:13
armv8
2.43 Mb
MD5: 5d369721b98b898c72c65e5472fa0702
Updated: 03.09.2025, 18:39:59
armv7
2.24 Mb
MD5: 9dc8953a4d7b77606022bf14d046669b
Updated: 03.09.2025, 18:40:09
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.