Fallback workflow for document generation when code sandbox returns opaque errors
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-pdf-gen-fallback-dee20c-3a09a0d5056d ,按照其中的说明把「pdf-gen-fallback-dee20c」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
When execute_code_sandbox returns opaque or unhelpful errors during document/PDF generation, use run_shell with direct python -c execution as a reliable alternative. This pattern includes library availability checks and explicit error handling.
execute_code_sandbox fails with unclear error messages during document generationBefore attempting generation, verify required libraries are installed:
run_shell: python -c "import reportlab; print('reportlab OK')"
run_shell: python -c "import fpdf; print('fpdf OK')"
run_shell: python -c "import PyPDF2; print('PyPDF2 OK')"
If a library is missing, install it:
run_shell: pip install reportlab --quiet
Instead of execute_code_sandbox, use run_shell with python -c:
run_shell: 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 generated successfully')
"
Wrap generation code with try/except and capture stderr:
run_shell: python -c "
import sys
try:
# Your generation code here
from reportlab.pdfgen import canvas
c = canvas.Canvas('output.pdf')
c.drawString(100, 750, 'Content')
c.save()
print('SUCCESS: PDF created')
sys.exit(0)
except Exception as e:
print(f'ERROR: {type(e).__name__}: {e}', file=sys.stderr)
sys.exit(1)
" 2>&1
After generation, confirm the file was created:
run_shell: ls -la output.pdf
run_shell: file output.pdf
If the first approach fails, try alternatives in this order:
reportlab - Full-featured PDF generationfpdf - Simpler PDF librarywkhtmltopdf - HTML to PDF conversion# Step 1: Check library
run_shell: python -c "import reportlab; print('OK')"
# Step 2: Generate with error handling
run_shell: python -c "
import sys
try:
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas('report.pdf', pagesize=letter)
c.setTitle('Surveillance Report')
c.drawString(100, 750, 'Revised Surveillance Report')
c.drawString(100, 730, 'Summary: Key findings documented')
c.save()
print('SUCCESS')
except Exception as e:
print(f'FAILED: {e}', file=sys.stderr)
sys.exit(1)
"
# Step 3: Verify
run_shell: test -f report.pdf && echo 'File exists' || echo 'File missing'
| Issue | Solution |
|---|---|
| Module not found | pip install <module> --quiet |
| Permission denied | Check output directory permissions |
| Font errors | Use default fonts or install font packages |
| Encoding issues | Specify encoding explicitly in string operations |
python -c.py file instead