5,446,782 AI resources indexedWorking toward the world’s largest AI resource index.

PDF

PDF Checklist Generation

Generate structured PDF checklists and reports using Python libraries in sandbox

Installable skillMITBy AG064Updated Oct 31, 2026
INTENDED FOROpenClawInstall in a listed agent.

instructions.md

---
name: pdf-checklist-generation-7de587c2445d
description: Generate structured PDF checklists and reports using Python libraries in sandbox
---

# PDF Checklist Generation

This skill provides a workflow for creating professional PDF documents (checklists, reports, scorecards) using Python libraries within an execute_code_sandbox environment.

## When to Use

- Need to generate downloadable PDF reports or checklists
- Require structured documents with tables, sections, or scoring criteria
- Working in a sandbox environment without direct file system access

## Available Libraries

Choose one based on your needs:

| Library | Best For | Complexity |
|---------|----------|------------|
| `reportlab` | Professional layouts, tables, precise control | Medium |
| `fpdf` | Simple documents, quick generation | Low |
| `matplotlib` | Charts, graphs, visual reports | Medium |

## Step-by-Step Workflow

### Step 1: Install Required Library

```python
!pip install reportlab  # or fpdf, matplotlib
```

### Step 2: Create PDF Generation Script

**Example using reportlab:**

```python
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors

def create_checklist_pdf(filename, checklist_items):
    doc = SimpleDocTemplate(filename, pagesize=letter)
    styles = getSampleStyleSheet()
    elements = []
    
    # Title
    elements.append(Paragraph("Assessment Checklist", styles['Heading1']))
    elements.append(Spacer(1, 12))
    
    # Table data
    data = [['Item', 'Status', 'Score']]
    for item in checklist_items:
        data.append([item['name'], item['status'], item['score']])
    
    # Create table
    table = Table(data)
    table.setStyle(TableStyle([
        ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
        ('GRID', (0, 0), (-1, -1), 1, colors.black),
    ]))
    elements.append(table)
    
    doc.build(elements)
    print(f"PDF created: {filename}")

# Usage
checklist = [
    {'name': 'Security Check', 'status': 'Pass', 'score': 10},
    {'name': 'Performance Test', 'status': 'Fail', 'score': 5},
]
create_checklist_pdf('report.pdf', checklist)
```

### Step 3: Execute in Sandbox

Run the script using `execute_code_sandbox`:

```
execute_code_sandbox(code="<your pdf generation code>")
```

### Step 4: Verify Output

After generation, verify the PDF was created:

```
read_file(path="report.pdf")
```

Or inspect via shell:

```
execute_code_sandbox(code="import os; print(os.path.exists('report.pdf'))")
```

## Best Practices

1. **Keep it simple**: Start with basic layouts before adding complexity
2. **Test incrementally**: Generate a minimal PDF first, then add features
3. **Handle errors**: Wrap PDF generation in try/except blocks
4. **Verify file existence**: Always confirm the PDF was created before proceeding
5. **Use UTF-8**: Ensure text encoding is proper for special characters

## Common Pitfalls

- Forgetting to install the library before import
- Not checking if file was created successfully
- Using paths that don't exist in sandbox environment
- Missing required dependencies for advanced features

## Troubleshooting

| Issue | Solution |
|-------|----------|
| Import error | Run `!pip install <library>` first |
| File not found | Check working directory with `!pwd` |
| Blank PDF | Ensure `doc.build()` is called |
| Encoding issues | Use Unicode strings, specify encoding |

Discuss this resource

Platform guidance

Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.