讲师中心 微信公众号
AI工具推荐 视频效率加速

html2canvas导出pdf 网页截图怎么生成pdf【转换】

浅萱酱_1254

浅萱酱_1254

发布时间:2026-03-05 17:49:41

|

923人浏览过

|

来源于php中文网

原创

html2canvas 仅生成 Canvas 图片,导出 PDF 必须结合 jsPDF 的 addImage();需设 scale: 2、手动适配 A4 像素尺寸(794×1123)、确保中文字体可用、useCORS: true + allowTaint: false 解决跨域与截全问题。

html2canvas导出pdf 网页截图怎么生成pdf【转换】

html2canvas 本身不生成 PDF,得靠 jsPDF 中转

html2canvas 只负责把网页元素画成 Canvas 图片,它没有 PDF 生成功能。想导出 PDF,必须把 canvas 输出的 data URL 或 blob 交给 jsPDF 的 addImage() 方法拼成 PDF 页面。

常见错误是直接调用 html2canvas().then(canvas => canvas.toBlob(...)) 就以为完事了——结果只拿到一张 PNG,根本不是 PDF。

  • 必须引入 jsPDF(推荐用 jspdf@2.5.1+,老版本对高 DPI 屏幕支持差)
  • html2canvas 的 scale 建议设为 2,否则在 Retina 屏上截图模糊
  • 如果页面内容超一页,jsPDF 不会自动分页——得手动切区域、多次 addImage()

导出 A4 尺寸 PDF 时,canvas 宽高要按 96dpi 换算

浏览器里 1cm ≈ 37.8px(按 96dpi 计算),A4 纸是 210mm × 297mm → 换算成像素约 794px × 1123px。但 html2canvas 默认按元素原始尺寸渲染,不考虑打印尺寸,所以得手动控制 canvas 输出大小。

否则 PDF 看起来“太小”或“被压缩”,尤其文字边缘发虚。

Html2md
Html2md

使用 Readability + Turndown 将 HTML 页面转换为干净的、Agent 友好的 Markdown。去除导航栏、广告、页脚、Cookie 横幅、社交按钮等干扰元素。支持 URL...

下载

立即学习“前端免费学习笔记(深入)”;

  • 给 html2canvas 传 { width: 794, height: 1123, scale: 2 },确保输出 canvas 至少 1588×2246 像素
  • 创建 jsPDF 实例时用 new jsPDF({ unit: 'px', format: [794, 1123] }),单位和尺寸对齐
  • 调用 addImage() 时指定宽高: pdf.addImage(imgData, 'PNG', 0, 0, 794, 1123)

中文乱码?字体没嵌入,不是编码问题

jsPDF 默认只支持 ASCII 字体,哪怕页面用了 @font-face 引入思源黑体,导出 PDF 后中文仍显示为方块——因为 addImage() 是把 canvas 当图片贴进去,字体渲染已在 canvas 阶段完成;而 canvas 绘制中文依赖系统字体,若目标环境(比如 Linux 服务器或无头浏览器)缺字体,就直接 fallback 成空白。

  • 确保运行环境装了中文字体(如 Ubuntu 装 fonts-wqy-zenhei)
  • 开发时用 Chrome 浏览器测试,避免在 Electron 或 Puppeteer 里跑 html2canvas 却没配好字体路径
  • 不要指望 jsPDF.setFont() 对 addImage() 生效——它只影响 text() 方法绘制的文字

滚动区域截不全?别用 scrollY,改用 useCORS: true + allowTaint: false

如果要截图的区域超出视口(比如长表格、带 overflow-y: scroll 的 div),html2canvas 默认只渲染当前可见部分。有人试过先滚到顶部再截图,但异步滚动 + 渲染时机难控,容易截漏。

真正可靠的解法是让 html2canvas 强制渲染整个 DOM 区域,而不是依赖滚动位置。

  • 给目标容器加 style="height: auto; overflow: visible;" 临时撑开(注意别影响原布局)
  • html2canvas 选项里必须设 useCORS: true,否则跨域图片(如 CDN 上的 avatar)会触发 canvas 污染,导致 toDataURL() 报错 Failed to execute 'toDataURL' on 'HTMLCanvasElement'
  • 同时设 allowTaint: false,避免因个别资源加载失败中断整个截图流程
实际导出逻辑就三步:用 html2canvas 渲染整块 DOM → 转成 data URL → 丢给 jsPDF 插入页面。难点不在代码长短,而在每一步的隐式依赖:字体、DPI、CORS、容器尺寸——漏一个,PDF 就不是你看到的那个样子。

相关文章

极轻PDF
极轻PDF

专业的在线PDF工具,支持PDF编辑、转换、合并、压缩等多种功能,操作简单,处理高效,满足日常办公与学习中的PDF处理需求。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

6575

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

3672

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

3330

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

3359

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

5019

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

3301

2023.08.11

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

3109

2023.08.31

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2708

2023.09.01

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

40

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 227人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn