PDF Fixture Generator
Generate deterministic test PDFs with known, extractable content for testing extraction pipelines.
Self-contained skill - auto-installs via uv run from git (no pre-installation needed).
Simplest Usage
# Via wrapper (recommended - auto-installs)
.agents/skills/pdf-fixture/run.sh --example --name test_fixture
Common Patterns
Create from JSON spec file
./run.sh --spec content_spec.json --name my_fixture
Create from inline JSON
./run.sh \
--inline '{"sections": [{"title": "Introduction", "content": [{"type": "text", "text": "Hello world"}]}]}' \
--name inline_test
JSON Spec Format
{
"style": "standard",
"sections": [
{
"title": "1. Requirements",
"level": 1,
"content": [
{"type": "text", "text": "This document describes requirements."},
{"type": "requirement", "id": "REQ-001", "text": "System shall process in 1s"},
{"type": "table", "columns": ["ID", "Name"], "rows": [["1", "Alice"], ["2", "Bob"]]},
{"type": "equation", "latex": "E = mc^2", "label": "energy"},
{"type": "figure", "description": "Architecture diagram"}
]
}
]
}
Content Types
| Type | Required Fields | Optional |
|---|---|---|
text |
text |
- |
requirement |
id, text |
type (Functional/NonFunctional) |
table |
columns |
rows (list or count) |
equation |
latex or equation |
label |
figure |
description |
width, height |
annotation |
annot_type (highlight/note/box) |
content |
Output
Creates in fixtures/{name}/:
source.pdf- Generated PDF with known contentSPEC.md- Auto-generated with expected extraction values
Notes
The wrapper script (run.sh) automatically:
- Installs extractor from git via
uv run - Handles all dependencies (PyMuPDF, etc.)
- No manual venv activation needed