2014-10-29 168 views
0

我正在使用jsPDF,它使用html2canvasHere就是一个例子。将html2canvas更改为接受显示为无

根据this的答案,我下载了html2canvas,并开始在本地使用它作为建议进行此更改, ,因为将颜色设置为其他提议的答案并不适合我。

此外,我注意到我有其他的要求,这是不同的html2canvas默认提供的。即使显示设置为none,我也需要生成PDF文件。

请注意我给出的示例,选项HTML Renderer (early stages)适用于display none,但实现了较差的渲染。另一方面,我现在正在使用的addHTML()呈现页面,但这意味着只渲染可见的页面。

这是html2canvas默认的方法来决定什么可视为可视。

function isElementVisible(element) { 
     return (getCSS(element, 'display') !== "none" && 
       getCSS(element, 'visibility') !== "hidden" && 
       !element.hasAttribute("data-html2canvas-ignore")); 
} 

我评论行:getCSS(element, 'visibility') !== "hidden",它使我能够创建PDF即使visibility: hidden。然而,对于display: none而言,即使该方法始终返回TRUE,也是如此。

如何实现它?

回答

1

具有display: none的节点无法获得为其计算的DOMRect,因为它在DOM中没有一个(因为它是display: none)。

如果要渲染display: none内容,则需要在渲染之前将节点的display设置为其他内容。

与html2canvas 0.5.0开始,你可以提供一个onclone选项html2canvas这是一个返回克隆document对象,在那里你可以去渲染它适合之前修改DOM正如你看到的回调,而不会影响原件document