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

HTML2Canvas将溢出的内容转换为图像

赵修诚
2023-03-14

我有一个潜水舱,水太多了。它基本上包括一个大的组织结构图。我想做的是导出div的全部内容,而不是使用html2canvas库导出可见部分,但到目前为止我还无法实现。下面的代码段不会呈现全部内容。有没有办法做到这一点?

function export(){  
    html2canvas( [ document.getElementById('diagram') ], {
        onrendered: function(canvas) {

            var dataUrl = canvas.toDataURL();
            window.open(dataUrl, "toDataURL() image", "width=800, height=800");
            //Canvas2Image.saveAsPNG(canvas);
        }
     });
}

我正在使用BasicPrimitions库生成组织结构图。它接受一个div并将所有元素插入其中。因为我的图表相当大,所以它从容器中溢出。Xhtml代码如下所示:

<rich:panel style="float: left; width: 100%;">
     <div style="float: left; height:600px; margin-left: 1%;  width: 19%; border-style: dotted; border-width:1px;">
          Some irrelevant content
     </div>
     <div id="diagram" class='diagram' style="float: right; height:600px;  width: 59%; border-style: dotted; border-width:1px;">
          This is the div all charts are dynamically inserted
     </div>
     <div style="float: left; height:600px; margin-left: 1%;  width: 19%; border-style: dotted; border-width:1px;">
          Some more irrelevant content 
     </div>
</rich:panel>

共有2个答案

佴英奕
2023-03-14

给一个尝试dom到图像,它更好地为我工作,因为我必须设置特定的大小,并显示和元素隐藏一些屏幕大小:

function convertCanvasAndSend(idElement, nameImage) {
var element = document.getElementById(idElement);
var styleOrig = element.getAttribute("style");
element.setAttribute("style", "width: 1400px; height: 480px;");
element.querySelector("ANY_HIDDEN_YOU NEED").setAttribute("style", "display: block;");
domtoimage.toBlob(element)
.then(function (blob) {
    window.saveAs(blob, nameImage + '.png');
    element.setAttribute("style", styleOrig);
    element.querySelector("ANY_HIDDEN_YOU NEED").setAttribute("style", styleOrigInnDiv);
});

}

施超
2023-03-14

我不知道html2canvas中是否有一个简单的选项(即将所有溢出设置为可见的选项),但一个迂回的方法可能是在调用导出函数时将图表元素的溢出属性的父级设置为可见,然后在html2canvas的onrendered回调中将其再次设置为hidden,以便用户有最少的时间来感知它:

function export(){ 
document.getElementById('diagram').parentNode.style.overflow = 'visible'; //might need to do this to grandparent nodes as well, possibly.
    html2canvas( [ document.getElementById('diagram') ], {
        onrendered: function(canvas) {
            document.getElementById('diagram').parentNode.style.overflow = 'hidden';
            var dataUrl = canvas.toDataURL();
            window.open(dataUrl, "toDataURL() image", "width=800, height=800");
            //Canvas2Image.saveAsPNG(canvas);
        }
     });
}
 类似资料:
  • 问题内容: 我读了这篇文章,但我没有关注。我已经看到了,但还没有看到将转换为使用的正确示例。 要检索的内容为,使用推荐的还是有一个更可取的方法? 我正在考虑这个示例,并扩展并利用Decorator在运行时增加功能。是否有兴趣将其作为使用?的更好解决方案? 问题答案: A 可以读取任何内容,最后得到a 。 但是,使用a 更简单: 对于 产量,字节总数。 评论的答案:使用ByteArrayOutput

  • 问题内容: 有没有一种方法可以将JPanel(尚未显示)转换为BufferedImage? 谢谢, 杰夫 问题答案: 在BufferedImage中,您可以创建一个图形对象,可用于在JPanel上调用画图,如下所示: 您可能需要确保首先设置面板的尺寸。

  • 我有一个UIExtView和一个UIImageView,我想把它们转换成一个单独的图像来共享。 SaveImageView是ImageView,我想在这里保存textview的图像。 Textview可以在屏幕上移动它,所以我决定保存它们的最终位置,并将其交给SaveImageView。 首先转换图像中的UItext View并保存他的位置。 然后,我想加入两个Imageview,成一个单一的图像

  • 以下是我用来实现上述布局的代码: 我省略了用于样式设置的代码。你可以在钢笔里看到所有的东西。 上述方法有效,但当区域的内容溢出时,会使整个页面滚动。我只希望内容区域本身滚动,因此我将添加到div。 现在的问题是,柱本身并没有超出其父高度,因此边界也在那里被切断。 这是显示滚动问题的笔。 如何将区域设置为独立滚动,同时使其子项延伸到框的高度之外?

  • 问题内容: 我正在设计SQL Server 2008 R2 SP2 Express数据库中的表。我创建的表具有用于数据的列和用于自动递增标识的列,并假设行数不多(这就是为什么我选择0-255 )。当我添加超过255行时,即使删除该表中的所有行并尝试添加一个新行,该错误仍然会永久发生。我正在使用SQL Server Management Studio Express进行此操作。 如何强制数据库引擎检

  • 有没有更好的方法来转换贴图