Canvas 画布将SVG转换为PNG不';我买不到全尺寸的
我有大约200个大SVG图像(公司组织结构图>50个部门)。示例信息如下:Canvas 画布将SVG转换为PNG不';我买不到全尺寸的,canvas,svg,d3.js,Canvas,Svg,D3.js,我有大约200个大SVG图像(公司组织结构图>50个部门)。示例信息如下: SVGRect {height: 270, width: 1600, y: 0, x: -150} 我想导出的图像大小取决于SVG的大小。这是我导出时的代码 export_svg: function () { var html = d3.select("svg") .attr("version", '1.1') .attr("xml
SVGRect {height: 270, width: 1600, y: 0, x: -150}
我想导出的图像大小取决于SVG的大小。这是我导出时的代码
export_svg: function () {
var html = d3.select("svg")
.attr("version", '1.1')
.attr("xmlns", "http://www.w3.org/2000/svg")
.node().parentNode.innerHTML
var imgsrc = 'data:image/svg+xml;base64,' + btoa(html)
var canvas = document.querySelector("canvas"),
context = canvas.getContext("2d")
// clear cache previous
canvas.width = $('svg')[0].getBBox().width
canvas.height = $('svg')[0].getBBox().height
context.clearRect(0, 0, canvas.width, canvas.height);
var image = new Image
image.src = imgsrc
context.drawImage(image, 0, 0)
var canvasdata = canvas.toDataURL("image/png", 1)
d3.select("#export_svg").attr('href', canvasdata)
d3.select("#export_svg").attr('download', 'Org Chart.png')
},
SVG的协调器与此相关吗
当我导出到PNG时,它无法获得组织结构图的完整大小
您可能需要更改上下文;到context.drawImage(image,0,0,canvas.width,canvas.height);) 您正在使用调用
元素上的getBBox()
返回的宽度和高度。这不一定与渲染SVG的宽度和高度相同。这两个坐标系不一定具有相同的比例。即使是这样,您也需要考虑BBox的x
和y
组件。忽略坐标,只获取svg并转换为画布怎么样?有可能吗?没有。你需要把它渲染到画布上。尝试将SVG宽度和高度设置为与画布相同的大小。