Javascript “无法提取”;基数64“;从使用foreignobject在画布中绘制的svg

Javascript “无法提取”;基数64“;从使用foreignobject在画布中绘制的svg,javascript,html,svg,canvas,Javascript,Html,Svg,Canvas,我正在使用svg对npm进行映像并获取画布上下文包。 不使用foreignobject,我可以将画布提取到png图像。但主要问题是我需要svg中的foreignObject来满足要求 var svgToImage = require('svg-to-image') var getContext = require('get-canvas-context') // set up a new Canvas2D var context = getContext('2d', { width:

我正在使用svg对npm进行映像并获取画布上下文包。 不使用foreignobject,我可以将画布提取到png图像。但主要问题是我需要svg中的foreignObject来满足要求

var svgToImage = require('svg-to-image')
var getContext = require('get-canvas-context')

// set up a new Canvas2D
var context = getContext('2d', {
    width: 200, height: 200
})

var data = `<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<style>
div {
    color: white;
    font: 18px serif;
    height: 100%;
    overflow: auto;
}
</style>

<polygon points="5,5 195,10 185,185 10,195" />


<foreignObject x="20" y="20" width="160" height="160">

<div xmlns="http://www.w3.org/1999/xhtml">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Sed mollis mollis mi ut ultricies. Nullam magna ipsum,
porta vel dui convallis, rutrum imperdiet eros. Aliquam
erat volutpat.
</div>
</foreignObject>
</svg>`;

var View = svgToImage(data, function (err, image) {
    if (err) throw err

  // draw image to canvas
context.drawImage(image, 0, 0)

  // append to DOM
  var canvas = context.canvas
  window.a=document.body.appendChild(context.canvas)
// console.log(a.toDataURL('image/png'))
  // open a PNG image the user can Right Click -> Save As
  window.open(context.canvas.toDataURL('image/png'))
})

export default View;
var svgToImage=require('svg-to-image'))
var getContext=require('get-canvas-context'))
//建立一个新的画布
var context=getContext('2d'{
宽:200,高:200
})
风险值数据=`
div{
颜色:白色;
字体:18px衬线;
身高:100%;
溢出:自动;
}
Lorem ipsum dolor sit amet,是一位杰出的献身者。
这是一种特殊的软体动物。大同侧,
康瓦利斯之门,帝王之路。等分
埃拉特·帕特。
`;
var View=svgToImage(数据、函数(错误、图像){
如果(错误)抛出错误
//在画布上绘制图像
context.drawImage(图像,0,0)
//附加到DOM
var canvas=context.canvas
window.a=document.body.appendChild(context.canvas)
//log(a.toDataURL('image/png'))
//打开PNG图像,用户可以右键单击->另存为
window.open(context.canvas.toDataURL('image/png'))
})
导出默认视图;

您正在客户端使用“svg到img”包。 在服务器端(节点)使用相同的包


您正在客户端使用“svg到img”包。 在服务器端(节点)使用相同的包


到底是什么问题?您在这里发布的代码是svg到图像库示例代码的稍微修改版本。如果您只是复制粘贴的代码,但它不起作用,那么您可能正在不支持foreignObject的浏览器上进行测试,如示例代码下面所述。如果这就是问题所在,您能不能用SVG中的等价物替换所有HTML节点,
?到底是什么问题?您在这里发布的代码是svg到图像库示例代码的稍微修改版本。如果您只是复制粘贴的代码,但它不起作用,那么您可能正在不支持foreignObject的浏览器上进行测试,如示例代码下面所述。如果这就是问题所在,您能不能用SVG中的等价物替换所有HTML节点,
const svgToImg = require("svg-to-img");

svgToImg.from(svg).toPng({ width: dimension[0]/2, height: dimension[1]/2 })