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

如何将DataFrame指定位置值打印至PDF?批量填充PDF表单生成文件

解答你的两个PDF与DataFrame相关问题

1. 将DataFrame特定位置的值输出到PDF

我通常会用fpdf2这个轻量库来做这类简单的PDF生成,步骤很直接:

  • 先安装依赖库:
    pip install fpdf2
    
  • 编写代码提取特定值并写入PDF:
    from fpdf import FPDF
    import pandas as pd
    
    # 示例DataFrame(替换成你的实际数据)
    df = pd.DataFrame({
        "姓名": ["张三", "李四"],
        "年龄": [25, 30],
        "城市": ["北京", "上海"]
    })
    
    # 提取特定位置的值:比如第1行第2列(索引从0开始)
    target_value = df.iloc[0, 1]  # 这里得到值25
    
    # 创建PDF对象并设置格式
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    
    # 将值写入PDF,ln=True表示写完换行,align='C'表示居中
    pdf.cell(200, 10, txt=f"DataFrame特定位置的值:{target_value}", ln=True, align='C')
    
    # 保存生成的PDF
    pdf.output("特定值输出.pdf")
    

如果需要输出多个特定值或自定义排版,可以用pdf.text(x, y, txt)方法指定坐标写入,灵活性更高。

2. 以PDF为背景,填充DataFrame数据生成独立文件

这种需求分两种常见场景,我分别给你实用方案:

场景A:PDF是可交互的AcroForm表单

如果你的PDF本身是带可填写字段的标准表单,直接用pypdf库填充字段最省心:

  • 安装库:
    pip install pypdf
    
  • 代码示例(每行数据生成一个独立PDF):
    from pypdf import PdfWriter, PdfReader
    import pandas as pd
    
    df = pd.DataFrame({
        "姓名": ["张三", "李四"],
        "年龄": [25, 30],
        "城市": ["北京", "上海"]
    })
    # 你的表单模板PDF路径
    template_path = "表单模板.pdf"
    
    for idx, row in df.iterrows():
        writer = PdfWriter()
        reader = PdfReader(template_path)
        page = reader.pages[0]
        
        # 先打印所有字段名,方便确认对应关系(第一次运行时可以打开注释)
        # print(reader.get_fields())
    
        # 填充对应字段,这里假设表单字段名和DataFrame列名一致
        writer.add_page(page)
        writer.update_page_form_field_values(
            writer.pages[0],
            {
                "姓名": row["姓名"],
                "年龄": str(row["年龄"]),  # 表单字段通常要求字符串类型
                "城市": row["城市"]
            }
        )
    
        # 保存每个独立的填充后文件
        output_path = f"填充后的表单_{idx+1}.pdf"
        with open(output_path, "wb") as output_file:
            writer.write(output_file)
    

场景B:PDF是普通静态文件(作为背景)

如果你的PDF只是静态背景图,没有可填写字段,就用fpdf2导入背景后,在指定坐标写入数据:

  • 安装库:
    pip install fpdf2
    
  • 代码示例:
    from fpdf import FPDF
    import pandas as pd
    
    df = pd.DataFrame({
        "姓名": ["张三", "李四"],
        "年龄": [25, 30],
        "城市": ["北京", "上海"]
    })
    # 背景PDF路径
    background_pdf = "背景模板.pdf"
    
    for idx, row in df.iterrows():
        pdf = FPDF()
        pdf.add_page()
        # 导入背景PDF的第一页,铺满整个页面
        pdf.image(background_pdf, x=0, y=0, w=pdf.w, h=pdf.h)
        
        # 设置字体(可以根据需求调整字体、大小、颜色)
        pdf.set_font("Arial", size=12)
        # 假设每个字段的坐标已知(用PDF阅读器的测量工具可获取,x从左到右,y从上到下)
        pdf.text(x=50, y=60, txt=row["姓名"])
        pdf.text(x=50, y=80, txt=str(row["年龄"]))
        pdf.text(x=50, y=100, txt=row["城市"])
        
        # 保存生成的文件
        pdf.output(f"填充后的文件_{idx+1}.pdf")
    

小提示:如果不确定坐标,可以先在PDF里用文本工具试写位置,再对应到代码的x、y参数。

内容的提问来源于stack exchange,提问作者Carmen Sandoval

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:57:35