# PDF Fixture

> Generate test PDF fixtures with known, extractable content. Creates PDFs with sections, tables, figures, requirements, equations, and annotations. Use when user needs "create test PDF", "generate PDF fixture", "make sample PDF for testing".

- Skill: `majiayu000/pdf-fixture-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/pdf-fixture-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/pdf-fixture-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/pdf-fixture-2

---


# 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

```bash
# Via wrapper (recommended - auto-installs)
.agents/skills/pdf-fixture/run.sh --example --name test_fixture
```

## Common Patterns

### Create from JSON spec file
```bash
./run.sh --spec content_spec.json --name my_fixture
```

### Create from inline JSON
```bash
./run.sh \
  --inline '{"sections": [{"title": "Introduction", "content": [{"type": "text", "text": "Hello world"}]}]}' \
  --name inline_test
```

## JSON Spec Format

```json
{
  "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 content
- `SPEC.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

