javascript - 画布没有在“屏幕外”获取文档 - React + html2canvas + jsPDF
问题描述
我有一个问题,我已经在整个互联网上搜索,但我没有找到任何可以帮助我的东西。
我想要什么:
我想同时导出不同“组件”中的多个页面。
例如:
我有 2 页:
第 1 页:
<div>
<div id='DOWNLOAD' <somestyles>>
<h1> HI GUYS </h1>
</div>
</div>
第2页:
<div>
<div id='DOWNLOAD' <somestyles>>
<h1> HELLO WORLD </h1>
</div>
</div>
我有这个功能:
let divs;
useEffect(() => {
divs = document.querySelectorAll('#DOWNLOAD');
})
const addNewPages = [...divs].map(async(input, i) => {
const firstPage = i === 0 ? true : false
const element = divs[i] as HTMLElement;
return await html2canvas(element)
.then(async(canvas) => {
if (!firstPage) await pdf.addPage()
const imgData = await canvas.toDataURL(`image/png`);
pdf.addImage(imgData, 'PNG', 0, 0, 210, 230);
alert('added')
})
});
Promise.all([...addNewPages]).then(() => {
pdf.save("download.pdf");
})
问题是: 如果这个函数在第 1 页,我只是从第 1 页获取数据,而第 2 页的数据为空,如果函数在第 2 页,行为相同。
我不知道为什么。这两个组件是同一个组件的子组件,但我一次只显示一个。
例如:如果我显示第 1 页,我不会显示第 2 页
有人可以帮助我吗?
我可以通过获取 HTML 文档,document.querySelectorAll('#DOWNLOAD');
但是当我放入 html2canvas(this element) 时,它变成了空的。
解决方案
推荐阅读
- r - 如何将具有类间隔的数据从excel导入到R
- jupyter-notebook - cocalc:如何添加 julia 内核?
- arrays - 通过firebase firestore上的数组内的对象值查询
- html - 填写一个框固定宽度
- css - 如何从图像元素中分离背景不透明度转换
- mysql - 我有三个查询链接以将一个表从 oracle 提取到 SAS,但第三个查询没有输出任何输出,我没有发现错误
- swift - 出现致命错误,提示“JVP 不存在。微分优先微分 API 是实验性的,不应使用。”
- c# - EF Core 中的单边一对一关系和级联删除问题
- github - 如何在 GitHub 操作中安装旧版本的 Direct X Api
- python-3.x - Pandas Dataframe 使用 Merge 过滤结果。编码解码问题