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

如何用Playwright Python将含<object>引用PDF的HTML转PDF?

问题解答

直接通过<object>或<embed>标签在HTML中内嵌PDF,再用Playwright for Python将HTML转为PDF的方案不可行——原因是Playwright依赖的Chromium内核默认没有内置PDF渲染插件来解析这类标签,因此会出现“Couldn't load plugin”的提示。

要实现将HTML内容与引用的PDF合并为单个PDF文件,你需要采用以下两种方案之一:

方案1:将PDF转为图片插入HTML

把目标PDF的每页转换为图片格式(如PNG/JPEG),在HTML中用<img>标签引用这些图片,再用Playwright将HTML转为PDF。这种方式能保证所有内容(包括原PDF内容)被正常渲染。

示例步骤:

  1. 使用pdf2image库将PDF转为图片:
from pdf2image import convert_from_path

# 把PDF转为图片列表
pdf_pages = convert_from_path("/path/to/file.pdf")
# 保存每页图片
for idx, page in enumerate(pdf_pages):
    page.save(f"pdf_page_{idx}.png", "PNG")
  1. 修改HTML,用<img>替换<object>标签:
<html>
<body>
    <h1>Hello World</h1>
    <p>The following PDF should be inserted inline</p>
    <figure>
      <img src="pdf_page_0.png" width="100%" />
      <!-- 若PDF有多页,依次添加对应图片标签 -->
      <img src="pdf_page_1.png" width="100%" />
    </figure>
    <p>There might be other content, images or PDFs</p>
</body>
</html>
  1. 用Playwright将修改后的HTML转为PDF:
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("file:///path/to/modified.html")
    page.pdf(path="final_output.pdf")
    browser.close()

方案2:合并HTML生成的PDF与原PDF

先将HTML单独转为PDF,再用PDF处理库(如PyMuPDF、PyPDF2)把原PDF的页面插入到HTML生成的PDF的对应位置。

示例步骤(基于PyMuPDF):

  1. 用Playwright将HTML转为PDF:
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("file:///path/to/original.html")
    page.pdf(path="html_output.pdf")
    browser.close()
  1. 合并两个PDF:
import fitz

# 打开HTML生成的PDF和原PDF
html_pdf = fitz.open("html_output.pdf")
original_pdf = fitz.open("/path/to/file.pdf")

# 在HTML PDF的指定位置插入原PDF的所有页面(示例为第2页后,可根据需求调整)
html_pdf.insert_pdf(original_pdf, start_at=1)

# 保存合并后的最终PDF
html_pdf.save("final_output.pdf")
html_pdf.close()
original_pdf.close()

两种方案可按需选择:若需要保留PDF的矢量清晰度,优先选方案2;若仅需可视化展示原PDF内容,方案1的实现流程更简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:15:16