| name | pdf-checklist-generation |
| 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
!pip install reportlab
Step 2: Create PDF Generation Script
Example using reportlab:
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 = []
elements.append(Paragraph("Assessment Checklist", styles['Heading1']))
elements.append(Spacer(1, 12))
data = [['Item', 'Status', 'Score']]
for item in checklist_items:
data.append([item['name'], item['status'], item['score']])
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}")
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
- Keep it simple: Start with basic layouts before adding complexity
- Test incrementally: Generate a minimal PDF first, then add features
- Handle errors: Wrap PDF generation in try/except blocks
- Verify file existence: Always confirm the PDF was created before proceeding
- 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 |