PDF Report
Generate clean A4 PDF reports from structured JSON using Jinja2 and WeasyPrint. Use when the user needs a formatted PDF document — analytical summary, data r... Skill: PDF Report Owner: 0xvespertine Summary: Generate clean A4 PDF reports from structured JSON using Jinja2 and WeasyPrint. Use when the user needs a formatted PDF document — analytical summary, data r... Tags: latest:1.0.1 Version history: v1.0.1 | 2026-04-04T18:08:01.178Z | user v1.0.1 — Security hardening + publish readiness - Chart image paths from JSON are now validated against the workspace boundary (paths o
Rank
62
Safety
84
Downloads
1.1k
Updated
Oct 11, 2026
Version
1.0.1
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1.1K downloadsadoption · observed Oct 11, 2026
- Latest release
- 1.0.1release · observed Apr 4, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s1741t73nrt7q2vnxcrxcxxtjh83hfew:pdf-report- Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-0xvespertine-pdf-report/snapshot"
Documentation
CLAWHUB
8,504 characters of source documentation, loaded on request.
Extracted files
3 files captured from the source.
SKILL.md
---
name: pdf-report
version: 1.0.1
description: Generate clean A4 PDF reports from structured JSON using Jinja2 and WeasyPrint. Use when the user needs a formatted PDF document — analytical summary, data report, or chart-based export — from workspace data.
metadata: { "openclaw": { "emoji": "PDF", "requires": { "bins": ["python3"] } } }
---
# PDF Report
Generate a clean A4 PDF from structured JSON data.
## Setup
Install system dependencies (WeasyPrint requires these):
```bash
# Ubuntu/Debian
sudo apt-get install -y libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev libcairo2
```
Create a virtual environment and install Python dependencies (one-time):
```bash
python3 -m venv ~/.openclaw/workspace/.venv_pdf
~/.openclaw/workspace/.venv_pdf/bin/pip install weasyprint jinja2
```
## Quick start
```bash
~/.openclaw/workspace/.venv_pdf/bin/python skills/pdf-report/scripts/render_pdf.py \
--input exports/report-data.json \
--output exports/pdfs/report.pdf
```
## Inputs
- `--input` path to a JSON file inside the workspace
- `--output` path to the PDF output inside the workspace
- Optional: `--template-file` custom Jinja2 template path inside the workspace
- Optional: `--html-out` write the rendered HTML for debugging
## Expected JSON shape
```json
{
"title": "Monthly Report",
"subtitle": "Summary by region",
"generated_at": "2026-03-23 10:00",
"summary": ["Key point 1", "Key point 2"],
"sections": [
{
"title": "Sales by category",
"lead": "National overview",
"items": ["Observation 1", "Observation 2"],
"table": {
"headers": ["Category", "Amount", "Share"],
"rows": [["Electronics", "12 450", "45%"]]
},
"charts": [
{
"title": "Distribution by category",
"src": "exports/charts/category.png",
"caption": "Source: sales database"
}
],
"note": "Data as of 31/12/2025"
}
],
"footer": "Company Name — Department"
}
```
## Notes
- All file paths (CLI arguments and `charts[].src` in JSON) must stay inside the workspace. Paths outside the workspace are rejected.
- Missing chart images produce a warning to stderr but do not block PDF generation.
- Use `chart-mpl` first when a section needs chart images, then reference those image paths in `charts[].src`.
- Output directories are created automatically.
- Default template: `skills/pdf-report/templates/report.html`
- Dedicated venv: `~/.openclaw/workspace/.venv_pdf/` (weasyprint + jinja2)
- Pages are numbered automatically (bottom-right: "1 / 3").
## Custom templates
Use `--template-file` to provide your own Jinja2 HTML template. Note that relative asset paths inside custom templates (images, CSS) resolve from the **workspace root**, not the template's directory. Use workspace-root-relative paths for any referenced assets._meta.json
{
"ownerId": "kn71mmn1vst817r9622exn54vn83fw03",
"slug": "pdf-report",
"version": "1.0.1",
"publishedAt": 1775326081178
}skill-card.md
## Description: Generates clean A4 PDF reports from structured JSON using Jinja2 and WeasyPrint for analytical summaries, data reports, and chart-based exports. This skill is ready for commercial/non-commercial use. ## Publisher: [0xvespertine](https://clawhub.ai/user/0xvespertine) ### License/Terms of Use: MIT-0 ## Use Case: Developers, analysts, and agent operators use this skill to turn workspace JSON data into formatted A4 PDF reports with summaries, sections, tables, charts, footers, and optional debug HTML. ### Deployment Geography for Use: Global ## Known Risks and Mitigations: Risk: Custom Jinja2 templates can affect rendered HTML and PDF output more broadly than ordinary report data. Mitigation: Use only trusted custom templates and review template content before rendering. Risk: PDF generation and template rendering may run in an environment with access to local files or sensitive environment variables. Mitigation: Run the skill in a low-privilege or isolated workspace and avoid exposing sensitive environment variables during rendering. Risk: Unpinned Python dependencies or system package installation can change host behavior over time. Mitigation: Pin Python dependencies before production use and approve the sudo system package install only after reviewing the host changes. ## Reference(s): ## Skill Output: **Output Type(s):** [Files, Shell commands, Configuration instructions, Guidance] **Output Format:** [PDF file, optional HTML file, and JSON status output] **Output Parameters:** [1D] **Other Properties Related to Output:** [Requires python3 plus WeasyPrint and Jinja2 dependencies; all input, output, template, and chart paths are constrained to the workspace.] ## Skill Version(s): 1.0.1 (source: frontmatter and server release metadata) ## Ethical Considerations: Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/0xvespertine/skills/pdf-report",
"sourceUrl": "https://clawhub.ai/0xvespertine/skills/pdf-report",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T12:44:38.170Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-0xvespertine-pdf-report/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-0xvespertine-pdf-report/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T12:44:38.170Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.1K downloads",
"href": "https://clawhub.ai/0xvespertine/pdf-report",
"sourceUrl": "https://clawhub.ai/0xvespertine/pdf-report",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T12:44:38.170Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.1",
"href": "https://clawhub.ai/0xvespertine/pdf-report",
"sourceUrl": "https://clawhub.ai/0xvespertine/pdf-report",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-04T18:08:01.178Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-0xvespertine-pdf-report/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-0xvespertine-pdf-report/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.1",
"description": "v1.0.1 — Security hardening + publish readiness - Chart image paths from JSON are now validated against the workspace boundary (paths outside are rejected) - Missing chart images produce a warning instead of silent broken images - Workspace root detection is now resilient (OPENCLAW_WORKSPACE env var > marker file walk > fallback) - Added Setup section with system deps, venv creation, and pip install - Added automatic page numbering (bottom-right: \"1 / 3\") - Documented custom template base_url behavior",
"href": "https://clawhub.ai/0xvespertine/pdf-report",
"sourceUrl": "https://clawhub.ai/0xvespertine/pdf-report",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-04T18:08:01.178Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
