pdf-backends
GitHub配置 PDF 处理后端(Native/Pdfium),涵盖渲染、OCR 及元数据提取。指导后端选择策略、资源管理及测试验证,确保功能正确性。
Trigger Scenarios
Install
npx skills add xberg-io/xberg --skill pdf-backends -g -y
SKILL.md
Frontmatter
{
"name": "pdf-backends",
"type": "Playbook",
"paths": [
"crates\/xberg\/src\/pdf\/**",
"crates\/xberg\/src\/extractors\/pdf\/**",
"crates\/xberg-native-pdf\/**",
"crates\/xberg-pdfium-render\/**"
],
"title": "Pdf Backends",
"x-ai-rulez": {
"id": "pdf-backends",
"kind": "skill",
"metadata": {
"name": "pdf-backends"
}
},
"description": "Native\/Pdfium selection, rendering, encryption and OCR fallback for PDF work."
}
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
- 844bb91 Current 2026-11-03 09:37
- 3be78fd 2026-10-19 16:31
- d8e4815 2026-08-28 18:30


