pdfium-agents-orchestrator
This is the routing skill for the pdfium-render skill package. It does not teach
a single API area; it maps a PDF goal onto the other 25 skills and the order to
apply them. Use it first, then follow it into the specific skills it names.
Default API surface for the whole package: pdfium-render 0.9.x. The 0.8.x line
is covered as version notes inside each skill.
The canonical pipeline
Every pdfium-render program follows the same five stages. ALWAYS run them in
this order.
1. BIND load the PDFium library once
2. LOAD open or create a PdfDocument
3. PAGES reach the page collection
4. PROCESS render / extract / edit / fill / merge / inspect
5. OUTPUT save the document or export an image
| Stage |
Owning skill |
Anchor API |
| 1 BIND |
pdfium-core-bindings-setup |
Pdfium::default(), bind_to_library |
| 2 LOAD |
pdfium-syntax-document-loading |
load_pdf_from_file, create_new_pdf |
| 3 PAGES |
pdfium-syntax-pages |
document.pages(), pages_mut() |
| 4 PROCESS |
depends on goal (see decision tree) |
varies |
| 5 OUTPUT |
pdfium-impl-saving or pdfium-impl-output-formats |
save_to_file, as_image |
Stage 4 is the only branching stage. Stages 1, 2, 3, and 5 are the same shape
for every task.
Goal-to-skill decision tree
What is the PDF goal?
|
+-- Render a page to a PNG or JPEG image?
| LOAD -> pdfium-syntax-pages -> pdfium-syntax-rendering
| -> pdfium-impl-output-formats
|
+-- Extract the text of a page or document?
| LOAD -> pdfium-syntax-pages -> pdfium-syntax-text
|
+-- Search for a phrase inside a PDF?
| LOAD -> pdfium-syntax-pages -> pdfium-syntax-text (search)
|
+-- Inspect what objects a page contains?
| LOAD -> pdfium-syntax-pages -> pdfium-syntax-page-objects
|
+-- Add or edit text/image/shape content on a page?
| LOAD -> pdfium-impl-page-objects-edit -> pdfium-impl-saving
|
+-- Fill in a PDF form?
| LOAD -> pdfium-impl-form-fields -> pdfium-impl-saving
|
+-- Add a comment, highlight, stamp, or link annotation?
| LOAD -> pdfium-impl-annotations -> pdfium-impl-saving
|
+-- Add, delete, rotate, or crop whole pages?
| LOAD -> pdfium-impl-page-manipulation -> pdfium-impl-saving
|
+-- Merge, split, extract, or reorder pages across files?
| LOAD -> pdfium-impl-multi-page -> pdfium-impl-saving
|
+-- Create a new PDF from scratch?
| pdfium-syntax-document-loading (create_new_pdf)
| -> pdfium-impl-page-manipulation -> pdfium-impl-page-objects-edit
| -> pdfium-impl-saving
|
+-- Embed or inspect fonts?
| LOAD -> pdfium-impl-fonts
|
+-- Read bookmarks, links, or the table of contents?
| LOAD -> pdfium-impl-navigation
|
+-- Read or change metadata, attachments, permissions, signatures?
| LOAD -> pdfium-impl-document-features -> pdfium-impl-saving
|
+-- Run pdfium-render in a browser?
| pdfium-impl-wasm (changes BIND and LOAD)
|
+-- The program is slow or processes many PDFs?
| pdfium-impl-performance
|
+-- Call a raw FPDF_* function the wrapper does not expose?
| pdfium-core-raw-ffi
|
+-- The library will not load or crashes at bind time?
| pdfium-errors-binding
|
+-- A runtime error, panic, or wrong colors?
pdfium-errors-runtime
The 26-skill map
core/ : cross-cutting concerns
| Skill |
When to reach for it |
pdfium-core-architecture |
understand the ownership tree and runtime model |
pdfium-core-bindings-setup |
STAGE 1: bind functions, binaries, feature flags |
pdfium-core-coordinates |
PdfPoints vs Pixels, PdfRect vs PdfQuadPoints |
pdfium-core-memory |
drop order, lifetimes, self-referential struct trap |
pdfium-core-raw-ffi |
escape hatch: raw FPDF_* calls |
syntax/ : API syntax and reading
| Skill |
When to reach for it |
pdfium-syntax-document-loading |
STAGE 2: open or create a document |
pdfium-syntax-pages |
STAGE 3: reach and iterate pages |
pdfium-syntax-rendering |
STAGE 4: render a page to a PdfBitmap |
pdfium-syntax-text |
STAGE 4: extract and search text |
pdfium-syntax-page-objects |
STAGE 4: read and inspect page objects |
impl/ : development workflows
| Skill |
When to reach for it |
pdfium-impl-page-objects-edit |
STAGE 4: create and transform page objects |
pdfium-impl-output-formats |
STAGE 5: bitmap to PNG, JPEG, raw bytes |
pdfium-impl-annotations |
STAGE 4: read, modify, create annotations |
pdfium-impl-form-fields |
STAGE 4: fill form fields |
pdfium-impl-page-manipulation |
STAGE 4: add, delete, rotate, crop pages |
pdfium-impl-multi-page |
STAGE 4: merge, split, reorder across documents |
pdfium-impl-saving |
STAGE 5: save a document to file, writer, bytes |
pdfium-impl-fonts |
STAGE 4: embed and inspect fonts |
pdfium-impl-navigation |
STAGE 4: bookmarks, links, destinations |
pdfium-impl-document-features |
STAGE 4: metadata, attachments, permissions |
pdfium-impl-wasm |
browser target: changes binding and loading |
pdfium-impl-performance |
scaling: bind once, threading, render cost |
errors/ : diagnosis
| Skill |
When to reach for it |
pdfium-errors-binding |
STAGE 1 failed: LoadLibraryError diagnosis |
pdfium-errors-runtime |
a PdfiumError at run time, wrong byte order |
agents/ : orchestration
| Skill |
When to reach for it |
pdfium-agents-orchestrator |
this skill: route a goal to the right skills |
pdfium-agents-validator |
review generated pdfium-render code for correctness |
Cross-skill consistency rules
These rules hold across every skill. Enforce them when composing a pipeline.
- ALWAYS target one version line. Default to 0.9.x. NEVER mix a removed 0.8.x
name (
PdfBitmapConfig, get_bitmap, as_bytes, set_matrix,
load_pdf_from_bytes, get_bindings, PdfBitmapRotation, direct PdfFont
constructors, copy_onto_new_page_*) with the 0.9.x API in one program.
- ALWAYS bind PDFium once. In a loop, a server, or a batch job, reuse one
Pdfium instance. See pdfium-impl-performance.
- ALWAYS respect the ownership tree: a
PdfPage cannot outlive its
PdfDocument, which cannot outlive its Pdfium. See pdfium-core-memory.
- ALWAYS save after any edit. Render, extraction, and inspection produce output
directly; create, edit, fill, annotate, and merge all need an explicit
pdfium-impl-saving step or the changes are lost.
- ALWAYS keep coordinate units straight: page geometry is
PdfPoints, bitmap
geometry is Pixels. See pdfium-core-coordinates.
- After generating a pdfium-render program, route through
pdfium-agents-validator to check it against the removed-name and
consistency checklist.
Pipeline patterns
The verified end-to-end code for each pattern is in references/examples.md.
- Render to image: bind, load, iterate pages,
render_with_config, as_image,
save the image.
- Extract text: bind, load, iterate pages,
text(), all().
- Edit and save: bind, load, edit via the page-objects or annotations skill,
save_to_file.
- Merge documents: bind,
create_new_pdf, append each source, save_to_file.
Critical rules
- ALWAYS start a pdfium-render task here, then follow the decision tree into
the specific skill.
- ALWAYS run the five pipeline stages in order: bind, load, pages, process,
output.
- NEVER reach for
pdfium-core-raw-ffi when a high-level skill covers the goal.
Raw FFI is the escape hatch, not the default.
- NEVER skip the output stage after an editing process.
- For a browser target, route through
pdfium-impl-wasm first; it changes the
bind and load stages.
Companion skills
This skill maps all 25 other skills in the package. It is the entry point;
every other skill is a companion. pdfium-agents-validator is its review
counterpart.
Reference files
references/methods.md : the API-anchor to skill-owner map.
references/examples.md : verified end-to-end pipeline examples.
references/anti-patterns.md : orchestration mistakes and the fix.
Source: Impertio-Studio/pdfium-render-Claude-Skill-Package — distributed by TomeVault.
1---2name: impertio-studio-pdfium-render-claude-skill-package-pdfium-ag3description: pdfium-agents-orchestrator4---56# pdfium-agents-orchestrator78This is the routing skill for the pdfium-render skill package. It does not teach9a single API area; it maps a PDF goal onto the other 25 skills and the order to10apply them. Use it first, then follow it into the specific skills it names.1112Default API surface for the whole package: pdfium-render 0.9.x. The 0.8.x line13is covered as version notes inside each skill.1415## The canonical pipeline1617Every pdfium-render program follows the same five stages. ALWAYS run them in18this order.1920```211. BIND load the PDFium library once222. LOAD open or create a PdfDocument233. PAGES reach the page collection244. PROCESS render / extract / edit / fill / merge / inspect255. OUTPUT save the document or export an image26```2728| Stage | Owning skill | Anchor API |29|-------|--------------|------------|30| 1 BIND | `pdfium-core-bindings-setup` | `Pdfium::default()`, `bind_to_library` |31| 2 LOAD | `pdfium-syntax-document-loading` | `load_pdf_from_file`, `create_new_pdf` |32| 3 PAGES | `pdfium-syntax-pages` | `document.pages()`, `pages_mut()` |33| 4 PROCESS | depends on goal (see decision tree) | varies |34| 5 OUTPUT | `pdfium-impl-saving` or `pdfium-impl-output-formats` | `save_to_file`, `as_image` |3536Stage 4 is the only branching stage. Stages 1, 2, 3, and 5 are the same shape37for every task.3839## Goal-to-skill decision tree4041```42What is the PDF goal?43|44+-- Render a page to a PNG or JPEG image?45| LOAD -> pdfium-syntax-pages -> pdfium-syntax-rendering46| -> pdfium-impl-output-formats47|48+-- Extract the text of a page or document?49| LOAD -> pdfium-syntax-pages -> pdfium-syntax-text50|51+-- Search for a phrase inside a PDF?52| LOAD -> pdfium-syntax-pages -> pdfium-syntax-text (search)53|54+-- Inspect what objects a page contains?55| LOAD -> pdfium-syntax-pages -> pdfium-syntax-page-objects56|57+-- Add or edit text/image/shape content on a page?58| LOAD -> pdfium-impl-page-objects-edit -> pdfium-impl-saving59|60+-- Fill in a PDF form?61| LOAD -> pdfium-impl-form-fields -> pdfium-impl-saving62|63+-- Add a comment, highlight, stamp, or link annotation?64| LOAD -> pdfium-impl-annotations -> pdfium-impl-saving65|66+-- Add, delete, rotate, or crop whole pages?67| LOAD -> pdfium-impl-page-manipulation -> pdfium-impl-saving68|69+-- Merge, split, extract, or reorder pages across files?70| LOAD -> pdfium-impl-multi-page -> pdfium-impl-saving71|72+-- Create a new PDF from scratch?73| pdfium-syntax-document-loading (create_new_pdf)74| -> pdfium-impl-page-manipulation -> pdfium-impl-page-objects-edit75| -> pdfium-impl-saving76|77+-- Embed or inspect fonts?78| LOAD -> pdfium-impl-fonts79|80+-- Read bookmarks, links, or the table of contents?81| LOAD -> pdfium-impl-navigation82|83+-- Read or change metadata, attachments, permissions, signatures?84| LOAD -> pdfium-impl-document-features -> pdfium-impl-saving85|86+-- Run pdfium-render in a browser?87| pdfium-impl-wasm (changes BIND and LOAD)88|89+-- The program is slow or processes many PDFs?90| pdfium-impl-performance91|92+-- Call a raw FPDF_* function the wrapper does not expose?93| pdfium-core-raw-ffi94|95+-- The library will not load or crashes at bind time?96| pdfium-errors-binding97|98+-- A runtime error, panic, or wrong colors?99 pdfium-errors-runtime100```101102## The 26-skill map103104### core/ : cross-cutting concerns105106| Skill | When to reach for it |107|-------|----------------------|108| `pdfium-core-architecture` | understand the ownership tree and runtime model |109| `pdfium-core-bindings-setup` | STAGE 1: bind functions, binaries, feature flags |110| `pdfium-core-coordinates` | `PdfPoints` vs `Pixels`, `PdfRect` vs `PdfQuadPoints` |111| `pdfium-core-memory` | drop order, lifetimes, self-referential struct trap |112| `pdfium-core-raw-ffi` | escape hatch: raw `FPDF_*` calls |113114### syntax/ : API syntax and reading115116| Skill | When to reach for it |117|-------|----------------------|118| `pdfium-syntax-document-loading` | STAGE 2: open or create a document |119| `pdfium-syntax-pages` | STAGE 3: reach and iterate pages |120| `pdfium-syntax-rendering` | STAGE 4: render a page to a `PdfBitmap` |121| `pdfium-syntax-text` | STAGE 4: extract and search text |122| `pdfium-syntax-page-objects` | STAGE 4: read and inspect page objects |123124### impl/ : development workflows125126| Skill | When to reach for it |127|-------|----------------------|128| `pdfium-impl-page-objects-edit` | STAGE 4: create and transform page objects |129| `pdfium-impl-output-formats` | STAGE 5: bitmap to PNG, JPEG, raw bytes |130| `pdfium-impl-annotations` | STAGE 4: read, modify, create annotations |131| `pdfium-impl-form-fields` | STAGE 4: fill form fields |132| `pdfium-impl-page-manipulation` | STAGE 4: add, delete, rotate, crop pages |133| `pdfium-impl-multi-page` | STAGE 4: merge, split, reorder across documents |134| `pdfium-impl-saving` | STAGE 5: save a document to file, writer, bytes |135| `pdfium-impl-fonts` | STAGE 4: embed and inspect fonts |136| `pdfium-impl-navigation` | STAGE 4: bookmarks, links, destinations |137| `pdfium-impl-document-features` | STAGE 4: metadata, attachments, permissions |138| `pdfium-impl-wasm` | browser target: changes binding and loading |139| `pdfium-impl-performance` | scaling: bind once, threading, render cost |140141### errors/ : diagnosis142143| Skill | When to reach for it |144|-------|----------------------|145| `pdfium-errors-binding` | STAGE 1 failed: `LoadLibraryError` diagnosis |146| `pdfium-errors-runtime` | a `PdfiumError` at run time, wrong byte order |147148### agents/ : orchestration149150| Skill | When to reach for it |151|-------|----------------------|152| `pdfium-agents-orchestrator` | this skill: route a goal to the right skills |153| `pdfium-agents-validator` | review generated pdfium-render code for correctness |154155## Cross-skill consistency rules156157These rules hold across every skill. Enforce them when composing a pipeline.158159- ALWAYS target one version line. Default to 0.9.x. NEVER mix a removed 0.8.x160 name (`PdfBitmapConfig`, `get_bitmap`, `as_bytes`, `set_matrix`,161 `load_pdf_from_bytes`, `get_bindings`, `PdfBitmapRotation`, direct `PdfFont`162 constructors, `copy_onto_new_page_*`) with the 0.9.x API in one program.163- ALWAYS bind PDFium once. In a loop, a server, or a batch job, reuse one164 `Pdfium` instance. See `pdfium-impl-performance`.165- ALWAYS respect the ownership tree: a `PdfPage` cannot outlive its166 `PdfDocument`, which cannot outlive its `Pdfium`. See `pdfium-core-memory`.167- ALWAYS save after any edit. Render, extraction, and inspection produce output168 directly; create, edit, fill, annotate, and merge all need an explicit169 `pdfium-impl-saving` step or the changes are lost.170- ALWAYS keep coordinate units straight: page geometry is `PdfPoints`, bitmap171 geometry is `Pixels`. See `pdfium-core-coordinates`.172- After generating a pdfium-render program, route through173 `pdfium-agents-validator` to check it against the removed-name and174 consistency checklist.175176## Pipeline patterns177178The verified end-to-end code for each pattern is in `references/examples.md`.179180- Render to image: bind, load, iterate pages, `render_with_config`, `as_image`,181 save the image.182- Extract text: bind, load, iterate pages, `text()`, `all()`.183- Edit and save: bind, load, edit via the page-objects or annotations skill,184 `save_to_file`.185- Merge documents: bind, `create_new_pdf`, `append` each source, `save_to_file`.186187## Critical rules188189- ALWAYS start a pdfium-render task here, then follow the decision tree into190 the specific skill.191- ALWAYS run the five pipeline stages in order: bind, load, pages, process,192 output.193- NEVER reach for `pdfium-core-raw-ffi` when a high-level skill covers the goal.194 Raw FFI is the escape hatch, not the default.195- NEVER skip the output stage after an editing process.196- For a browser target, route through `pdfium-impl-wasm` first; it changes the197 bind and load stages.198199## Companion skills200201This skill maps all 25 other skills in the package. It is the entry point;202every other skill is a companion. `pdfium-agents-validator` is its review203counterpart.204205## Reference files206207- `references/methods.md` : the API-anchor to skill-owner map.208- `references/examples.md` : verified end-to-end pipeline examples.209- `references/anti-patterns.md` : orchestration mistakes and the fix.210211---212> Source: [Impertio-Studio/pdfium-render-Claude-Skill-Package](https://github.com/Impertio-Studio/pdfium-render-Claude-Skill-Package) — distributed by [TomeVault](https://tomevault.io).213<!-- tomevault:4.0:skill_md:2026-06-15 -->