Jointjs 图到 pdf 显示鼠标悬停 link svg 也
Jointjs diagram to pdf showing mouseover link svg also
我正在使用 jspdf 和 canvas 将使用 Jointjs 库制作的图表导出为 pdf:
下面是我的 javascript 代码::
var svg = document.querySelector('svg');
var serializer = new XMLSerializer();
var svgString = serializer.serializeToString(svg);
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
context.fillStyle = '#FFFF';
canvg(canvas, svgString);
var imgData = canvas.toDataURL('image/png');
// Generate PDF
doc.setFontSize(10);
doc.text(35, 25, "Google Cloud Craft");
doc.addImage(imgData, 'PNG', 10, 50);
doc.save('test.pdf');
我在 canvas 下载后得到的结果是:
我想要的是那些黑色箭头标记不应该出现,因为它们在鼠标悬停事件中显示,应该像下图一样供参考:
请告诉我如何实现。
让我试着回答。
添加以下代码以在序列化之前隐藏鼠标悬停元素
$(".marker-arrowhead").css("display", "none");
$(".tool-remove").css("display", "none");
$(".tool-options").css("display", "none");
$(".marker-vertices").css("display", "none");
希望对您有所帮助。
我找到了一个解决方案分享,这样如果有人遇到这个问题可以得到帮助。
这就是解决方法,熟悉jointjs的就明白了。
link.attr({
'.marker-arrowheads': {
fill: 'none'
},
'.connection-wrap': {
fill: 'none'
},
'.marker-vertices': {
fill: 'none'
},
'.link-tools': {
fill: 'none'
}
});
这是我的建议:)
const classes = ['.marker-vertices', '.link-tools'];
const svg = this.paper.svg.cloneNode(true);
// remove tools
classes.forEach(c => {
const elements = svg.querySelectorAll(c);
elements.forEach(el => { el.style.display = 'none'; });
});
我正在使用 jspdf 和 canvas 将使用 Jointjs 库制作的图表导出为 pdf: 下面是我的 javascript 代码::
var svg = document.querySelector('svg');
var serializer = new XMLSerializer();
var svgString = serializer.serializeToString(svg);
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
context.fillStyle = '#FFFF';
canvg(canvas, svgString);
var imgData = canvas.toDataURL('image/png');
// Generate PDF
doc.setFontSize(10);
doc.text(35, 25, "Google Cloud Craft");
doc.addImage(imgData, 'PNG', 10, 50);
doc.save('test.pdf');
我在 canvas 下载后得到的结果是:
我想要的是那些黑色箭头标记不应该出现,因为它们在鼠标悬停事件中显示,应该像下图一样供参考:
请告诉我如何实现。
让我试着回答。
添加以下代码以在序列化之前隐藏鼠标悬停元素
$(".marker-arrowhead").css("display", "none");
$(".tool-remove").css("display", "none");
$(".tool-options").css("display", "none");
$(".marker-vertices").css("display", "none");
希望对您有所帮助。
我找到了一个解决方案分享,这样如果有人遇到这个问题可以得到帮助。
这就是解决方法,熟悉jointjs的就明白了。
link.attr({
'.marker-arrowheads': {
fill: 'none'
},
'.connection-wrap': {
fill: 'none'
},
'.marker-vertices': {
fill: 'none'
},
'.link-tools': {
fill: 'none'
}
});
这是我的建议:)
const classes = ['.marker-vertices', '.link-tools'];
const svg = this.paper.svg.cloneNode(true);
// remove tools
classes.forEach(c => {
const elements = svg.querySelectorAll(c);
elements.forEach(el => { el.style.display = 'none'; });
});