取消隐藏后,html2pdf 不会打印 hidden div 吗?
html2pdf won't print hidden div after unhiding it?
我正在尝试使用 html2pdf 创建 PDF。我希望 html2pdf 捕获隐藏的 div,为此,我试图在创建 PDF 时简要 "un-hide" 我的 div,然后 "re-hide" div PDF 生成后:
function generatePDF() {
// Choose the element that our invoice is rendered in.
const element = document.getElementById("nodeToRenderAsPDF");
// Display the PDF div
$(element).css("display", "block");
// Choose the element and save the PDF for our user.
html2pdf(element);
//Hide the PDF div
$(element).css("display", "none");
}
但是打印 PDF 时,我的 div 不存在。我相信我曾尝试使用 html2pdf 提供的回调函数重新隐藏 div,并且成功了;但是,我隐藏的 div 会短暂地(0.5-1 秒)出现在屏幕上,而 PDF 会在消失前生成。我不能让那样的事情发生。此外,我不太喜欢将 div 放置在视口之外以补偿隐藏问题,因为我听说此方法与某些浏览器冲突。
关于如何解决这个问题的任何想法?非常感谢任何帮助。谢谢!
您可以使用 cloneNode
创建元素的克隆并将其用于创建 PDF。除非您将此克隆元素附加到文档,否则将不可见。
下面的代码将创建您的元素的克隆,更改其显示 属性,然后使用此克隆元素创建 pdf,最后删除此克隆元素。
function generatePDF() {
// Choose the element that our invoice is rendered in.
const element = document.getElementById("nodeToRenderAsPDF");
// clone the element
var clonedElement = element.cloneNode(true);
// change display of cloned element
$(clonedElement).css("display", "block");
// Choose the clonedElement and save the PDF for our user.
html2pdf(clonedElement);
// remove cloned element
clonedElement.remove();
}
我正在尝试使用 html2pdf 创建 PDF。我希望 html2pdf 捕获隐藏的 div,为此,我试图在创建 PDF 时简要 "un-hide" 我的 div,然后 "re-hide" div PDF 生成后:
function generatePDF() {
// Choose the element that our invoice is rendered in.
const element = document.getElementById("nodeToRenderAsPDF");
// Display the PDF div
$(element).css("display", "block");
// Choose the element and save the PDF for our user.
html2pdf(element);
//Hide the PDF div
$(element).css("display", "none");
}
但是打印 PDF 时,我的 div 不存在。我相信我曾尝试使用 html2pdf 提供的回调函数重新隐藏 div,并且成功了;但是,我隐藏的 div 会短暂地(0.5-1 秒)出现在屏幕上,而 PDF 会在消失前生成。我不能让那样的事情发生。此外,我不太喜欢将 div 放置在视口之外以补偿隐藏问题,因为我听说此方法与某些浏览器冲突。
关于如何解决这个问题的任何想法?非常感谢任何帮助。谢谢!
您可以使用 cloneNode
创建元素的克隆并将其用于创建 PDF。除非您将此克隆元素附加到文档,否则将不可见。
下面的代码将创建您的元素的克隆,更改其显示 属性,然后使用此克隆元素创建 pdf,最后删除此克隆元素。
function generatePDF() {
// Choose the element that our invoice is rendered in.
const element = document.getElementById("nodeToRenderAsPDF");
// clone the element
var clonedElement = element.cloneNode(true);
// change display of cloned element
$(clonedElement).css("display", "block");
// Choose the clonedElement and save the PDF for our user.
html2pdf(clonedElement);
// remove cloned element
clonedElement.remove();
}