【URL 转换为PDF】HTML转换为PDF

1、方法1 pdfkit

安装依赖

python 复制代码
# 安装 wkhtmltopdf(系统级)
# Ubuntu/Debian
sudo apt install wkhtmltopdf

# macOS
brew install wkhtmltopdf

# Windows 下载安装:https://wkhtmltopdf.org/downloads.html

# 安装 Python 库
pip install pdfkit
python 复制代码
import pdfkit

# 将网页转为 PDF
def url_to_pdf(url, output_path):
    try:
        pdfkit.from_url(url, output_path)
        print(f"PDF 已保存为: {output_path}")
    except Exception as e:
        print(f"转换失败: {e}")

# 示例调用(替换为你的链接)
url_to_pdf(
    "https://etcnew.sdut.edu.cn/meol/common/script/preview/download_preview.jsp?fileid=15400633&resid=1451996&lid=65791&preview=preview",
    "水泥工艺学-第五章硅酸盐水泥熟料的煅烧.pdf"
)

方法2:pyppeteer (很高级)适用于JavaScript渲染的网页(如Vue、React页面)。

python 复制代码
import asyncio
from pyppeteer import launch

async def html_to_pdf(url, output_path):
    browser = await launch(headless=True)
    page = await browser.newPage()
    await page.goto(url, {'waitUntil': 'networkidle2'})
    await page.pdf({'path': output_path, 'format': 'A4', 'printBackground': True})
    await browser.close()

# 使用示例
asyncio.run(html_to_pdf("https://example.com", "output.pdf"))

方法3:playwright (最高级,最稳定版本)

python 复制代码
# 更新 pip
python3 -m pip install -U pip

# 安装 Playwright Python 库
pip install playwright

# 下载并安装所需的浏览器(Chromium、Firefox、WebKit)
playwright install


playwright --version
python 复制代码
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com")
    page.pdf(path="page.pdf", format="A4")
    browser.close()
相关推荐
NiceCloud喜云7 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby8 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
丷丩8 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
Front思9 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
ZC跨境爬虫11 小时前
跟着 MDN 学CSS day_29:(掌握文本与字体样式的核心艺术)
前端·css·ui·html·tensorflow
李子琪。12 小时前
网络空间安全深度实战:CSRF 漏洞原理剖析与基于 Token 的纵深防御体系构建(全栈实验报告)
前端·安全·csrf
冰暮流星12 小时前
javascript之history对象介绍
前端·笔记
IT_陈寒12 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端
丷丩12 小时前
MapLibre GL JS第19课:实时更新要素
前端·javascript·gis·map·mapbox·maplibre gl js
Mr.Daozhi12 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具