You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RPA自动化中如何将机器人截图嵌入收据PDF?求可行方案

解决RPA流程中截图嵌入现有收据PDF的问题

你的测试代码核心问题是:直接新建空白PDF添加截图,而非在已有的收据PDF文件上嵌入截图。以下是几种可行的解决方案:

方案1:使用PyPDF2 + Pillow(推荐)

该组合支持读取已有PDF,并将截图精准叠加到指定页面:

from PyPDF2 import PdfReader, PdfWriter
from PIL import Image
import io

def embed_screenshot_to_receipt(oN):
    receipt_pdf_path = f'output/{oN}.pdf'  # 已有收据PDF路径
    ss_file = f'output/{oN}.png'
    output_pdf_path = f'output/{oN}_with_ss.pdf'  # 最终输出PDF路径

    # 读取原收据PDF
    reader = PdfReader(receipt_pdf_path)
    writer = PdfWriter()

    # 将截图转为PDF格式的图片页
    image = Image.open(ss_file)
    img_byte_stream = io.BytesIO()
    image.save(img_byte_stream, format='PDF')
    img_byte_stream.seek(0)
    img_pdf = PdfReader(img_byte_stream).pages[0]

    # 合并截图到原收据第一页(可修改索引指定其他页)
    target_page = reader.pages[0]
    target_page.merge_page(img_pdf)

    # 添加处理后的页面及剩余页面到输出
    writer.add_page(target_page)
    for page in reader.pages[1:]:
        writer.add_page(page)

    # 保存结果
    with open(output_pdf_path, 'wb') as out_file:
        writer.write(out_file)

方案2:使用ReportLab + PyPDF2

如果需要更精细控制截图的位置和尺寸,可通过ReportLab生成带截图的覆盖层,再合并到原PDF:

from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
import io

def embed_screenshot_to_receipt(oN):
    receipt_pdf_path = f'output/{oN}.pdf'
    ss_file = f'output/{oN}.png'
    output_pdf_path = f'output/{oN}_with_ss.pdf'

    # 创建带截图的临时PDF覆盖层
    temp_stream = io.BytesIO()
    can = canvas.Canvas(temp_stream)
    # 设置截图位置(x=10, y=10)和宽度100,高度自动按比例适配
    can.drawImage(ss_file, 10, 10, width=100)
    can.save()
    temp_stream.seek(0)

    # 读取覆盖层和原PDF
    overlay_pdf = PdfReader(temp_stream)
    receipt_pdf = PdfReader(receipt_pdf_path)
    writer = PdfWriter()

    # 合并覆盖层到原收据第一页
    target_page = receipt_pdf.pages[0]
    target_page.merge_page(overlay_pdf.pages[0])
    writer.add_page(target_page)

    # 添加剩余页面
    for page in receipt_pdf.pages[1:]:
        writer.add_page(page)

    # 保存结果
    with open(output_pdf_path, 'wb') as out_file:
        writer.write(out_file)

注意事项

  • 提前依赖安装:pip install pillow pypdf2 reportlab
  • 可根据收据布局调整截图的x/y坐标、宽度/高度参数
  • 若需嵌入到非第一页,修改代码中reader.pages[0]的索引值即可

内容的提问来源于stack exchange,提问作者Data 1230

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:39:55