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

如何将网站所有页面、express.js类工具库文档转换导出为PDF

两类网页转PDF需求的实现方案(Node.js栈适配)

你有Node.js基础的话,实现这两个需求门槛很低,核心优先选headless浏览器类的渲染方案,比传统的wkhtmltopdf这类依赖旧webkit内核的工具兼容性好太多,不会出现动态内容加载不全、CSS样式错乱的问题。


整站全页面转PDF实现

这类需求的核心是先做同域名下的链接爬取、去重、爬取深度控制,再逐页渲染导出PDF,推荐组合:

  • 爬取层用simplecrawler:专门做整站爬取的轻量库,支持配置域名白名单、爬取深度、路径忽略规则,自动去重已爬链接,不用自己写重复的链接遍历逻辑。
  • 渲染导出层用puppeteer:Chrome官方维护的headless Chrome控制库,渲染效果和本地打开Chrome完全一致,支持等待页面所有资源、异步接口加载完成后再导出,导出的PDF支持保留背景样式、自定义页边距、纸张尺寸。
  • 如果你需要把全站页面合并成单个PDF文件,再加个pdf-lib库就行,支持把多个分散的PDF文件按顺序合并,还能自定义添加书签、页码。

实现时注意几个细节:爬取并发数别开太高,设2-3并发、每次请求间隔1秒以上,避免给目标站造成太大压力被封IP;页面跳转时用waitUntil: 'networkidle2'配置,等网络请求基本空闲后再导出,避免懒加载图片、异步渲染的内容缺失。


技术文档(如Express.js文档)导出PDF

这类文档站结构规整,一般有固定的侧边栏目录,不需要无差别爬全站所有页面,比整站爬取更简单:

  • 优先看目标文档站用的是什么框架,如果是VuePress、Docusaurus、MkDocs这类主流文档框架,直接搜对应框架的PDF导出插件就行,不用自己写爬取逻辑,导出的文件自带目录、页码,格式规整。
  • 如果要自己写脚本实现,不用开整站爬取,先打开文档首页,通过DOM选择器提取侧边栏里所有文档页的链接,按文档的排序整理好链接列表,再逐页用puppeteer转成PDF,最后用pdf-lib按顺序合并即可,还能对应目录层级给PDF加书签,阅读体验更好。
  • 要是遇到有简单反爬的文档站,可以把puppeteer换成playwright,API和puppeteer几乎一致,默认自带浏览器指纹伪装,被反爬拦截的概率更低。

给你一段最基础的puppeteer单页转PDF示例代码,改改就能扩展成批量逻辑:

const puppeteer = require('puppeteer');

async function convertUrlToPdf(targetUrl, savePath) {
  // 启动无头浏览器
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--no-sandbox']
  });
  const page = await browser.newPage();
  // 固定桌面端视口,避免触发移动端样式
  await page.setViewport({ width: 1280, height: 900 });
  // 跳转到目标页,等网络空闲再继续
  await page.goto(targetUrl, { waitUntil: 'networkidle2' });
  // 导出PDF
  await page.pdf({
    path: savePath,
    format: 'A4',
    printBackground: true, // 保留页面背景色、背景图
    margin: { top: '1cm', bottom: '1cm', left: '1cm', right: '1cm' }
  });
  await browser.close();
}

// 调用示例:导出Express.js首页为PDF
convertUrlToPdf('https://expressjs.com/', './express-home.pdf');

最后提两个踩过的坑:别用基于html2canvas+jsPDF的前端导出方案,长文档跨页时很容易出现内容截断、样式错位,稳定性远不如服务端headless浏览器渲染的方案;如果文档需要登录才能访问,puppeteer和playwright都支持注入登录后的cookie、或者模拟登录操作,处理起来很简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 17:33:40