Skip to content

Справочник API Julia

PDF Oxide предоставляет идиоматичные привязки для Julia (PdfOxide.jl), которые ложатся напрямую поверх C ABI pdf_oxide через ccall — без промежуточной shim-крейты. Нативные хендлы оборачиваются в изменяемые структуры с финализаторами, C-строки и буферы копируются в Julia и освобождаются автоматически, а любой неуспешный статус C ABI выбрасывает PdfOxideError. Индексы страниц начинаются с нуля.

using Pkg
Pkg.add("PdfOxide")

Нативная динамическая библиотека libpdf_oxide загружается во время выполнения и ищется по порядку: PDF_OXIDE_LIB_PATHPDF_OXIDE_LIB_DIR../target/releasetarget/release → системный загрузчик. Соберите её с нужным набором фич для привязок:

cargo build --release --lib --features ocr,rendering,signatures,barcodes,tsa-client,system-fonts
using PdfOxide

pdf = from_markdown("# Hello\n\nbody\n")
doc = open_from_bytes(to_bytes(pdf))
page_count(doc)
extract_text(doc, 0)        # 0-based page index
to_markdown_all(doc)
close!(doc)

Справочник по API Rust см. в справочнике API Rust. Справочник по API Python см. в справочнике API Python. Подробности о типах см. в разделе Типы и перечисления.

Большинство типов-хендлов (PdfDocument, Pdf, DocumentEditor, DocumentBuilder, RenderedImage, Certificate, SignatureInfo, Timestamp, TsaClient, Dss, результаты валидации, Barcode, OcrEngine, Renderer, ElementList, EmbeddedFont, PageBuilder) владеют нативной памятью. Освобождайте их заранее вызовом close!(x) — он идемпотентен и также выполняется при финализации.


PdfDocument

Хендл для чтения — открытия, извлечения, поиска, рендеринга, валидации и инспекции существующего PDF.

Открытие

open_document(path::AbstractString; password::Union{Nothing,AbstractString} = nothing) -> PdfDocument
open_from_bytes(data::AbstractVector{UInt8}) -> PdfDocument
open_with_password(path::AbstractString, password::AbstractString) -> PdfDocument
Функция Описание
open_document(path; password=nothing) Открыть PDF из пути в файловой системе (опционально защищённый паролем).
open_from_bytes(data) Открыть PDF из вектора байтов в памяти.
open_with_password(path, password) Открыть зашифрованный PDF на диске с паролем.

Информация о документе

Функция Возвращает Описание
page_count(d) Int Количество страниц.
version(d) PdfVersion Версия PDF (major/minor).
is_encrypted(d) Bool Зашифрован ли документ.
has_structure_tree(d) Bool Является ли документ тегированным PDF с деревом структуры.
has_xfa(d) Bool Содержит ли документ форму XFA.
authenticate(d, password) Bool Проверить пароль зашифрованного документа (неверный пароль возвращает false, а не ошибку).

Конвертация документа целиком

Функция Возвращает Описание
to_markdown_all(d) String Markdown для всего документа.
to_html_all(d) String HTML для всего документа.
to_plain_text_all(d) String Обычный текст для всего документа.
extract_all_text(d) String Автоматическое извлечение текста по всему документу.
classify_document(d) String Классифицировать документ целиком; возвращает JSON-строку классификатора.

Постраничное извлечение текста

extract_text(d::PdfDocument, page::Integer) -> String
to_plain_text(d::PdfDocument, page::Integer) -> String
to_markdown(d::PdfDocument, page::Integer) -> String
to_html(d::PdfDocument, page::Integer) -> String
extract_structured_json(d::PdfDocument, page::Integer) -> String
Функция Описание
extract_text(d, page) Извлечь обычный текст со страницы (индекс с нуля).
to_plain_text(d, page) Отрендерить страницу в текст с учётом разметки.
to_markdown(d, page) Отрендерить страницу в Markdown.
to_html(d, page) Отрендерить страницу в HTML.
extract_structured_json(d, page) Извлечь структурированную JSON-модель документа для страницы.
extract_text_auto(d, page) Автоматически выбрать наилучший способ извлечения текста для страницы.
extract_page_auto(d, page, options="{}") Автоматическое извлечение страницы со строкой JSON-опций.
classify_page(d, page) Классифицировать страницу; возвращает JSON-строку классификатора.

Извлечение структурированных элементов

extract_chars(d::PdfDocument, page::Integer)      -> Vector{Char}
extract_words(d::PdfDocument, page::Integer)      -> Vector{Word}
extract_text_lines(d::PdfDocument, page::Integer) -> Vector{TextLine}
extract_tables(d::PdfDocument, page::Integer)     -> Vector{Table}
embedded_fonts(d::PdfDocument, page::Integer)     -> Vector{Font}
embedded_images(d::PdfDocument, page::Integer)    -> Vector{Image}
page_annotations(d::PdfDocument, page::Integer)   -> Vector{Annotation}
extract_paths(d::PdfDocument, page::Integer)      -> Vector{Path}
Функция Описание
extract_chars(d, page) Извлечь глифы со страницы как Vector{Char}.
extract_words(d, page) Извлечь слова со страницы как Vector{Word}.
extract_text_lines(d, page) Извлечь текстовые строки как Vector{TextLine}.
extract_tables(d, page) Извлечь таблицы как Vector{Table}.
embedded_fonts(d, page) Встроенные шрифты как Vector{Font}.
embedded_images(d, page) Встроенные изображения как Vector{Image}.
page_annotations(d, page) Аннотации как Vector{Annotation}.
extract_paths(d, page) Векторные пути как Vector{Path}.

Извлечение в пределах области

extract_text_in_rect(d::PdfDocument, page::Integer, x, y, w, h)   -> String
extract_words_in_rect(d::PdfDocument, page::Integer, x, y, w, h)  -> Vector{Word}
extract_lines_in_rect(d::PdfDocument, page::Integer, x, y, w, h)  -> Vector{TextLine}
extract_tables_in_rect(d::PdfDocument, page::Integer, x, y, w, h) -> Vector{Table}
extract_images_in_rect(d::PdfDocument, page::Integer, x, y, w, h) -> Vector{Image}

Каждая функция ограничивает извлечение прямоугольником (x, y, w, h) в пользовательских координатах PDF (точках) на странице с индексом от нуля.

Поиск

search(d::PdfDocument, page::Integer, term::AbstractString, caseSensitive::Bool) -> Vector{SearchResult}
search_all(d::PdfDocument, term::AbstractString, caseSensitive::Bool)             -> Vector{SearchResult}
search_results_to_json(d::PdfDocument, term::AbstractString, caseSensitive::Bool) -> String
Функция Описание
search(d, page, term, caseSensitive) Найти term на одной странице.
search_all(d, term, caseSensitive) Найти term по всему документу.
search_results_to_json(d, term, caseSensitive) Сериализовать результаты поиска по всему документу в JSON.

Геометрия страницы

Функция Возвращает Описание
page_get_width(d, page) Float64 Ширина страницы (в точках PDF).
page_get_height(d, page) Float64 Высота страницы (в точках PDF).
page_get_rotation(d, page) Int Абсолютный угол поворота (градусы) страницы.
page(d, index) PdfPage Представление страницы (индекс с нуля) над документом (см. PdfPage).

Структура и метаданные документа

Функция Возвращает Описание
get_outline(d) String Закладки / оглавление (JSON).
get_page_labels(d) String Диапазоны меток страниц (JSON).
get_xmp_metadata(d) String XMP-метаданные (JSON).
get_source_bytes(d) Vector{UInt8} Исходные байты документа.
plan_split_by_bookmarks(d, options="{}") String Спланировать разделение по закладкам (JSON).

Инспекция аннотаций

annotations_to_json(d::PdfDocument, page::Integer) -> String
annotation_get_color(d::PdfDocument, page::Integer, index::Integer) -> UInt32
annotation_creation_date(d::PdfDocument, page::Integer, index::Integer) -> String
annotation_modification_date(d::PdfDocument, page::Integer, index::Integer) -> String
Функция Возвращает Описание
annotations_to_json(d, page) String Все аннотации страницы в виде JSON.
annotation_get_color(d, page, index) UInt32 32-битный упакованный RGBA-цвет аннотации.
annotation_creation_date(d, page, index) String Дата создания аннотации.
annotation_modification_date(d, page, index) String Дата изменения аннотации.
annotation_is_hidden(d, page, index) Bool Скрыта ли аннотация.
annotation_is_marked_deleted(d, page, index) Bool Помечена ли аннотация как удалённая.
annotation_is_printable(d, page, index) Bool Печатается ли аннотация.
annotation_is_read_only(d, page, index) Bool Доступна ли аннотация только для чтения.
link_annotation_uri(d, page, index) String URI аннотации-ссылки (Link).
text_annotation_icon_name(d, page, index) String Имя иконки текстовой аннотации (заметки-стикера).
highlight_quad_points_count(d, page, index) Int Количество четырёхугольников аннотации-выделения (Highlight).
highlight_quad_point(d, page, index, quad_index) NTuple{8,Float64} Четырёхугольник с индексом quad_index (8 чисел с плавающей точкой).

Вспомогательные функции JSON для шрифтов и элементов

Функция Возвращает Описание
fonts_to_json(d, page) String Встроенные шрифты страницы в виде JSON.
font_size(d, page, index) Float64 Размер шрифта встроенного шрифта с индексом index.
page_get_elements(d, page) ElementList Элементы областей вёрстки страницы как ElementList.

Поля форм

get_form_fields(d::PdfDocument) -> Vector{FormField}
form_field_count(d::PdfDocument) -> Int
export_form_data_to_bytes(d::PdfDocument, format_type::Integer) -> Vector{UInt8}
import_form_data(d::PdfDocument, path::AbstractString) -> Int
form_import_from_file(d::PdfDocument, filename::AbstractString) -> Bool
Функция Описание
get_form_fields(d) Все поля AcroForm как Vector{FormField}.
form_field_count(d) Удобный счётчик полей.
export_form_data_to_bytes(d, format_type) Экспортировать данные формы (format_type выбирает FDF/XFDF).
import_form_data(d, path) Импортировать данные формы из файла; возвращает код статуса C.
form_import_from_file(d, filename) Импортировать данные формы; возвращает true при успехе.

OCR

page_needs_ocr(d::PdfDocument, page::Integer) -> Bool
ocr_extract_text(d::PdfDocument, page::Integer, engine::Union{Nothing,OcrEngine} = nothing) -> String
Функция Описание
page_needs_ocr(d, page) Является ли страница сканом/гибридной и нуждается ли в OCR.
ocr_extract_text(d, page, engine=nothing) Извлечь текст через OCR (nothing означает использование только нативного извлечения). См. OcrEngine.

Подписи (на уровне документа)

sign(d::PdfDocument, cert::Certificate; reason::AbstractString = "", location::AbstractString = "") -> Int
get_signature_count(d::PdfDocument) -> Int
get_signature(d::PdfDocument, index::Integer) -> SignatureInfo
verify_all_signatures(d::PdfDocument) -> Int
has_timestamp(d::PdfDocument) -> Int
document_get_dss(d::PdfDocument) -> Union{Dss,Nothing}
Функция Описание
sign(d, cert; reason, location) Подписать документ с помощью cert; возвращает код статуса.
get_signature_count(d) Количество подписей в документе.
get_signature(d, index) Подпись с индексом index как SignatureInfo.
verify_all_signatures(d) Проверить все подписи; возвращает код статуса.
has_timestamp(d) Содержит ли документ метку времени уровня документа.
document_get_dss(d) Прочитать /DSS документа в Dss или nothing, если его нет.

Валидация и конвертация

validate_pdf_a(d::PdfDocument, level::Integer) -> PdfAResults
validate_pdf_ua(d::PdfDocument, level::Integer) -> UaResults
validate_pdf_x(d::PdfDocument, level::Integer) -> PdfXResults
document_convert_to_pdf_a(d::PdfDocument, level::Integer) -> Bool

validatePdfA / validatePdfUa / validatePdfX — псевдонимы в стиле camelCase для трёх валидаторов. См. Результаты валидации.

Конвертация в офисные форматы

to_docx(d::PdfDocument) -> Vector{UInt8}
to_pptx(d::PdfDocument) -> Vector{UInt8}
to_xlsx(d::PdfDocument) -> Vector{UInt8}

Конвертировать PDF обратно в байтовый буфер DOCX / PPTX / XLSX. Открытие офисных файлов как PDF выполняется через open_from_docx_bytes / open_from_pptx_bytes / open_from_xlsx_bytes (см. Импорт офисных форматов).

Жизненный цикл

Функция Описание
close!(d) Освободить нативный хендл немедленно (идемпотентно; также выполняется при финализации).

PdfPage

Лёгкое представление страницы (индекс с нуля), возвращаемое page(doc, index). Методы делегируют вызовы родительскому документу.

p = page(doc, 0)
text(p)                       # -> String
markdown(p)                   # -> String
extract_words(p)              # -> Vector{Word}
search(p, "term", false)      # -> Vector{SearchResult}
render_page(p)                # -> RenderedImage
Метод Возвращает Описание
text(p) String Обычный текст страницы.
markdown(p) String Markdown страницы.
html(p) String HTML страницы.
plain_text(p) String Текст с учётом разметки.
extract_chars(p) Vector{Char} Глифы.
extract_words(p) Vector{Word} Слова.
extract_text_lines(p) Vector{TextLine} Текстовые строки.
extract_tables(p) Vector{Table} Таблицы.
embedded_fonts(p) Vector{Font} Встроенные шрифты.
embedded_images(p) Vector{Image} Встроенные изображения.
page_annotations(p) Vector{Annotation} Аннотации.
extract_paths(p) Vector{Path} Векторные пути.
search(p, term, caseSensitive) Vector{SearchResult} Поиск по странице.
render_page(p, format=0) RenderedImage Отрендерить страницу (0=PNG).
render_page_zoom(p, zoom, format=0) RenderedImage Отрендерить с коэффициентом масштабирования.
render_page_thumbnail(p, size, format=0) RenderedImage Отрендерить миниатюру, вписанную в size пикселей.

Рендеринг

Рендеринг страниц PdfDocument в изображения. format: 0=PNG (по умолчанию), 1=JPEG. Координаты — в пользовательских точках PDF.

render_page(d::PdfDocument, pageIndex::Integer, format::Integer = 0) -> RenderedImage
render_page_zoom(d::PdfDocument, pageIndex::Integer, zoom::Real, format::Integer = 0) -> RenderedImage
render_page_thumbnail(d::PdfDocument, pageIndex::Integer, size::Integer, format::Integer = 0) -> RenderedImage
render_page_region(d::PdfDocument, page::Integer, crop_x, crop_y, crop_width, crop_height, format::Integer = 0) -> RenderedImage
render_page_fit(d::PdfDocument, page::Integer, w::Integer, h::Integer, format::Integer = 0) -> RenderedImage
render_page_raw(d::PdfDocument, page::Integer, dpi::Integer) -> Tuple{RenderedImage,Int,Int}
render_page_with_options(d::PdfDocument, page::Integer, dpi, format, bg_r, bg_g, bg_b, bg_a, transparent_background, render_annotations, jpeg_quality) -> RenderedImage
render_page_with_options_ex(d::PdfDocument, page::Integer, dpi, format, bg_r, bg_g, bg_b, bg_a, transparent_background, render_annotations, jpeg_quality, excluded_layers::AbstractVector{<:AbstractString} = String[]) -> RenderedImage
Функция Описание
render_page(d, page, format=0) Отрендерить страницу (0=PNG).
render_page_zoom(d, page, zoom, format=0) Отрендерить с коэффициентом масштабирования.
render_page_thumbnail(d, page, size, format=0) Отрендерить миниатюру, вписанную в size пикселей.
render_page_region(d, page, x, y, w, h, format=0) Отрендерить прямоугольную область (пользовательские точки).
render_page_fit(d, page, w, h, format=0) Отрендерить, вписав в w×h пикселей с сохранением пропорций.
render_page_raw(d, page, dpi) Отрендерить в сырой буфер RGBA8888 с предумножением; возвращает (image, width, height).
render_page_with_options(d, page, dpi, format, bg_r, bg_g, bg_b, bg_a, transparent_background, render_annotations, jpeg_quality) Рендеринг с полным набором RenderOptions (каналы фона 0–1; флаги 0/1).
render_page_with_options_ex(...; excluded_layers) То же, плюс фильтрация слоёв OCG — подавление слоёв по их именам /Name.
estimate_render_time(d, page) Оценить время рендеринга (мс) для страницы.

renderPage / renderPageZoom / renderPageThumbnail — псевдонимы в стиле camelCase для render_page / render_page_zoom / render_page_thumbnail.

Renderer

Переиспользуемый хендл рендерера.

create_renderer(dpi::Integer = 150, format::Integer = 0, quality::Integer = 90, anti_alias::Bool = true) -> Renderer
close!(r::Renderer)

RenderedImage

Результат вызова рендеринга. Поля: width::Int, height::Int, data::Vector{UInt8} (закодированные байты или сырой RGBA для render_page_raw).

save(img::RenderedImage, path::AbstractString)   # write to disk (format inferred)
close!(img::RenderedImage)

DocumentEditor

Хендл для редактирования — изменения и повторного сохранения существующего PDF.

Открытие и источник

open_editor(path::AbstractString) -> DocumentEditor
open_editor_from_bytes(data::AbstractVector{UInt8}) -> DocumentEditor
Функция Возвращает Описание
is_modified(e) Bool Есть ли у редактора несохранённые изменения.
get_source_path(e) String Путь к источнику, из которого был открыт редактор.
page_count(e) Int Количество страниц.
version(e) PdfVersion Версия PDF.

Информация / метаданные

Функция Описание
get_producer(e) Producer из /Info.Producer.
set_producer(e, value) Установить /Info.Producer.
get_creation_date(e) Дата создания из /Info.CreationDate (сырая строка даты PDF).
set_creation_date(e, date_str) Установить /Info.CreationDate (сырая строка даты PDF).

Сохранение

save(e::DocumentEditor, path::AbstractString)
save_to_bytes(e::DocumentEditor) -> Vector{UInt8}
save_to_bytes_with_options(e::DocumentEditor, compress::Bool, garbage_collect::Bool, linearize::Bool) -> Vector{UInt8}
extract_pages_to_bytes(e::DocumentEditor, pages::AbstractVector{<:Integer}) -> Vector{UInt8}
save_encrypted(e::DocumentEditor, path::AbstractString, user_password::AbstractString, owner_password::AbstractString)
save_encrypted_to_bytes(e::DocumentEditor, user_password::AbstractString, owner_password::AbstractString) -> Vector{UInt8}
convert_to_pdf_a(e::DocumentEditor, level::Integer)
Функция Описание
save(e, path) Сохранить отредактированный документ по пути.
save_to_bytes(e) Сериализовать отредактированный документ в байты.
save_to_bytes_with_options(e, compress, garbage_collect, linearize) Сериализовать с опциями сжатия / сборки мусора / линеаризации.
extract_pages_to_bytes(e, pages) Извлечь подмножество страниц в новый PDF в памяти.
save_encrypted(e, path, user_pw, owner_pw) Сохранить с шифрованием AES-256 по пути.
save_encrypted_to_bytes(e, user_pw, owner_pw) Сохранить с шифрованием AES-256 в байты.
convert_to_pdf_a(e, level) Конвертировать в PDF/A на месте (level: 0=A1b…7=A3u).

Слияние и вложения

Функция Описание
merge_from(e, source_path) Слить страницы из PDF на диске.
merge_from_bytes(e, data) Слить страницы из буфера PDF в памяти.
embed_file(e, name, data) Встроить вложение файла (name, байты data).

Операции со страницами

rotate_all_pages(e::DocumentEditor, degrees::Integer)
rotate_page_by(e::DocumentEditor, page::Integer, degrees::Integer)
get_page_rotation(e::DocumentEditor, page::Integer) -> Int
set_page_rotation(e::DocumentEditor, page::Integer, degrees::Integer)
delete_page(e::DocumentEditor, page::Integer)
move_page(e::DocumentEditor, from::Integer, to::Integer)
Функция Описание
rotate_all_pages(e, degrees) Повернуть все страницы (относительно текущего угла).
rotate_page_by(e, page, degrees) Повернуть страницу аддитивно.
get_page_rotation(e, page) Абсолютный угол поворота страницы.
set_page_rotation(e, page, degrees) Установить абсолютный угол поворота страницы.
delete_page(e, page) Удалить страницу.
move_page(e, from, to) Переместить страницу из одного индекса в другой.

Боксы страницы и обрезка

get_page_media_box(e::DocumentEditor, page::Integer) -> NTuple{4,Float64}
get_page_crop_box(e::DocumentEditor, page::Integer) -> NTuple{4,Float64}
set_page_media_box(e::DocumentEditor, page::Integer, x, y, w, h)
set_page_crop_box(e::DocumentEditor, page::Integer, x, y, w, h)
crop_margins(e::DocumentEditor, left::Real, right::Real, top::Real, bottom::Real)
Функция Описание
get_page_media_box(e, page) Получить MediaBox страницы.
get_page_crop_box(e, page) Получить CropBox страницы.
set_page_media_box(e, page, x, y, w, h) Установить MediaBox страницы.
set_page_crop_box(e, page, x, y, w, h) Установить CropBox страницы.
crop_margins(e, left, right, top, bottom) Обрезать все страницы по полям (в пользовательских координатах).

Стирание / закрашивание

erase_region(e::DocumentEditor, page::Integer, x, y, w, h)
erase_regions(e::DocumentEditor, page::Integer, rects::AbstractVector{<:NTuple{4,<:Real}})
clear_erase_regions(e::DocumentEditor, page::Integer)
Функция Описание
erase_region(e, page, x, y, w, h) Стереть одну прямоугольную область.
erase_regions(e, page, rects) Стереть несколько областей (rects — вектор кортежей (x, y, w, h)).
clear_erase_regions(e, page) Очистить все ожидающие записи стирания для страницы.

Удаление колонтитулов и артефактов

erase_header(d::PdfDocument, page::Integer)
erase_footer(d::PdfDocument, page::Integer)
erase_artifacts(d::PdfDocument, page::Integer)
remove_headers(d::PdfDocument, threshold::Real = 0.5)
remove_footers(d::PdfDocument, threshold::Real = 0.5)
remove_artifacts(d::PdfDocument, threshold::Real = 0.5)
Функция Описание
erase_header(d, page) / erase_footer(d, page) / erase_artifacts(d, page) Стереть обнаруженный верхний / нижний колонтитул или артефакты на странице.
remove_headers(d, threshold=0.5) / remove_footers(...) / remove_artifacts(...) Удалить повторяющиеся колонтитулы / артефакты по всему документу выше порога частоты.

Развёртка (flatten) аннотаций

flatten_annotations(e::DocumentEditor, page::Integer)
flatten_all_annotations(e::DocumentEditor)
is_page_marked_for_flatten(e::DocumentEditor, page::Integer) -> Bool
unmark_page_for_flatten(e::DocumentEditor, page::Integer)

Редактирование (Redaction)

apply_page_redactions(e::DocumentEditor, page::Integer)
apply_all_redactions(e::DocumentEditor)
is_page_marked_for_redaction(e::DocumentEditor, page::Integer) -> Bool
unmark_page_for_redaction(e::DocumentEditor, page::Integer)
redaction_add(e::DocumentEditor, page::Integer, x1, y1, x2, y2, r, g, b)
redaction_count(e::DocumentEditor, page::Integer) -> Int
redaction_apply(e::DocumentEditor, scrub_metadata::Bool, r::Real, g::Real, b::Real) -> Int
redaction_scrub_metadata(e::DocumentEditor) -> Int
Функция Описание
apply_page_redactions(e, page) Применить (впечатать) редактирование на странице.
apply_all_redactions(e) Применить все ожидающие операции редактирования.
is_page_marked_for_redaction(e, page) Помечена ли страница для редактирования.
unmark_page_for_redaction(e, page) Снять с страницы метку редактирования.
redaction_add(e, page, x1, y1, x2, y2, r, g, b) Поставить в очередь прямоугольник редактирования с цветом перекрытия (DeviceRGB, 0–1).
redaction_count(e, page) Количество поставленных в очередь областей редактирования на странице.
redaction_apply(e, scrub_metadata, r, g, b) Деструктивно применить все поставленные в очередь операции редактирования; возвращает количество удалённых глифов.
redaction_scrub_metadata(e) Удалить Info/XMP/JavaScript/EmbeddedFiles; возвращает количество удалённых записей.

Заполнение и развёртка форм

set_form_field_value(e::DocumentEditor, name::AbstractString, value::AbstractString)
flatten_forms(e::DocumentEditor)
flatten_forms_on_page(e::DocumentEditor, page::Integer)
flatten_warnings_count(e::DocumentEditor) -> Int
flatten_warning(e::DocumentEditor, index::Integer) -> String
import_fdf_bytes(e::DocumentEditor, data::AbstractVector{UInt8})
import_xfdf_bytes(e::DocumentEditor, data::AbstractVector{UInt8})
Функция Описание
set_form_field_value(e, name, value) Установить значение поля формы (UTF-8).
flatten_forms(e) Развернуть все формы (впечатать значения в содержимое страницы).
flatten_forms_on_page(e, page) Развернуть формы на одной странице.
flatten_warnings_count(e) Количество предупреждений от последнего сохранения с развёрткой форм.
flatten_warning(e, index) Строка предупреждения развёртки с индексом index.
import_fdf_bytes(e, data) Импортировать данные формы FDF из байтов.
import_xfdf_bytes(e, data) Импортировать данные формы XFDF из байтов.

Печать штрихкодов

add_barcode_to_page(e::DocumentEditor, page::Integer, b::Barcode, x, y, width, height)

Впечатать Barcode на странице в прямоугольнике (x, y, width, height). См. Штрихкоды.

Жизненный цикл

close!(e::DocumentEditor) освобождает хендл.


Pdf

Лёгкий хендл для создания, возвращаемый фабриками from_*.

Фабрики

from_markdown(input::AbstractString) -> Pdf
from_html(input::AbstractString) -> Pdf
from_text(input::AbstractString) -> Pdf
from_image(path::AbstractString) -> Pdf
from_image_bytes(data::AbstractVector{UInt8}) -> Pdf
from_html_css(html::AbstractString, css::AbstractString, font_bytes::Union{Nothing,AbstractVector{UInt8}} = nothing) -> Pdf
from_html_css_with_fonts(html::AbstractString, css::AbstractString, families::AbstractVector{<:AbstractString}, fonts::AbstractVector{<:AbstractVector{UInt8}}) -> Pdf
Функция Описание
from_markdown(input) Построить Pdf из Markdown.
from_html(input) Построить Pdf из HTML.
from_text(input) Построить Pdf из обычного текста.
from_image(path) Построить Pdf из файла изображения.
from_image_bytes(data) Построить Pdf из байтов изображения в памяти.
from_html_css(html, css, font_bytes=nothing) Построить из HTML + CSS с одним опциональным встроенным шрифтом.
from_html_css_with_fonts(html, css, families, fonts) Построить из HTML + CSS с каскадом из нескольких шрифтов (families[i] называет fonts[i]).

Методы

Функция Возвращает Описание
save(p, path) Записать построенный PDF по пути.
to_bytes(p) Vector{UInt8} Сериализовать построенный PDF в байты.
get_page_count(p) Int Количество страниц у построителя Pdf.
close!(p) Освободить хендл.

merge_pdfs

merge_pdfs(paths::AbstractVector{<:AbstractString}) -> Vector{UInt8}

Слить PDF-файлы по путям paths (по порядку) в единый байтовый буфер PDF.

Импорт офисных форматов

open_from_docx_bytes(data::AbstractVector{UInt8}) -> Pdf
open_from_pptx_bytes(data::AbstractVector{UInt8}) -> Pdf
open_from_xlsx_bytes(data::AbstractVector{UInt8}) -> Pdf

Конвертировать байты DOCX / PPTX / XLSX в Pdf.


DocumentBuilder

Гибкий, осведомлённый о структуре построитель PDF. Создавайте страницы с помощью a4_page / letter_page / page, выкладывайте содержимое на возвращённом PageBuilder, вызывайте done для фиксации каждой страницы, затем build / save / зашифрованные варианты.

DocumentBuilder() -> DocumentBuilder

Конфигурация уровня документа

set_title(b::DocumentBuilder, value::AbstractString)
set_author(b::DocumentBuilder, value::AbstractString)
set_subject(b::DocumentBuilder, value::AbstractString)
set_keywords(b::DocumentBuilder, value::AbstractString)
set_creator(b::DocumentBuilder, value::AbstractString)
on_open(b::DocumentBuilder, value::AbstractString)
language(b::DocumentBuilder, value::AbstractString)
tagged_pdf_ua1(b::DocumentBuilder)
role_map(b::DocumentBuilder, custom::AbstractString, standard::AbstractString)
register_embedded_font(b::DocumentBuilder, name::AbstractString, f::EmbeddedFont)
Функция Описание
set_title / set_author / set_subject / set_keywords / set_creator Установить соответствующее поле метаданных /Info.
on_open(b, value) Установить JavaScript-действие при открытии документа.
language(b, value) Установить язык документа (например, "en-US").
tagged_pdf_ua1(b) Включить режим тегированного PDF/UA-1.
role_map(b, custom, standard) Сопоставить пользовательский тип структуры со стандартным.
register_embedded_font(b, name, f) Зарегистрировать загруженный EmbeddedFont под именем name (поглощает шрифт).

Страницы

a4_page(b::DocumentBuilder) -> PageBuilder
letter_page(b::DocumentBuilder) -> PageBuilder
page(b::DocumentBuilder, width::Real, height::Real) -> PageBuilder

Вывод

build(b::DocumentBuilder) -> Vector{UInt8}
save(b::DocumentBuilder, path::AbstractString)
save_encrypted_builder(b::DocumentBuilder, path::AbstractString, user_password::AbstractString, owner_password::AbstractString)
to_bytes_encrypted(b::DocumentBuilder, user_password::AbstractString, owner_password::AbstractString) -> Vector{UInt8}
Функция Описание
build(b) Построить и вернуть байты PDF (построитель всё равно нужно закрыть).
save(b, path) Построить и сохранить по пути.
save_encrypted_builder(b, path, user_pw, owner_pw) Построить и сохранить с шифрованием AES-256.
to_bytes_encrypted(b, user_pw, owner_pw) Построить зашифрованные байты (AES-256).

EmbeddedFont

embedded_font_from_file(path::AbstractString) -> EmbeddedFont
embedded_font_from_bytes(data::AbstractVector{UInt8}; name::Union{Nothing,AbstractString} = nothing) -> EmbeddedFont
Функция Описание
embedded_font_from_file(path) Загрузить шрифт TTF/OTF из пути.
embedded_font_from_bytes(data; name) Загрузить шрифт из байтов (name может быть пустым — тогда используется PostScript-имя).

PageBuilder

Возвращается a4_page / letter_page / page. Все методы изменяют страницу на месте; вызывайте done(p), чтобы зафиксировать её в родительском построителе (это поглощает хендл страницы).

Текст и вёрстка

font(p::PageBuilder, name::AbstractString, size::Real)
at(p::PageBuilder, x::Real, y::Real)
heading(p::PageBuilder, level::Integer, text::AbstractString)
Метод Описание
font(p, name, size) Установить шрифт и размер для последующего текста.
at(p, x, y) Переместить курсор в абсолютную позицию (x, y) (в точках, от левого нижнего угла).
heading(p, level, text) Вывести заголовок уровня level (1–6).

Следующие методы со строковым значением имеют общую сигнатуру f(p::PageBuilder, value::AbstractString):

Метод Описание
text(p, value) Вывести фрагмент основного текста.
paragraph(p, value) Вывести абзац с переносом строк.
link_url(p, value) Сделать предыдущий текст ссылкой-URL.
link_named(p, value) Связать предыдущий текст с именованным назначением.
link_javascript(p, value) Прикрепить к предыдущему тексту JavaScript-действие.
on_open(p, value) Установить JavaScript-действие при открытии страницы.
on_close(p, value) Установить JavaScript-действие при закрытии страницы.
field_keystroke(p, value) / field_format(p, value) / field_validate(p, value) / field_calculate(p, value) Прикрепить JavaScript-действия полей AcroForm.
sticky_note(p, value) Прикрепить заметку-стикер к предыдущему содержимому.
watermark(p, value) Добавить текстовый водяной знак.
stamp(p, value) Добавить аннотацию-штамп.
inline(p, value) Добавить встроенный фрагмент текста.
inline_bold(p, value) Добавить встроенный фрагмент текста полужирным шрифтом.
inline_italic(p, value) Добавить встроенный фрагмент текста курсивом.

Методы вёрстки без аргументов, все f(p::PageBuilder):

Метод Описание
horizontal_rule(p) Нарисовать горизонтальную линию.
space(p) Вставить вертикальный отступ.
newline(p) Перейти на новую строку.
new_page_same_size(p) Начать новую страницу с теми же размерами.
watermark_confidential(p) Добавить водяной знак «CONFIDENTIAL».
watermark_draft(p) Добавить водяной знак «DRAFT».
link_page(p::PageBuilder, page_index::Integer)
sticky_note_at(p::PageBuilder, x::Real, y::Real, text::AbstractString)
freetext(p::PageBuilder, x::Real, y::Real, w::Real, h::Real, text::AbstractString)
footnote(p::PageBuilder, ref_mark::AbstractString, note_text::AbstractString)
columns(p::PageBuilder, column_count::Integer, gap_pt::Real, text::AbstractString)
inline_color(p::PageBuilder, r::Real, g::Real, b_::Real, text::AbstractString)
Метод Описание
link_page(p, page_index) Связать предыдущий текст с внутренним индексом страницы.
sticky_note_at(p, x, y, text) Разместить отдельную заметку-стикер.
freetext(p, x, y, w, h, text) Разместить свободно расположенную текстовую аннотацию в прямоугольнике.
footnote(p, ref_mark, note_text) Добавить сноску (встроенный надстрочный знак + текст в конце страницы).
columns(p, column_count, gap_pt, text) Выложить текст по сбалансированным колонкам.
inline_color(p, r, g, b_, text) Добавить встроенный фрагмент текста, окрашенный в RGB (каналы 0–1).

Аннотации разметки (markup)

Все четыре метода имеют сигнатуру f(p::PageBuilder, r::Real, g::Real, b_::Real) и применяются к предыдущему тексту с RGB-цветом:

Метод Описание
highlight(p, r, g, b) Выделить предыдущий текст.
underline(p, r, g, b) Подчеркнуть предыдущий текст.
strikeout(p, r, g, b) Зачеркнуть предыдущий текст.
squiggly(p, r, g, b) Подчеркнуть предыдущий текст волнистой линией.

Виджеты форм

text_field(p::PageBuilder, name, x, y, w, h; default_value::Union{Nothing,AbstractString} = nothing)
checkbox(p::PageBuilder, name, x, y, w, h, checked::Bool)
combo_box(p::PageBuilder, name, x, y, w, h, options::AbstractVector{<:AbstractString}; selected::Union{Nothing,AbstractString} = nothing)
radio_group(p::PageBuilder, name, values, xs, ys, ws, hs; selected::Union{Nothing,AbstractString} = nothing)
push_button(p::PageBuilder, name, x, y, w, h, caption::AbstractString)
signature_field(p::PageBuilder, name, x, y, w, h)
Метод Описание
text_field(p, name, x, y, w, h; default_value) Добавить однострочное текстовое поле.
checkbox(p, name, x, y, w, h, checked) Добавить флажок с начальным состоянием.
combo_box(p, name, x, y, w, h, options; selected) Добавить выпадающий список.
radio_group(p, name, values, xs, ys, ws, hs; selected) Добавить группу переключателей (параллельные массивы описывают каждую кнопку).
push_button(p, name, x, y, w, h, caption) Добавить нажимаемую кнопку.
signature_field(p, name, x, y, w, h) Добавить незаполненное поле для подписи.

Изображения и штрихкоды

image(p::PageBuilder, bytes::AbstractVector{UInt8}, x, y, w, h)
image_with_alt(p::PageBuilder, bytes::AbstractVector{UInt8}, x, y, w, h, alt_text::AbstractString)
image_artifact(p::PageBuilder, bytes::AbstractVector{UInt8}, x, y, w, h)
barcode_1d(p::PageBuilder, barcode_type::Integer, data::AbstractString, x, y, w, h)
barcode_qr(p::PageBuilder, data::AbstractString, x, y, size::Real)
Метод Описание
image(p, bytes, x, y, w, h) Встроить изображение (сырые JPEG/PNG/WebP).
image_with_alt(p, bytes, x, y, w, h, alt_text) Встроить изображение с альтернативным текстом для доступности.
image_artifact(p, bytes, x, y, w, h) Встроить декоративное изображение как /Artifact.
barcode_1d(p, barcode_type, data, x, y, w, h) Разместить одномерный штрихкод (barcode_type: 0=Code128…7=Codabar).
barcode_qr(p, data, x, y, size) Разместить квадратный QR-код.

Векторная графика

rect(p::PageBuilder, x, y, w, h)
filled_rect(p::PageBuilder, x, y, w, h, r, g, b_)
line(p::PageBuilder, x1, y1, x2, y2)
stroke_rect(p::PageBuilder, x, y, w, h, width, r, g, b_)
stroke_line(p::PageBuilder, x1, y1, x2, y2, width, r, g, b_)
stroke_rect_dashed(p::PageBuilder, x, y, w, h, width, r, g, b_, dash_array::AbstractVector{<:Real}, phase::Real)
stroke_line_dashed(p::PageBuilder, x1, y1, x2, y2, width, r, g, b_, dash_array::AbstractVector{<:Real}, phase::Real)
text_in_rect(p::PageBuilder, x, y, w, h, text::AbstractString, align::Integer)
Метод Описание
rect(p, x, y, w, h) Обведённый чёрный прямоугольник толщиной 1pt.
filled_rect(p, x, y, w, h, r, g, b) Закрашенный прямоугольник в RGB (0–1).
line(p, x1, y1, x2, y2) Чёрная линия толщиной 1pt.
stroke_rect(p, x, y, w, h, width, r, g, b) Обведённый прямоугольник толщиной width pt, цвет RGB.
stroke_line(p, x1, y1, x2, y2, width, r, g, b) Обведённая линия толщиной width pt, цвет RGB.
stroke_rect_dashed(...) Пунктирный обведённый прямоугольник (dash_array — длины штрихов/пробелов, phase — смещение).
stroke_line_dashed(...) Пунктирная обведённая линия.
text_in_rect(p, x, y, w, h, text, align) Нарисовать текст внутри прямоугольника (align: 0=по левому краю, 1=по центру, 2=по правому краю).

Таблицы

table(p::PageBuilder, n_columns::Integer, widths::AbstractVector{<:Real}, aligns::AbstractVector{<:Integer}, n_rows::Integer, cell_strings::AbstractMatrix{<:AbstractString}, has_header::Bool)
streaming_table_begin(p::PageBuilder, headers::AbstractVector{<:AbstractString}, widths::AbstractVector{<:Real}, aligns::AbstractVector{<:Integer}, repeat_header::Bool)
streaming_table_begin_v2(p::PageBuilder, headers, widths, aligns, repeat_header::Bool, mode::Integer, sample_rows::Integer, min_col_width_pt::Real, max_col_width_pt::Real, max_rowspan::Integer)
streaming_table_set_batch_size(p::PageBuilder, batch_size::Integer)
streaming_table_pending_row_count(p::PageBuilder) -> Int
streaming_table_batch_count(p::PageBuilder) -> Int
streaming_table_push_row(p::PageBuilder, cells::AbstractVector{<:AbstractString})
streaming_table_push_row_v2(p::PageBuilder, cells::AbstractVector{<:AbstractString}, rowspans::AbstractVector{<:Integer})
streaming_table_flush(p::PageBuilder)
streaming_table_finish(p::PageBuilder)
Метод Описание
table(p, n_columns, widths, aligns, n_rows, cell_strings, has_header) Вывести буферизованную таблицу (aligns: 0=по левому краю/1=по центру/2=по правому краю; cell_strings — построчная матрица n_rows × n_columns).
streaming_table_begin(p, headers, widths, aligns, repeat_header) Открыть потоковую таблицу (параллельные массивы длиной n_columns).
streaming_table_begin_v2(...) Открыть потоковую таблицу с режимом ширины mode (0=Fixed, 1=Sample, 2=AutoAll) и max_rowspan.
streaming_table_set_batch_size(p, batch_size) Установить размер пакета (0 → 256).
streaming_table_pending_row_count(p) Строки, добавленные с момента последней границы пакета.
streaming_table_batch_count(p) Количество завершённых пакетов на данный момент.
streaming_table_push_row(p, cells) Добавить одну строку (rowspan=1).
streaming_table_push_row_v2(p, cells, rowspans) Добавить одну строку с rowspan для каждой ячейки (≥2 объединяемых строк).
streaming_table_flush(p) Сбросить текущий пакет.
streaming_table_finish(p) Завершить потоковую таблицу.

Фиксация

done(p::PageBuilder)   # commit this page's buffered operations to its parent builder (consumes the handle)

Типы значений

Неизменяемые структуры, возвращаемые при извлечении. Bbox имеет поля x, y, width, height (в пользовательских единицах PDF).

Тип Поля
Bbox x, y, width, height (Float64)
Char character::UInt32, bbox::Bbox, font_name::String, font_size::Float64
Word text, bbox, font_name, font_size, bold
TextLine text, bbox, word_count
Table row_count, col_count, has_header, cells (используйте cell(t, row, col) для ячейки с индексом от нуля)
Font name, type, encoding, embedded, subset
Image width, height, bitsPerComponent, format, colorspace, data
Annotation type, subtype, content, author, rect::Bbox, borderWidth
Path bbox::Bbox, strokeWidth, hasStroke, hasFill, operationCount
SearchResult text, page, bbox::Bbox
FormField name, value, type, readonly, required
PdfVersion major::Int, minor::Int
cell(t::Table, row::Integer, col::Integer) -> String

Аксессоры FormField

form_field_name(f::FormField) -> String
form_field_value(f::FormField) -> String
form_field_type(f::FormField) -> String
form_field_is_readonly(f::FormField) -> Bool
form_field_is_required(f::FormField) -> Bool

ElementList

element_count(l::ElementList) -> Int
element_type(l::ElementList, index::Integer) -> String
element_text(l::ElementList, index::Integer) -> String
element_rect(l::ElementList, index::Integer) -> Bbox
elements_to_json(l::ElementList) -> String
close!(l::ElementList)

Электронные подписи

Certificate

certificate_load_from_bytes(data::AbstractVector{UInt8}, password::AbstractString = "") -> Certificate
certificate_load_from_pem(cert_pem::AbstractString, key_pem::AbstractString) -> Certificate
certificate_get_subject(c::Certificate) -> String
certificate_get_issuer(c::Certificate) -> String
certificate_get_serial(c::Certificate) -> String
certificate_get_validity(c::Certificate) -> Tuple{Int,Int}
certificate_is_valid(c::Certificate) -> Bool
Функция Описание
certificate_load_from_bytes(data, password="") Загрузить учётные данные для подписи из байтов PKCS#12 / PFX.
certificate_load_from_pem(cert_pem, key_pem) Загрузить из PEM-сертификата и закрытого ключа.
certificate_get_subject(c) / certificate_get_issuer(c) / certificate_get_serial(c) Строки субъекта / издателя / серийного номера.
certificate_get_validity(c) Окно действительности как (not_before, not_after) в секундах Unix-времени.
certificate_is_valid(c) Действителен ли сертификат в данный момент.

Подписание

sign_bytes(pdf::AbstractVector{UInt8}, cert::Certificate, reason::AbstractString, location::AbstractString) -> Vector{UInt8}
sign_bytes_pades(pdf::AbstractVector{UInt8}, cert::Certificate, level::Integer, tsa_url::Union{Nothing,AbstractString}, reason::AbstractString, location::AbstractString; certs = Vector{UInt8}[], crls = Vector{UInt8}[], ocsps = Vector{UInt8}[]) -> Vector{UInt8}
sign_bytes_pades_opts(pdf::AbstractVector{UInt8}, cert::Certificate, level::Integer, tsa_url, reason, location; certs = Vector{UInt8}[], crls = Vector{UInt8}[], ocsps = Vector{UInt8}[]) -> Vector{UInt8}
add_timestamp(pdf_data::AbstractVector{UInt8}, sig_index::Integer, tsa_url::AbstractString) -> Vector{UInt8}
Функция Описание
sign_bytes(pdf, cert, reason, location) Подписать сырые байты PDF; возвращает подписанный PDF.
sign_bytes_pades(pdf, cert, level, tsa_url, reason, location; certs, crls, ocsps) Базовое подписание PAdES (level: 0=B-B, 1=B-T, 2=B-LT; tsa_url обязателен при уровне ≥ 1).
sign_bytes_pades_opts(...) Вариант sign_bytes_pades с опциями в виде структуры (идентичное поведение, строит PadesSignOptionsC).
add_timestamp(pdf_data, sig_index, tsa_url) Добавить метку времени RFC 3161 к подписи; возвращает PDF с проставленной меткой времени.

SignatureInfo

signature_get_signer_name(s::SignatureInfo) -> String
signature_get_signing_reason(s::SignatureInfo) -> String
signature_get_signing_location(s::SignatureInfo) -> String
signature_get_signing_time(s::SignatureInfo) -> Int
signature_get_certificate(s::SignatureInfo) -> Certificate
signature_get_pades_level(s::SignatureInfo) -> Int
signature_has_timestamp(s::SignatureInfo) -> Bool
signature_get_timestamp(s::SignatureInfo) -> Timestamp
signature_add_timestamp(s::SignatureInfo, ts) -> Bool
signature_verify(s::SignatureInfo) -> Int
signature_verify_detached(s::SignatureInfo, pdf::AbstractVector{UInt8}) -> Int
Функция Описание
signature_get_signer_name(s) / _reason(s) / _location(s) Имя подписавшего / причина / место подписания.
signature_get_signing_time(s) Время подписания (секунды Unix-времени).
signature_get_certificate(s) Certificate подписавшего (владение передаётся вызывающему).
signature_get_pades_level(s) Код уровня PAdES.
signature_has_timestamp(s) Присутствует ли встроенная метка времени RFC 3161.
signature_get_timestamp(s) Встроенная Timestamp (владение передаётся вызывающему).
signature_add_timestamp(s, ts) Прикрепить Timestamp; возвращает true при успехе.
signature_verify(s) Криптографическая проверка атрибутов подписавшего (1=действительна, 0=недействительна, -1=неизвестно).
signature_verify_detached(s, pdf) Полная сквозная проверка по байтам всего PDF (1/0/-1).

Timestamp

timestamp_parse(data::AbstractVector{UInt8}) -> Timestamp
timestamp_get_token(t::Timestamp) -> Vector{UInt8}
timestamp_get_message_imprint(t::Timestamp) -> Vector{UInt8}
timestamp_get_time(t::Timestamp) -> Int
timestamp_get_serial(t::Timestamp) -> String
timestamp_get_tsa_name(t::Timestamp) -> String
timestamp_get_policy_oid(t::Timestamp) -> String
timestamp_get_hash_algorithm(t::Timestamp) -> Int
timestamp_verify(t::Timestamp) -> Bool
Функция Описание
timestamp_parse(data) Разобрать DER-токен RFC 3161 TimeStampToken (либо «голый» TSTInfo).
timestamp_get_token(t) Сырые байты токена.
timestamp_get_message_imprint(t) Байты дайджеста отпечатка сообщения.
timestamp_get_time(t) Время метки (секунды Unix-времени).
timestamp_get_serial(t) Строка серийного номера.
timestamp_get_tsa_name(t) Имя TSA.
timestamp_get_policy_oid(t) OID политики.
timestamp_get_hash_algorithm(t) Код алгоритма дайджеста.
timestamp_verify(t) Проходит ли токен проверку.

TsaClient

tsa_client_create(url::AbstractString; username = nothing, password = nothing, timeout::Integer = 30, hash_algo::Integer = 0, use_nonce::Bool = true, cert_req::Bool = true) -> TsaClient
tsa_request_timestamp(t::TsaClient, data::AbstractVector{UInt8}) -> Timestamp
tsa_request_timestamp_hash(t::TsaClient, hash::AbstractVector{UInt8}, hash_algo::Integer) -> Timestamp
Функция Описание
tsa_client_create(url; …) Создать клиент TSA по RFC 3161 (опциональная базовая аутентификация, таймаут, алгоритм хэширования, nonce, cert-req).
tsa_request_timestamp(t, data) Запросить метку времени по data (сетевой ввод-вывод).
tsa_request_timestamp_hash(t, hash, hash_algo) Запросить метку времени по заранее вычисленному дайджесту.

Dss (хранилище данных для проверки подписи)

dss_cert_count(d::Dss) -> Int
dss_crl_count(d::Dss) -> Int
dss_ocsp_count(d::Dss) -> Int
dss_vri_count(d::Dss) -> Int
dss_get_cert(d::Dss, index::Integer) -> Vector{UInt8}
dss_get_crl(d::Dss, index::Integer) -> Vector{UInt8}
dss_get_ocsp(d::Dss, index::Integer) -> Vector{UInt8}
Функция Описание
dss_cert_count(d) / dss_crl_count(d) / dss_ocsp_count(d) / dss_vri_count(d) Количество сертификатов / CRL / ответов OCSP / записей VRI.
dss_get_cert(d, index) / dss_get_crl(d, index) / dss_get_ocsp(d, index) Байты сертификата / CRL / ответа OCSP с индексом index.

Результаты валидации

validate_pdf_a / validate_pdf_ua / validate_pdf_x возвращают PdfAResults / UaResults / PdfXResults.

Функция Возвращает Описание
is_compliant(r::PdfAResults) Bool Соответствует ли документ PDF/A.
is_compliant(r::PdfXResults) Bool Соответствует ли документ PDF/X.
is_accessible(r::UaResults) Bool Доступен ли документ по стандарту PDF/UA.
errors(r) Vector{String} Сообщения об ошибках (PdfAResults / UaResults / PdfXResults).
warnings(r) Vector{String} Предупреждения.
ua_stats(r::UaResults) NamedTuple Счётчики элементов доступности (structure, images, tables, forms, annotations, pages).
pdf_a_error_count(r) / pdf_a_warning_count(r) Int Количество ошибок / предупреждений PDF/A.
pdf_ua_error_count(r) / pdf_ua_warning_count(r) Int Количество ошибок / предупреждений PDF/UA.
pdf_x_error_count(r) Int Количество ошибок PDF/X.

Штрихкоды

generate_qr_code(data::AbstractString, error_correction::Integer = 0, size_px::Integer = 256) -> Barcode
generate_barcode(data::AbstractString, format::Integer = 0, size_px::Integer = 256) -> Barcode
barcode_get_data(b::Barcode) -> String
barcode_get_format(b::Barcode) -> Int
barcode_get_confidence(b::Barcode) -> Float64
barcode_get_image_png(b::Barcode, size_px::Integer = 256) -> Vector{UInt8}
barcode_get_svg(b::Barcode, size_px::Integer = 256) -> String
Функция Описание
generate_qr_code(data, error_correction=0, size_px=256) Сгенерировать QR-код.
generate_barcode(data, format=0, size_px=256) Сгенерировать одномерный/двумерный штрихкод.
barcode_get_data(b) Строка декодированной/закодированной полезной нагрузки.
barcode_get_format(b) Код формата.
barcode_get_confidence(b) Уверенность распознавания (0.0–1.0).
barcode_get_image_png(b, size_px=256) Отрендерить в байты PNG.
barcode_get_svg(b, size_px=256) Отрендерить в строку SVG.

Впечатать штрихкод на странице редактора с помощью add_barcode_to_page(e, page, b, x, y, width, height).


OCR

OcrEngine

ocr_engine_create(det_model_path::AbstractString, rec_model_path::AbstractString, dict_path::AbstractString) -> OcrEngine

Создать движок OCR из путей к модели обнаружения, модели распознавания и файлу словаря. Используйте его с ocr_extract_text(doc, page, engine) и page_needs_ocr(doc, page) (см. PdfDocument › OCR). close!(o::OcrEngine) освобождает его.

Предзагрузка моделей

prefetch_models(languages_csv::AbstractString) -> String
prefetch_available() -> Int
model_manifest() -> String
Функция Описание
prefetch_models(languages_csv) Предзагрузить модели OCR/анализа вёрстки для языков, перечисленных через запятую.
prefetch_available() Доступна ли предзагрузка моделей.
model_manifest() Манифест встроенных моделей (JSON/строка).

Глобальная конфигурация и криптография

set_log_level(level::Integer)   # 0=Off 1=Error 2=Warn 3=Info 4=Debug 5=Trace
get_log_level() -> Int
set_max_ops_per_stream(limit::Integer) -> Int
set_preserve_unmapped_glyphs(preserve::Integer) -> Int
Функция Описание
set_log_level(level) Установить глобальный уровень логирования (0–5).
get_log_level() Получить текущий глобальный уровень логирования.
set_max_ops_per_stream(limit) Установить лимит операций содержимого на поток; возвращает предыдущий лимит.
set_preserve_unmapped_glyphs(preserve) Переключить сохранение несопоставленных глифов; возвращает предыдущее значение настройки.

Криптографическая политика и инвентаризация

crypto_active_provider() -> String
crypto_cbom() -> String
crypto_inventory() -> String
crypto_policy() -> String
crypto_set_policy(spec::AbstractString) -> Int
crypto_fips_available() -> Int
crypto_use_fips() -> Int
Функция Описание
crypto_active_provider() Имя активного криптопровайдера.
crypto_cbom() Спецификация криптографических компонентов (Cryptographic Bill of Materials, JSON).
crypto_inventory() Инвентаризация криптографических алгоритмов (JSON).
crypto_policy() Активная криптографическая политика.
crypto_set_policy(spec) Установить активную криптографическую политику из spec; возвращает код статуса.
crypto_fips_available() Доступен ли провайдер FIPS.
crypto_use_fips() Активен ли режим FIPS.

Обработка ошибок

Любой неуспешный статус C ABI выбрасывает PdfOxideError:

using PdfOxide

try
    doc = open_document("file.pdf")
    text = extract_text(doc, 0)
    close!(doc)
catch e
    if e isa PdfOxideError
        @warn "PDF error" code=e.code op=e.op
    else
        rethrow()
    end
end

PdfOxideError <: Exception несёт в себе числовой код code из C ABI и имя операции, которая завершилась неудачей.


Полный пример

using PdfOxide

# --- Creation ---
doc_bytes = let b = DocumentBuilder()
    set_title(b, "Report")
    p = letter_page(b)
    font(p, "Helvetica", 18)
    at(p, 72, 720)
    heading(p, 1, "Quarterly Report")
    paragraph(p, "Generated by PDF Oxide.")
    done(p)
    out = build(b)
    close!(b)
    out
end

# --- Extraction ---
doc = open_from_bytes(doc_bytes)
println("Pages: ", page_count(doc))
for i in 0:page_count(doc)-1
    println("Page ", i + 1, ": ", length(extract_text(doc, i)), " chars")
end

# Words + tables
words = extract_words(doc, 0)
tables = extract_tables(doc, 0)

# Search
for hit in search_all(doc, "report", false)
    println("Found on page ", hit.page, " at ", hit.bbox)
end
close!(doc)

# --- Editing ---
e = open_editor("input.pdf")
rotate_all_pages(e, 90)
set_form_field_value(e, "name", "Jane Doe")
flatten_forms(e)
save(e, "output.pdf")
close!(e)

# --- Rendering ---
doc = open_document("input.pdf")
img = render_page(doc, 0)          # PNG
save(img, "page0.png")
close!(img)
close!(doc)

Other Language Bindings

PDF Oxide предоставляет нативные привязки для всех основных экосистем: Rust, Python, Node.js, WASM, C#, Golang, Java, PHP, Ruby, C++, Swift, Kotlin, Dart, R, Zig, Scala, Clojure, Objective-C, и Elixir.

Дальнейшие шаги