我正在使用 jsPDF 将 html 块转换为 PDF 文件。我检查 HTML 并检查是否有文本或图像。我用于doc.text文本和doc.addImage图像。我很难处理来自 的响应,canvasOutput = html2canvas(input)因为它是Promise. 我的代码如下所示:
for (const element of htmlData) {
input = document.getElementById(element);
var typ = input.innerHTML.substring(23, 27);
if (typ == '<h3>') {
doc.setFont(fontName, 'bold');
writeText(input, h3_fontSize, 5);
} else if (typ == '<h5>') {
doc.setFont(fontName, 'bold');
writeText(input, h5_fontSize, 3);
} else if (typ == '<img') {
var canvasOutput = html2canvas(input);
canvasOutput.then((response) => {
imgData = response.toDataURL('image/jpeg', 1.0);
doc.addImage(imgData, 'PNG', left_edge_distance, position_mm, 100, 100);
});
}
}
doc.save('download.pdf');
该函数writeText()包含以下代码:
function writeText(input, fontSize, lineSpace) {
doc.setFontSize(fontSize);
var content = input.innerHTML.substring(27, input.innerHTML.length - 11);
var splitText = doc.splitTextToSize(content, max_text_width);
splitText.forEach((element) => {
doc.text(element, left_edge_distance, position_mm);
position_mm = position_mm + fontSize * pixelTrans + lineSpace;
});
}
输出文件不包含图像,但是当我复制doc.save()承诺的响应函数内部时,图像会进入我的 PDF 中。
html2canvas我的问题是:我怎样才能得到承诺之外的结果?
UYOU
相关分类