Skip to content

Довідник API Julia

PDF Oxide надає ідіоматичні прив’язки для Julia (PdfOxide.jl), побудовані безпосередньо поверх C ABI бібліотеки pdf_oxide через ccall — без проміжного шим-крейту. Нативні дескриптори обгорнуті у змінювані структури (mutable struct) з фіналізаторами, C-рядки та буфери копіюються в Julia й звільняються автоматично, а будь-який неуспішний статус C ABI спричиняє виняток PdfOxideError. Індекси сторінок починаються з 0.

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) Видобути звичайний текст із сторінки (0-based).
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 на сторінці з індексом 0-based.

Пошук

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 Подання сторінки (0-based) над документом (див. 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

Легке подання сторінки (0-based), яке повертається 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) Виробник з /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_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)

Редагування (приховування конфіденційного вмісту)

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

Анотації розмітки

Усі чотири мають сигнатуру 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) Контурний прямокутник товщиною widthpt у RGB.
stroke_line(p, x1, y1, x2, y2, width, r, g, b) Контурна лінія товщиною widthpt у 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) для отримання комірки з індексом 0-based)
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-токен TimeStampToken RFC 3161 (або голий TSTInfo).
timestamp_get_token(t) Сирі байти токена.
timestamp_get_message_imprint(t) Байти дайджесту message-imprint.
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() Криптографічна специфікація матеріалів (CBOM, 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.

Наступні кроки