5

我正在使用 JavaScript InfoVis Toolkit ( http://thejit.org/ ) 并尝试使用 canvas.toDataURL("image/png"). 虽然这适用于我的 ForceDirected 图——在 SpaceTree 中,我们将标签放在单独的 DIV 中,因此当我打印图像时,我得到一个空白图。

有谁知道如何打印标签?任何帮助将不胜感激。我附上了图表的手动截图和打印时得到的图像。

是的——我确实在这里看到了这个问题——但它没有回答我的问题,因为我们不能使用“原生”标签,因为我们会做一些即时造型。

HTML 代码:

<div id="infovis" style="height: 412px;">
   <div id="infovis-canviswidget" style="position: relative; width: 800px; height: 412px;">
     <canvas id="infovis-canvas" width=800" height="412" style="position: absolute; top: 0px; left: 0px; width: 800px; height: 412px;"></canvas>
     <div id="infovis-label" style="overflow: visible; position: absolute; top: 0px; left: 0px; width: 800px; height: 0px;">
           -- Labels are in here --
     </div>
   </div>
</div>

手动截图手动截图 空白打印图像空白打印图像

4

3 回答 3

1

我通过使用html2canvas插件解决了这个问题。基本上,html2canvas 将创建一个 div 元素(及其子元素)的新画布,然后您将其转换为带有myCanvas.toDataURL("image/png"). 此图像将包含您的 HTML 标签。(请注意 html2canvas 可能无法正确处理标签的 CSS 属性。)

 html2canvas(document.getElementById("diagram-container"), {
         onrendered: function(canvas) {
         var img = canvas.toDataURL();
         document.write('<img src="'+img+'"/>');
          }
  });
于 2013-06-06T21:56:45.303 回答
0

我应该在 10 月份找到它的时候把它贴出来——但它让我忘记了。我能够找到自己问题的答案。

首先在这里查看帖子HTML 5 Canvas Save Image

这是我实现解决方案的方式(从上面的链接获取 CanvasSaver 功能代码):

function SaveCanvas(canvasName) {
  var canvas = document.getElementById(canvasName);
  var imgUrl = null;

  if (canvas.getContext) {
    //Get alternative image URL for spacetree only
    if (canvasName.indexOf("tag") == -1) {
        imgUrl = $jit.ST.prototype.print.call();
    }

    var cs = new CanvasSaver('http://joeltrost.com/php/functions/saveme.php');
    //cs.saveJPEG(canvas, 'image');
    cs.savePNG(canvas, 'image', imgUrl);
  }
}

最后——编写 ASP 按钮以调用 SaveCanvas 函数:

<asp:ImageButton ID="ImageButton1" ImageUrl="Images/save_icon.png" ToolTip="Save Visualization" AlternateText="Save Visualization" OnClientClick="SaveCanvas('tagCloudVis-canvas');return false;" Style="left: 2px; top:3px; position:relative;" runat=server />
于 2013-01-16T17:35:41.200 回答
0

我知道这个线程很旧。但是,如果有人正在寻找这个并且不想使用 html2canvas。这是给你们的解决方案。

         Label: {
            type: 'Native'
        },

在您的 javascript 代码中添加上述内容var st = new $jit.ST({ <here> })

要将其保存为图像,请添加以下代码。

HTML:

<a onclick="getImage(this, 'filename.png', 'tree-id')">download tree</a>

JS:

function getImage(a, filename, id){
 a.link = document.getElementById(id).toDataURL();
 a.download = filename;
}

快乐编码:)

于 2017-01-06T07:36:56.750 回答