html2canvas 和 React 生成 pdf 不起作用
html2canvas and React to generate pdf doesn't work
我正在使用 html2canvas 和 jsPdf 从 HTML 为一个 React 应用程序生成 Pdf。
单击我的下载按钮 我调用此函数:
printDocument() {
const input = document.getElementById('divToOfferInfo');
const pdf = new jsPDF();
if (pdf) {
html2canvas(input, {
useCORS: true
})
.then(canvas => {
const imgData = canvas.toDataURL('image/png');
console.log(imgData); //Maybe blank, maybe full image, maybe half of image
pdf.addImage(imgData, 'PNG', 10, 10);
pdf.save('download.pdf');
});
}
}
结果完全随机。 canvas 的结果是全、半或空但不正确。
我认为这个问题与 React 的渲染有关。
感谢您的帮助。
我找到了替代解决方案。要使用 html2canvas 库,我们可以使用 dom-to-image 库。它正在使用它。
import domtoimage from 'dom-to-image';
...
printDocument() {
const input = document.getElementById('divToOfferInfo');
const pdf = new jsPDF();
if (pdf) {
domtoimage.toPng(input)
.then(imgData => {
pdf.addImage(imgData, 'PNG', 10, 10);
pdf.save('download.pdf');
});
}
}
你可以这样使用。我正在使用这段代码,它运行良好。
savePDF() {
const printArea = document.getElementById("printWrapper");
html2canvas(printArea).then(canvas => {
const dataURL = canvas.toDataURL();
const pdf = new jsPDF();
pdf.addImage(dataURL, 'JPEG', 20, 20, 180, 160);
pdf.save('saved.pdf')
})
}
我正在使用 html2canvas 和 jsPdf 从 HTML 为一个 React 应用程序生成 Pdf。
单击我的下载按钮 我调用此函数:
printDocument() {
const input = document.getElementById('divToOfferInfo');
const pdf = new jsPDF();
if (pdf) {
html2canvas(input, {
useCORS: true
})
.then(canvas => {
const imgData = canvas.toDataURL('image/png');
console.log(imgData); //Maybe blank, maybe full image, maybe half of image
pdf.addImage(imgData, 'PNG', 10, 10);
pdf.save('download.pdf');
});
}
}
结果完全随机。 canvas 的结果是全、半或空但不正确。
我认为这个问题与 React 的渲染有关。
感谢您的帮助。
我找到了替代解决方案。要使用 html2canvas 库,我们可以使用 dom-to-image 库。它正在使用它。
import domtoimage from 'dom-to-image';
...
printDocument() {
const input = document.getElementById('divToOfferInfo');
const pdf = new jsPDF();
if (pdf) {
domtoimage.toPng(input)
.then(imgData => {
pdf.addImage(imgData, 'PNG', 10, 10);
pdf.save('download.pdf');
});
}
}
你可以这样使用。我正在使用这段代码,它运行良好。
savePDF() {
const printArea = document.getElementById("printWrapper");
html2canvas(printArea).then(canvas => {
const dataURL = canvas.toDataURL();
const pdf = new jsPDF();
pdf.addImage(dataURL, 'JPEG', 20, 20, 180, 160);
pdf.save('saved.pdf')
})
}