# PDF

> PDF form-processing toolkit for checking fillable forms, extracting form field metadata, validating bounding boxes, converting pages to images, and filling forms.

- Skill: `datalayer/pdf` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add datalayer/pdf`
- Raw SKILL.md: https://api.skillmd.com/api/skills/datalayer/pdf/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- License: Proprietary. LICENSE.txt has complete terms
- Author: datalayer (https://skillmd.com/u/datalayer)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/datalayer/pdf

---


# PDF Skill

## Required Environment Variables

- None required.

## Invocation Contract

- Call `run_skill_script` with:
  - `skill_name`: `pdf`
  - `script_name`: one of `check_fillable_fields`, `extract_form_field_info`, `fill_fillable_fields`, `convert_pdf_to_images`, `check_bounding_boxes`, `create_validation_image`, `fill_pdf_form_with_annotations`
- These scripts are positional-argument based. Use `args`, not `kwargs`, for required parameters.

## Scripts API

### `script_name: check_fillable_fields`

- `args`: `["<input_pdf>"]`
- Output: prints whether the PDF has fillable fields.

### `script_name: extract_form_field_info`

- `args`: `["<input_pdf>", "<output_json>"]`
- Output: JSON file with discovered fields and metadata.

### `script_name: fill_fillable_fields`

- `args`: `["<input_pdf>", "<field_values_json>", "<output_pdf>"]`
- Input contract: field values JSON structure documented in `forms.md`.

### `script_name: convert_pdf_to_images`

- `args`: `["<input_pdf>", "<output_directory>"]`
- Output: PNG images (one per page).

### `script_name: check_bounding_boxes`

- `args`: `["<fields_json>"]`
- Input contract: `fields.json` format documented in `forms.md`.
- Output: validation messages.

### `script_name: create_validation_image`

- `args`: `["<page_number>", "<fields_json>", "<input_image>", "<output_image>"]`
- Output: image with overlay boxes for inspection.

### `script_name: fill_pdf_form_with_annotations`

- `args`: `["<input_pdf>", "<fields_json>", "<output_pdf>"]`
- Input contract: annotated form JSON schema in `forms.md`.

## `run_skill_script` Examples

- Extract field info:

```json
{
  "skill_name": "pdf",
  "script_name": "extract_form_field_info",
  "args": ["form.pdf", "fields.json"]
}
```

- Fill fillable fields:

```json
{
  "skill_name": "pdf",
  "script_name": "fill_fillable_fields",
  "args": ["form.pdf", "field_values.json", "filled.pdf"]
}
```

## Direct CLI Examples

```bash
python agent_skills/skills/pdf/scripts/check_fillable_fields.py form.pdf
python agent_skills/skills/pdf/scripts/extract_form_field_info.py form.pdf fields.json
python agent_skills/skills/pdf/scripts/fill_fillable_fields.py form.pdf field_values.json filled.pdf
python agent_skills/skills/pdf/scripts/convert_pdf_to_images.py form.pdf out_images/
python agent_skills/skills/pdf/scripts/check_bounding_boxes.py fields.json
python agent_skills/skills/pdf/scripts/create_validation_image.py 1 fields.json out_images/page_1.png validated.png
python agent_skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py form.pdf fields.json annotated.pdf
```

## References

- `forms.md`: required JSON structures for form workflows.
- `reference.md`: additional PDF workflow guidance.

