5,025,833 AI resources indexedWorking toward the world’s largest AI resource index.

PDF Generation Fallback

Reliable PDF generation using shell-based Python execution when sandbox fails

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

instructions.md

---
name: pdf-gen-fallback-2004a30af6bb
description: Reliable PDF generation using shell-based Python execution when sandbox fails
---

# PDF Generation Fallback

This skill provides a reliable workflow for generating PDFs and documents when `execute_code_sandbox` returns opaque errors. Use direct `run_shell` with `python -c` as a fallback, with library availability checks and explicit error handling.

## When to Use

- `execute_code_sandbox` fails with cryptic error messages during document/PDF generation
- You need to generate PDFs, reports, or structured documents
- Standard library execution is unreliable for document creation tasks

## Step-by-Step Procedure

### Step 1: Check Library Availability

Before attempting generation, verify that required libraries are installed:

```bash
run_shell command="python -c \"import reportlab; print('reportlab available')\""
run_shell command="python -c \"import fpdf; print('fpdf available')\""
run_shell command="python -c \"import pypdf; print('pypdf available')\""
```

### Step 2: Attempt execute_code_sandbox First

Try the sandbox approach initially (it's cleaner for iteration):

```python
execute_code_sandbox code="""
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("output.pdf", pagesize=letter)
c.drawString(100, 750, "Document Content")
c.save()
print("ARTIFACT_PATH:/path/to/output.pdf")
"""
```

### Step 3: Detect Opaque Errors

Watch for these failure indicators:
- Generic "execution failed" messages
- Import errors that don't match library availability checks
- Timeout errors during document rendering
- Missing artifact paths in output

### Step 4: Fall Back to run_shell

If sandbox fails, use direct shell execution:

```bash
run_shell command="python -c \"
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas('output.pdf', pagesize=letter)
c.drawString(100, 750, 'Document Content')
c.save()
print('PDF created successfully')
\""
```

### Step 5: Verify Output

After generation, confirm the file exists:

```bash
run_shell command="ls -la output.pdf && file output.pdf"
```

## Complete Example Workflow

```
1. Check libraries: run_shell "python -c \"import reportlab\""
2. Try sandbox: execute_code_sandbox with PDF generation code
3. If error detected: Fall back to run_shell with python -c
4. Verify: run_shell "ls -la *.pdf"
5. Read result: read_file filetype="pdf" file_path="output.pdf"
```

## Error Handling Tips

- Capture stderr from run_shell to diagnose issues
- Use absolute paths when possible to avoid working directory issues
- For complex documents, write the Python script to a file first, then execute
- Consider installing missing libraries: `run_shell command="pip install reportlab"`

## Library Alternatives

If reportlab is unavailable, try:
- `fpdf` - Simpler API, good for basic PDFs
- `weasyprint` - HTML/CSS to PDF conversion
- `pypdf` - PDF manipulation and merging

## Common Pitfalls

- Don't assume sandbox errors mean the approach is wrong—often it's环境 issues
- Always verify the PDF was created before proceeding
- Handle encoding issues explicitly (use utf-8)
- For images in PDFs, ensure image files are accessible to the execution context

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.