Office js 在officejs中插入svg

Office js 在officejs中插入svg,office-js,officedev,Office Js,Officedev,背景 我正在开发一个Office插件,使用Word Javascript API在文档中插入一些图表 我目前的做法如下: 在任务窗格中生成SVG图像=>使用canvg在画布上绘制图像=>将画布图像获取为png=>插入Word文档 这可以很好地工作,除了一件事-png图像本身是模糊的,并且由于转换有相当多的质量损失 问题 是否可以将Body.insertInlinePictureFromBase64与矢量图形图像一起使用 一些注意事项: 尝试将图像作为纯XML插入-无效 尝试将svg字符串编码为

背景

我正在开发一个Office插件,使用Word Javascript API在文档中插入一些图表

我目前的做法如下:
在任务窗格中生成SVG图像=>使用canvg在画布上绘制图像=>将画布图像获取为png=>插入Word文档

这可以很好地工作,除了一件事-png图像本身是模糊的,并且由于转换有相当多的质量损失

问题
是否可以将Body.insertInlinePictureFromBase64与矢量图形图像一起使用

一些注意事项:

  • 尝试将图像作为纯XML插入-无效
  • 尝试将svg字符串编码为base64并通过 要插入的insertInlinePicture方法-无法使其工作,只是显示了一个损坏的图像 (可能是因为它需要实际的位图图像,而不是 矢量图像)
Todor- 好问题。问题是Office不支持矢量文件格式。事实上,如果您试图直接从Word中的insert->pictures功能插入一个*.svg图像,您将看到图像不会像预期的那样插入。例如,Word Online也是如此

我建议您尝试jpg、jpeg、png、gif、bmp、tif或tiff格式

谢谢!
Juan.

下面是一个如何将SVG内容插入word文档的示例:

相关代码段:

const svgImage = '<svg><rect x="0" y="0" height="50" width="50" style="stroke:#ff0000; fill:#0000ff" /></svg>';

Office.context.document.setSelectedDataAsync(svgImage, { coercionType: Office.CoercionType.XmlSvg, imageLeft: 220, imageTop: 220, imageWidth: 100 }, function(result) {
     console.log(result);
});
const svgImage='';
Office.context.document.setSelectedDataAsync(svgImage,{强制类型:Office.强制类型.XmlSvg,imageLeft:220,imageTop:220,imageWidth:100},函数(结果){
控制台日志(结果);
});
注:

Word将忽略imageLeft和imageTop,请参阅

致以最良好的祝愿,
拉希德

Todor你是来构建2017的吗?遗憾的是没有——尽管我确实看到了ScriptLabs演示版,但它看起来相当不错。我还一直在关注office js github repo,以了解我需要的功能office现在支持SVG:是的,我们的待办事项是在API中添加对它的支持。还没有具体的日期。感谢您的关注。插入SVG文件,还是能够编写自定义SVG代码?我肯定希望能够插入由JS或类似的东西呈现的自定义SVG。想象一下,您可以使用
标记制作自定义图标/图表,这些标记可以从Excel的
单元格中更新,其思想是您可以编写SVG,然后将其插入或替换文档中的现有对象。@JuanBalmori此后有何进展?我想用C++ COM API将SVG插入Word文档中。我找不到像下面提到的
setSelectedDataAsync
这样的函数,InsertFile()和InsertXML()也没有帮助。用常规的COM API而不是JS加载项API可以做到这一点吗?