pdf-backends
GitHub指导 Xberg PDF 引擎的后端配置、选择与诊断,涵盖 Native 和 Pdfium 两种后端的使用规范、OCR 回退机制及渲染会话管理。
Trigger Scenarios
Install
npx skills add xberg-io/xberg --skill pdf-backends -g -y
SKILL.md
Frontmatter
{
"name": "pdf-backends",
"description": "Change or diagnose Xberg PDF extraction, native\/Pdfium backend selection, PDF rendering sessions, encrypted documents, OCR fallback, or backend-specific capability gaps. Load for PDF engine work, not generic image OCR."
}
PDF backends
PdfConfig.backend selects PdfBackend::Native (default) or PdfBackend::Pdfium. Backend choice is explicit: never
silently return native output when Pdfium was requested.
Native backend
- The native engine is
xberg_native_pdfand supports the full Xberg PDF pipeline: text and structure extraction, page rendering/OCR fallback, tables, annotations, images, attachments, and richer metadata. config.force_ocrforces the whole document;config.force_ocr_pagesselects pages. Otherwise, pages without usable native text can enter the OCR stage insidePdfExtractor; OCR is not a second PDF extractor in the registry.PdfRenderSessioninpdf/render.rsopens document bytes once and exposes page count and page rendering. Use it for repeated page renders instead of reopening the same document for each page. It is a Rust primitive and need not be exposed by every binding.
Pdfium backend
- Pdfium requires the
pdf-pdfiumCargo feature. Selecting it without that feature must return an actionable error. - Runtime dynamic loading honors
PDFIUM_DYNAMIC_LIB_PATHas a directory containing the platform library. Build-time static and dynamic link variables are not interchangeable with runtime discovery. - Pdfium binding is process-global and operations are serialized by the engine lock. Preserve that invariant when changing concurrency.
- The Pdfium implementation intentionally has a narrower capability surface: text, page count, and Info-dictionary metadata. It warns about omitted native capabilities rather than pretending parity.
Verification
Test backend selection separately from document semantics. A missing Pdfium runtime is infrastructure failure unless
the job promises to provision it; when XBERG_REQUIRE_PDFIUM is set, skipping because the library or fixture is
absent is a failure. Use corpus fixtures through the test-corpus skill and include Pdfium artifacts in benchmark
aggregation when the adapter is enabled.
Version History
- d8e4815 Current 2026-08-28 18:30


