VTCodePDF生成器Skill pdf-generator-vtcode

这是一个专为VTCode设计的技能,使用Python库(如reportlab和fpdf2)生成专业PDF文档,作为Anthropic容器技能的兼容替代方案。关键词:PDF生成,Python,VTCode,reportlab,fpdf2,文档自动化,代码执行。

后端开发 0 次安装 0 次浏览 更新于 3/25/2026

name: pdf-generator-vtcode description: 使用Python库生成PDF文档(VTCode兼容的Anthropic容器技能替代方案) version: 1.0.0 author: VTCode Team

VTCode的PDF生成器

使用Python库(reportlab, fpdf2)生成专业PDF文档。这是VTCode兼容的Anthropic容器技能替代方案。

要求

安装所需的Python库:

pip install reportlab fpdf2

使用方法

当需要生成PDF时,我将:

  1. 使用reportlab或fpdf2编写Python代码
  2. 通过VTCode的execute_code工具执行
  3. 提供生成的PDF文件

示例

示例1:简单文本PDF

用户:创建一个带有大文本“Hello World”的PDF

代理:我将使用fpdf2生成一个简单的PDF。

execute_code with Python:
```python
from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_font('Arial', 'B', 24)
pdf.cell(0, 20, 'Hello World', 0, 1, 'C')
pdf.output('hello_world.pdf')
result = {"status": "PDF created", "filename": "hello_world.pdf"}

示例2:带表格的报告

用户:生成季度销售报告PDF

代理:我将使用reportlab创建一个带表格的专业报告。

execute_code with Python:
```python
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Table, TableStyle, Spacer
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors

doc = SimpleDocTemplate("sales_report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
content = []

# 标题
content.append(Paragraph("Q4 2024 Sales Report", styles['Title']))
content.append(Spacer(1, 20))

# 执行摘要
content.append(Paragraph("Executive Summary", styles['Heading1']))
content.append(Paragraph("This quarter exceeded targets by 15% with strong performance across all regions.", styles['Normal']))
content.append(Spacer(1, 12))

# 销售数据表
data = [
    ['Region', 'Q3 Sales', 'Q4 Sales', 'Growth'],
    ['North America', '$450,000', '$520,000', '+15.6%'],
    ['Europe', '$380,000', '$440,000', '+15.8%'],
    ['Asia Pacific', '$320,000', '$380,000', '+18.8%'],
    ['Total', '$1,150,000', '$1,340,000', '+16.5%']
]
table = Table(data)
table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#4472C4')),
    ('TEXTCOLOR', (0,0), (-1,0), colors.white),
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
    ('FONTSIZE', (0,0), (-1,0), 12),
    ('BOTTOMPADDING', (0,0), (-1,0), 12),
    ('BACKGROUND', (0,1), (-1,-1), colors.HexColor('#E7E6E6')),
    ('GRID', (0,0), (-1,-1), 1, colors.black)
]))
content.append(table)

doc.build(content)
result = {"status": "Sales report generated", "filename": "sales_report.pdf"}

示例3:发票

用户:为客户“ABC Corp”创建5000美元的发票PDF

代理:我将生成一个专业发票。

execute_code with Python:
```python
from fpdf import FPDF
from datetime import date

class InvoicePDF(FPDF):
    def header(self):
        self.set_font('Arial', 'B', 16)
        self.cell(0, 10, 'INVOICE', 0, 1, 'C')
        self.ln(5)
    
    def footer(self):
        self.set_y(-15)
        self.set_font('Arial', 'I', 8)
        self.cell(0, 10, f'Page {self.page_no()}', 0, 0, 'C')

pdf = InvoicePDF()
pdf.add_page()

# 发票详情
pdf.set_font('Arial', '', 12)
pdf.cell(0, 10, f'Date: {date.today().strftime("%B %d, %Y")}', 0, 1, 'R')
pdf.ln(5)

# 账单对象
pdf.set_font('Arial', 'B', 12)
pdf.cell(0, 10, 'Bill To:', 0, 1)
pdf.set_font('Arial', '', 12)
pdf.cell(0, 10, 'ABC Corp', 0, 1)
pdf.cell(0, 10, '123 Business Ave', 0, 1)
pdf.cell(0, 10, 'City, State 12345', 0, 1)
pdf.ln(10)

# 表格表头
pdf.set_font('Arial', 'B', 12)
pdf.cell(100, 10, 'Description', 1)
pdf.cell(30, 10, 'Quantity', 1)
pdf.cell(30, 10, 'Rate', 1)
pdf.cell(30, 10, 'Amount', 1)
pdf.ln()

# 表格行
pdf.set_font('Arial', '', 12)
pdf.cell(100, 10, 'Software Development Services', 1)
pdf.cell(30, 10, '100', 1, 0, 'C')
pdf.cell(30, 10, '$50.00', 1, 0, 'R')
pdf.cell(30, 10, '$5,000.00', 1, 0, 'R')
pdf.ln(20)

# 总计
pdf.set_font('Arial', 'B', 14)
pdf.cell(160, 10, 'Total:', 0, 0, 'R')
pdf.cell(30, 10, '$5,000.00', 0, 0, 'R')

pdf.output('invoice_abc_corp.pdf')
result = {"status": "Invoice generated", "filename": "invoice_abc_corp.pdf"}

代码模板

模板:使用fpdf2的基本PDF

from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_font('Arial', 'B', 16)

# 您的内容在这里
pdf.cell(0, 10, 'Title', 0, 1, 'C')
pdf.set_font('Arial', '', 12)
pdf.multi_cell(0, 10, 'Your text content goes here...')

pdf.output('output.pdf')
result = {"status": "PDF created", "filename": "output.pdf"}

模板:使用reportlab的专业报告

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import letter

doc = SimpleDocTemplate("report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
content = []

# 添加标题
content.append(Paragraph("Report Title", styles['Title']))
content.append(Spacer(1, 20))

# 添加部分
content.append(Paragraph("Section 1", styles['Heading1']))
content.append(Paragraph("Content for section 1...", styles['Normal']))

# 构建PDF
doc.build(content)
result = {"status": "Report generated", "filename": "report.pdf"}

故障排除

错误:“No module named ‘reportlab’”

  • 解决方案:在终端中运行pip install reportlab

错误:“No module named ‘fpdf’”

  • 解决方案:在终端中运行pip install fpdf2

PDF未出现?

  • 检查代码是否成功执行(exit_code = 0)
  • 验证结果中的文件名是否匹配您查找的内容
  • 确保检查正确的工作空间目录

库文档