2

背景

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

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

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

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

一些注意事项:

  • 尝试将图像作为纯 XML 插入 - 无效
  • 尝试将 svg 字符串编码为 base64 并通过 insertInlinePicture 方法将其传递以插入 - 无法让它工作只是显示损坏的图像(可能是因为它需要实际的位图图像而不是矢量图像)
4

2 回答 2

1

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

https://gist.github.com/barisbikmaz/73526f81e1425845fc199506ff871429

相关代码片段:

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);
});

笔记:

Word 忽略 imageLeft 和 imageTop,请参阅https://docs.microsoft.com/en-us/javascript/api/office/office.document?view=office-js

最好的问候,拉希德

于 2019-03-17T13:51:19.927 回答
1

Todor - 好问题。问题是 Office 不支持矢量文件格式。事实上,如果您尝试直接从 Word 中的插入->图片功能插入 *.svg 图像,您会看到图像不会按预期插入。例如,Word Online 也是如此。

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

谢谢!胡安。

于 2016-09-23T00:09:28.263 回答