如何将HTML转换为PDF:完整指南

By PDFKits Team — Published February 19, 2026

TL;DR: 要将HTML转换为PDF,请根据工作需求选择方法:对于一次性保存使用浏览器打印(Ctrl+P),对于无法上传的文件和页面使用PDFKits的浏览器内创建PDF,生产管道使用无头Chrome(Puppeteer/Playwright),受限服务器使用WeasyPrint或wkhtmltopdf。保真度取决于渲染引擎——基于Chromium的路径可以准确再现现代CSS。PDFKits可以免费和本地转换;Adobe Acrobat的在线转换器每月收费14.99美元并需要上传您的文件。

将HTML转换为PDF:为什么渲染引擎决定一切

HTML到PDF的转换看似简单,但实际上取决于一个问题:哪个引擎绘制页面?基于Chromium的路径(您的浏览器、无头Chrome)可以准确渲染flexbox、CSS Grid、网页字体和JavaScript生成的内容,就像Chrome显示的一样——网页到PDF的高保真度是免费的,因为转换器就是浏览器。较轻的引擎(wkhtmltopdf的旧WebKit,WeasyPrint自己的布局引擎)在速度、可预测性和更小的占用空间上牺牲了CSS的覆盖率。

第二个问题是渲染在哪里进行。像Smallpdf和Adobe Acrobat Online这样的云转换器在其服务器上接收您的HTML——对于公共页面来说很好,但对于充满客户数据的发票模板来说就不合适。PDFKits的创建PDF在您自己的浏览器中渲染,因此包含客户信息的保存HTML文件可以在不经过网络的情况下变成可移植的PDF。知识工作者保存文章,开发人员每月发送2000份发票,运营团队打印运输标签,这三者解决的是三个不同的问题;本指南将每个问题映射到其工具。

如何在浏览器中将HTML转换为PDF

  1. 打开PDFKits上的创建PDF。 粘贴一个URL或上传一个保存的HTML文件。对于需要登录或付费墙后的页面,首先保存渲染的页面(右键单击 → 另存为)并上传该文件——转换使用文件中包含的内容。
  2. 设置页面几何形状。 选择A4、美国信纸或适合内容的尺寸,以及方向和边距。可选启用带有URL和日期的页眉/页脚——对引用和归档很有用。
  3. 等待资源,然后转换。 给网页字体和懒加载的图像一两秒钟的时间来完成加载;过早转换是回退字体和灰色图像占位符的主要原因。点击创建。渲染在本地进行——您的文件永远不会离开您的浏览器。
  4. 检查并后处理。 验证页面断点和背景,然后使用页码添加编号,或使用优化PDF缩小较大的结果。典型的文章转换为200 KB–2 MB。

五个团队,五个HTML到PDF转换器的选择

最佳适用: 任何输出范围从单个保存的文章到每天生成数千个文档的人——正确的工具会随着数量的变化而变化。

将网页保存为PDF:PDFKits与Adobe Acrobat、Smallpdf和iLovePDF的比较

功能PDFKitsAdobe Acrobat OnlineSmallpdfiLovePDF
费用免费$14.99/月$9/月$48/年高级版
HTML保留在您的设备上否——云否——云否——云
现代CSS(Grid,网页字体)是——浏览器引擎部分
转换保存的/本地HTML文件有限有限有限
认证页面是,通过保存的文件
带有URL + 日期的页眉/页脚有限有限

对于管道来说,这些都不是答案:在您自己的基础设施上运行的Puppeteer脚本在1–3秒内转换一个页面,每天可扩展到数千个文档,并将数据保留在您的边界内。UI工具在每天大约二十个文档以下表现良好;脚本在其以上表现更好。

每个人都会遇到的CSS陷阱

消失的背景。 打印对话框默认设置为“无背景图形”。启用它们,或在Puppeteer中传递printBackground: true,否则您的彩色标注将变成白色框。

错过快照的字体。 渲染可能在@font-face文件完成加载之前就开始。等待脚本中的document.fonts.ready;在浏览器中,打印前暂停一下。

无法控制的页面断点。 如果在表格和图形上没有break-inside: avoid,行会在单元格中间拆分。CSS分页媒体规范定义了将网页布局转换为适当文档的@page规则——边距、页码、命名页面;WeasyPrint最完整地实现了这些规则。

固定定位的惊喜。 在某些引擎中,固定元素会在每一页上重复,而在其他引擎中只出现一次。在发布模板之前,请使用多页内容进行测试。

没有打印样式表。 二十行的@media print——隐藏导航,展开折叠部分,设置可读的字体大小——比任何工具切换都能改善大多数转换。

将HTML转换为PDF:常见问题

为什么我的PDF看起来与网页不同?

三个常见原因:网站发布了@media print规则以重新样式化打印,对话框剥离了背景图形,或者网页字体在快照时尚未加载。按此顺序检查每个问题——它们共同解释了几乎所有的保真度投诉。

我可以转换登录或付费墙后的页面吗?

可以——保持登录状态并使用浏览器打印,或将渲染的HTML保存到本地并转换保存的文件。程序化管道在导航之前将会话cookie传递给无头浏览器。

我该如何处理无限滚动页面?

首先滚动到底部,以便所有内容都在DOM中,或使用网站的单页或阅读视图。脚本可以在打印之前自动触发滚动。

输出的PDF对屏幕阅读器可访问吗?

仅与输入HTML的质量相关:语义标题、alt文本和ARIA标签通常会作为标签传递;未标记的标记会生成未标记的PDF。完全的PDF/UA合规性需要在Acrobat Pro中进行后处理。

PDF会嵌入与页面相同的字体吗?

是的,如果它们在转换时已加载。基于Chromium的转换器会嵌入@font-face网页字体和本地系统字体,这使得输出可移植。

转换后的PDF会有多大?

典型的文章大小在200 KB到2 MB之间;图像较多的页面可能超过10 MB。如果要通过电子邮件发送或托管,请将结果通过优化器处理。

我可以批量转换500个URL吗?

不能通过UI——编写一个Puppeteer或Playwright循环,访问每个URL,等待加载,并使用合理的文件名保存。平均在普通硬件上预算每页1–3秒。

我该如何仅转换文章而不包括广告和侧边栏?

在打印之前切换到浏览器的阅读模式,或在脚本中提取文章容器并转换该片段。两者都可以将导航元素和广告位排除在文档之外。

SVG图形会清晰渲染吗?

通过基于Chromium的转换器,答案是肯定的——SVG保持矢量并且清晰缩放。像wkhtmltopdf这样的旧引擎会将SVG光栅化并产生模糊的输出;如果图表很重要,请选择Chrome路径。

在浏览器中转换是否会将我的HTML上传到任何地方?

使用PDFKits不会——渲染和PDF组装在客户端运行,没有请求会携带您的内容。云转换器必然会在其服务器上接收页面或文件。

相关的PDFKits工具

创建PDF — 本地转换URL和HTML文件。 合并PDF — 将转换的页面与其他文档合并。 优化PDF — 缩小大型转换以便共享。 页码 — 在多页导出中保持一致的编号。 编辑PDF — 转换后的修整。 清理元数据 — 在分发前剥离URL和创建者痕迹。

→ Try create PDF — Free & Online

关于PDFKits

PDFKits提供46个免费PDF工具,全部在您的浏览器中运行。无需上传文件到服务器、无需注册、无每日限制。这种本地化处理方式使PDFKits在结构上比Smallpdf和iLovePDF等需要上传文档才能处理的服务更注重隐私 — 这对机密的法律、医疗或财务文件是关键优势。

相关PDF工具

探索更多PDFKits工具:合并PDF压缩PDF拆分PDF签署PDFPDF转Word编辑PDF保护PDFOCR识别。全部免费且在浏览器中运行。