当前位置: 首页 > 知识库问答 >
问题:

HTML2Canvas不呈现完整div,只呈现屏幕上可见的内容?

慕璞
2023-03-14

我正在尝试使用HTML2Canvas呈现div的内容。以下是html" target="_blank">代码:

var htmlSource = $('#potenzial-page')[0];

$('#btn').on("click", function() {          

    html2canvas(htmlSource).then(function(canvas) {
        var img = canvas.toDataURL();
        window.open(img);
    });

});

我正在使用v5 beta 3。

当此代码运行时,它仅呈现屏幕上可见的内容。#potenzial页面div基本上是整个页面,减去页眉和页脚。此div中的所有内容都可以通过滚动显示(有一些隐藏元素,但我不希望隐藏元素在图像中可见)

我找不到哪里出了问题,也找不到为什么它不能保存整个div。我还应该注意,图像似乎与div一样高,但只是部分可见。

举一个例子来说明我的意思,这里有一个比较:

左边是HTML2Canvas应该如何呈现div。右边是它运行上面代码时的呈现方式。右边的图像是我的浏览器屏幕中可见的图像。

我确实尝试添加了height选项,但没有任何区别。

使现代化

如果我滚动到页面的最顶端,然后运行脚本,它将按原样呈现整个div。

如何渲染div而不必滚动到顶部?

共有3个答案

吴谦
2023-03-14

我在我的案例中使用了window.scrollTo(),它对我有效。

下面是一个示例代码

$('#btn').on("click", function() { 
    window.scrollTo(0,0);     
    html2canvas(htmlSource).then(function(canvas) {
        var img = canvas.toDataURL();
        window.open(img);
    });
    window.scrollTo(0, document.body.scrollHeight || document.documentElement.scrollHeight);
});
葛雨华
2023-03-14

一个对我有效的解决方案是在我的css中添加以下内容:

.html2canvas-container { width: 3000px !important; height: 3000px !important; }

它可以防止html2CAN as将渲染限制在可视区域(这似乎是默认的)。

请看这里:https://github.com/niklasvh/html2canvas/issues/117

孟鸿德
2023-03-14

我希望我能帮助你

html2canvas(htmlSource, {scrollY: -window.scrollY}).then(function(canvas) {
            var img = canvas.toDataURL();
            window.open(img);
        });
 类似资料:
  • 我使用HTML2Canvas渲染两个反应组件,问题是文档的输出只呈现屏幕上可见的内容,所以如果组件的内容很短,我可以看到pdf中的所有内容,但是,如果内容很长,我需要滚动到页面的顶部,使其工作,或者我需要将我的导航缩放到50%,然后单击print 我的代码中是否有错误:

  • 除了项目的配置之外,我所做的没有比展示柜上说的更多。以下是我的设置摘要: > 我在Windows x64上使用Apache Tomcat 8.0.39 Firefox 50.0.2和Chrome版本55.0.2883.75m(64位)显示相同的结果(只有当前选定的图像可见) 我使用的是Java8 ,这些是项目的依赖项 这是我的backing bean:

  • 我正在使用react、Redux和react Router开发一个react web应用程序,带有服务器端呈现(使用express) 我面临的问题有点难以解释。我将试着在下面的步骤中进行解释。 > 您首先从http://www.example.com/articles/1234这样的URL进入应用程序。express服务器将发送正确的内容,其中包括正确的页面源和DOM(来自chrome Eleme

  • 我想用MCP在Minecraft 1.18的屏幕上显示一个文本。我在YouTube上看过一些教程,但它们只介绍了如何在1.12版中使用,在网上搜索了大约4个小时后,我没有找到1.18版的任何内容。在1.12中,他们使用了

  • 我有一个。我想有条件地呈现一行,如下所示: 在我的控制器中,有变量实体,它有getter和setter。 有人能帮我一下吗?我是JSF的新手,这个错误可能很愚蠢,而且很容易解决,但请帮助我解决它。多谢了。 我正在发布我在尝试上面的代码时得到的输出。 此输出仅使用显示datatable,而不尝试有条件地呈现它。可以看到标题。

  • 我面临的问题是,我不能让这个循环的每个迭代之间的板得到呈现。我只得到这个循环的最终结果。 我试图在每次迭代之前创建一个thread.sleep(2*1000),以便给渲染系统时间来绘制我的板,但它工作了。 另一个解决办法是调用