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

如何使用FPDF插入PDF文件?替代图片插入的技术问询

在FPDF中插入外部PDF的两种实现方案

1. 将PDF页面作为图片式元素插入(类似image()方法的效果)

FPDF本身不支持直接把PDF当图片插入,但可以先把目标PDF的页面转成图片格式,再用image()方法插入。这种方式能让你把PDF内容放在当前页面的任意位置,和插入图片的逻辑完全一致。

实现步骤:

  • 先安装依赖工具:pip install pdf2image pillow fpdf2
  • 代码示例:
from fpdf import FPDF
from pdf2image import convert_from_path

# 初始化主文档
main_pdf = FPDF()
main_pdf.add_page()

# 把目标PDF的第1页转成PNG图片(可指定页码范围)
chart_pdf_pages = convert_from_path("chart.pdf", first_page=1, last_page=1)
temp_img = "chart_temp.png"
chart_pdf_pages[0].save(temp_img)

# 像插入普通图片一样插入转换后的PDF页面
main_pdf.image(temp_img, x=15, y=20, w=170)  # 自定义位置和宽度

# 保存合并后的文档
main_pdf.output("merged_with_pdf_as_image.pdf")

2. 将PDF作为新页面插入

如果不需要把PDF内容嵌入现有页面,直接添加为新页面的话,用fpdf2(FPDF的活跃维护分支)可以直接实现,无需转格式,还能保留PDF的矢量清晰度。

代码示例:

from fpdf import FPDF

main_pdf = FPDF()
# 先添加原文档的内容页面
main_pdf.add_page()
main_pdf.set_font("Arial", size=14)
main_pdf.cell(200, 10, txt="这是原文档的内容页", ln=True, align="C")

# 插入外部PDF的所有页面作为新页面
main_pdf.add_page_from_pdf("chart.pdf")

# 也可以指定插入特定页码,比如只插第2、3页:
# main_pdf.add_page_from_pdf("chart.pdf", pages=(2, 3))

main_pdf.output("merged_with_new_pages.pdf")

注意事项:

  • 转图片的方式会损失矢量清晰度,适合对精度要求不高的场景;
  • 直接插入PDF页面的方式保留原文件的矢量属性,清晰度更高,是优先推荐的方案;
  • 旧版原生FPDF没有直接插入PDF的API,建议升级到fpdf2以获得更好的支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:25:22