jspdf - html2canvas 不适用于大型 HTML 内容
问题描述
我正在尝试使用 html2canvas 库来保存动态生成的 html,并将其作为图像输出到页面。如果生成的 HTML 不是太多,那么 html2canvas 可以正常工作,但是,如果生成的 html 真的太大(当我尝试打印它时,它是 70 页),那么 html2canvas 将返回一个画布对象,其中canvas.toDataURL('image/png')
返回data:;
,就是这样。
我在网上找到了一篇帖子,建议将 html2canvas.js 文件中的 maxInt 更改为 Number.MAX_VALUE,但效果不佳。
有没有办法解决这个问题?我需要这张图片最终将其传递给 jspdf 库以生成 pdf 文档。
解决方案
第一件事。如果您正在剪辑,可能是因为您尝试捕获的图像对于浏览器来说太大了。请参阅有关画布尺寸限制的常见问题解答:
https://html2canvas.hertzen.com/faq
如果是这种情况,那么您需要将图像分解为更小的子图像,并将它们作为单独的页面写入 PDF。您不能将它们组合成单个图像,因为浏览器不允许您这样做。
如果您小于该大小,则可能是由于影响 alpha.12 的缺陷,如果您使用传递选项 windowWidth,则捕获 document.body 可以剪辑内容。该缺陷的解决方法只是捕获其他内容,document.body
并且它会起作用。
推荐阅读
- qt - 使用 QTcreator 4.71 我如何在代码窗口中打开它的建议?
- jmeter - 什么是性能测试中的协调遗漏?
- java - Lombok 不适用于 spring-boot-maven
- angular - 查询 fromObject 中的范围
- apache - 要么所有选项都必须以 + 或 - 开头,要么没有选项可以
- ruby - 无法检查布尔值是否存在 Rails 5
- regex - 正则表达式用于放置在给定字符串之前或之后的数字
- c++ - 如何使用这个 is_class SFINAE?
- dialogflow-es - Dialogflow 意图生命周期最佳实践和性能
- swift - Swift:升级到 Xcode 10 后单元测试方向更改时超时