# Send Pdf Form Filler to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pdf-form-filler",
    "name": "Pdf Form Filler",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/RaulSimpetru/pdf-form-filler",
    "canonicalUrl": "https://clawhub.ai/RaulSimpetru/pdf-form-filler",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/pdf-form-filler",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pdf-form-filler",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "pdf_form_filler/__init__.py",
      "pdf_form_filler/fill_pdf_form.py",
      "references/examples.md",
      "requirements.txt"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "pdf-form-filler",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T00:43:13.054Z",
      "expiresAt": "2026-05-14T00:43:13.054Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pdf-form-filler",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pdf-form-filler",
        "contentDisposition": "attachment; filename=\"pdf-form-filler-0.2.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "pdf-form-filler"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pdf-form-filler"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pdf-form-filler",
    "downloadUrl": "https://openagent3.xyz/downloads/pdf-form-filler",
    "agentUrl": "https://openagent3.xyz/skills/pdf-form-filler/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pdf-form-filler/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pdf-form-filler/agent.md"
  }
}
```
## Documentation

### PDF Form Filler

Programmatically fill PDF forms with text values and checkboxes. Uses pdfrw to set form field values while preserving appearance streams for proper PDF viewer rendering.

### Quick Start

Fill a PDF form with a dictionary of field names and values:

from pdf_form_filler import fill_pdf_form

fill_pdf_form(
    input_pdf="form.pdf",
    output_pdf="form_filled.pdf",
    data={
        "Name": "John Doe",
        "Email": "john@example.com",
        "Herr": True,  # Checkbox
        "Dienstreise": True,
    }
)

### Features

Text fields: Set any text value (names, dates, addresses, etc.)
Checkboxes: Set boolean values (True for checked, False/None for unchecked)
Appearance states: Properly sets /On and /Off states for PDF viewer rendering
Preserves structure: Doesn't strip form functionality—can be further edited
No dependencies: Uses pdfrw (lightweight, pure Python)

### How It Works

Opens the PDF template
Iterates through form fields
Sets values for matching field names
Handles checkboxes by setting both /V (value) and /AS (appearance state)
Saves the filled PDF

### Field Name Matching

Field names should match exactly as they appear in the PDF form. Common patterns:

German forms: Herr, Frau, Dienstreise, Geschäftsnummer LfF
English forms: Full Name, Email, Agree, Submit
Date fields: Date, DOB, Start Date

To discover field names in your PDF, use list_pdf_fields():

from pdf_form_filler import list_pdf_fields

fields = list_pdf_fields("form.pdf")
for field_name, field_type in fields:
    print(f"{field_name}: {field_type}")

Field types:

text: Text input field
checkbox: Boolean checkbox
radio: Radio button
dropdown: Dropdown select
signature: Signature field

### Example: Job Application Form

fill_pdf_form(
    input_pdf="job_application.pdf",
    output_pdf="job_application_filled.pdf",
    data={
        "Full Name": "Jane Smith",
        "Email": "jane.smith@example.com",
        "Phone": "555-1234",
        "Position": "Software Engineer",
        "Years Experience": "5",
        
        # Checkboxes
        "Willing to relocate": True,
        "Available immediately": False,
        "Background check consent": True,
    }
)

### Partial fills

Only fill specific fields, leave others blank:

data = {"Name": "Jane Doe"}  # Only Name is set
fill_pdf_form("form.pdf", "form_filled.pdf", data)

### Dynamic field detection

Get all fields and prompt for values:

from pdf_form_filler import list_pdf_fields

fields = list_pdf_fields("form.pdf")
data = {}
for field_name, field_type in fields:
    if field_type == "text":
        data[field_name] = input(f"Enter {field_name}: ")
    elif field_type == "checkbox":
        data[field_name] = input(f"Check {field_name}? (y/n): ").lower() == 'y'

fill_pdf_form("form.pdf", "form_filled.pdf", data)

### Batch fills

Fill multiple PDFs with the same data:

import os
from pdf_form_filler import fill_pdf_form

data = {"Name": "John Doe", "Date": "2026-01-24"}

for filename in os.listdir("forms/"):
    if filename.endswith(".pdf"):
        fill_pdf_form(
            f"forms/{filename}",
            f"forms_filled/{filename}",
            data
        )

### Checkboxes not showing visually

Some PDF viewers don't render checkboxes immediately. The value is set correctly (/On or /Off), but appearance isn't regenerated. Try opening in:

Adobe Reader (will render automatically)
Firefox (has better form support)
evince or okular on Linux (usually works)

### Field names not found

Use list_pdf_fields() to confirm exact field names. PDF forms can be tricky:

Some use unusual names (e.g., Field_1 instead of descriptive names)
Some have nested field structures

### Text appears cut off

Some PDFs have narrow text fields. Either:

Use shorter values
Reduce font size in the PDF template itself
Manual editing after filling

### Bundled Script

See scripts/fill_pdf_form.py for the full implementation using pdfrw.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: RaulSimpetru
- Version: 0.2.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-07T00:43:13.054Z
- Expires at: 2026-05-14T00:43:13.054Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/pdf-form-filler)
- [Send to Agent page](https://openagent3.xyz/skills/pdf-form-filler/agent)
- [JSON manifest](https://openagent3.xyz/skills/pdf-form-filler/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/pdf-form-filler/agent.md)
- [Download page](https://openagent3.xyz/downloads/pdf-form-filler)