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

Python如何导出带PNG缩略图的pandas DataFrame为PDF文件

带图片的DataFrame导出PDF解决方案

你已经实现了将图片转base64内嵌到HTML表格中,只需使用HTML转PDF的工具即可直接导出,下面是两种可直接运行的实现方案:

方案1:pdfkit + wkhtmltopdf(兼容性更强,适合复杂表格)

安装依赖

  1. 安装系统依赖wkhtmltopdf:
    • Windows:从官网下载安装包安装,安装后把bin目录加入系统PATH,或者后续代码里手动指定路径
    • Mac:执行 brew install wkhtmltopdf
    • Linux:执行 sudo apt install wkhtmltopdf
  2. 安装Python包:执行 pip install pdfkit

实现代码

首先修正image_formatter的转义问题,避免HTML标签失效:

def image_formatter(im):
    # 直接输出原生img标签,指定固定宽度适配PDF排版
    return f'<img src="data:image/png;base64,{image_base64(im)}" width="100">'

然后执行导出逻辑:

import pdfkit

# 给HTML添加基础样式,优化PDF显示效果
html_template = f'''
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <style>
        table {{width: 100%; border-collapse: collapse; margin: 10px 0;}}
        th, td {{padding: 12px; text-align: left; border: 1px solid #eee;}}
        th {{background-color: #f5f5f5; font-weight: bold;}}
        img {{object-fit: contain;}}
    </style>
</head>
<body>
    {df.to_html(formatters={'file_path': image_formatter}, escape=False)}
</body>
</html>
'''

# 导出PDF,如果wkhtmltopdf不在PATH中,取消下面两行注释手动指定路径
# config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
# pdfkit.from_string(html_template, '导出结果.pdf', configuration=config)
pdfkit.from_string(html_template, '导出结果.pdf')

方案2:WeasyPrint(配置更简单,无需额外配置系统路径)

安装依赖

执行 pip install weasyprint 即可完成所有依赖安装。

实现代码

复用上面的html_template变量,直接导出:

from weasyprint import HTML

HTML(string=html_template).write_pdf('导出结果.pdf')

常见问题调整

  • 如果PDF排版错乱:可以在image_formatter中给img标签固定宽高,或者在样式表中调整表格列宽
  • 图片不显示:检查image_formatter返回的标签没有转义字符,且to_html参数escape=False已配置,base64的图片格式和后缀一致
  • 中文显示乱码:在HTML的样式表中指定中文字体即可,比如添加body {font-family: "SimSun", sans-serif;}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:51:03