我正在使用JavaScript InfoVis Toolkit(http://thejit.org/)并尝试使用canvas.toDataURL("image/png")
打印扩展的空间树可视化。虽然这适用于我的ForceDirected图形 - 在SpaceTree中,我们将标签放在单独的DIV中,因此当我打印图像时,我得到一个空白图形。
有谁知道如何打印标签?任何帮助将不胜感激。我附上了图表的手动屏幕截图和打印时获得的图像。
是的 - 我确实看到了问题here - 但它没有回答我的问题,因为我们无法使用“原生”标签,因为我们会做一些动态造型。
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>
手动屏幕截图 空白打印图像
答案 0 :(得分:1)
我使用html2canvas插件解决了这个问题。基本上,html2canvas将创建一个div元素(带有子元素)的新画布,然后转换为带有myCanvas.toDataURL("image/png")
的png图像文件。此图片将包含您的HTML标签。 (请注意,html2canvas可能无法正确处理标签的CSS属性。)
html2canvas(document.getElementById("diagram-container"), {
onrendered: function(canvas) {
var img = canvas.toDataURL();
document.write('<img src="'+img+'"/>');
}
});
答案 1 :(得分: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 />
答案 2 :(得分: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;
}
快乐编码:)