【问题标题】:MS PowerPoint JavaScript API - insert SVG as shape?MS PowerPoint JavaScript API - 将 SVG 作为形状插入?
【发布时间】:2020-11-21 13:43:48
【问题描述】:

我正在使用Office.context.document.setSelectedDataAsync() 方法和Office.CoercionType.XmlSvg 将复杂对象插入到幻灯片中,效果很好!

唯一需要注意的是,您需要右键单击并“转换为形状”,然后才能在 PowerPoint 中对其进行编辑。是否有某种方法可以将 SVG 对象作为 Shape 插入或使用 JavaScript API 有效地自动执行“转换为 Shape”步骤?

【问题讨论】:

  • 您需要哪些不适用于 SVG 对象的编辑?据我所知,我们可以使用 setSelectedDataAsync 插入 SVG,然后使用 UI 我们可以旋转/调整大小/填充和更改一堆属性。如果您可以与我们分享您对 SVG 不支持的形状的需求,那就太好了。
  • 当然!我的用例是插入整个 PowerPoint 幻灯片的内容 - 沿着插入模板的行 - 然后能够正常编辑它。模板幻灯片之前已转换为 SVG。这很好用,但要能够像在 PowerPoint 中手动创建一样编辑插入的模板/幻灯片/对象的组件,您首先需要将对象转换为形状。

标签: powerpoint office-js


【解决方案1】:

我明白了,感谢您的补充说明,不幸的是,目前 PowerPoint OfficeJS Api 非常薄,虽然它正在积极开发中,但目前还没有其他 API 可以执行“转换为形状”或插入形状。

我不知道您的要求,但是,我可以向您推荐一个新发布的 API,它允许您从 PPTX 文件中插入幻灯片吗?您可以直接插入,而不是转换为 SVG。这目前在公共预览版中可用,您可以在此处找到信息:https://docs.microsoft.com/en-us/javascript/api/powerpoint/powerpoint.presentation?view=powerpoint-js-preview#insertSlidesFromBase64_base64File__options_

可在此处找到预览 API 列表: https://docs.microsoft.com/en-us/office/dev/add-ins/reference/requirement-sets/powerpoint-preview-apis

以下是一些从现有文件中插入幻灯片的示例代码:

    await PowerPoint.run(async function(context) {
      context.presentation.insertSlidesFromBase64( base64EncodedPptxFileAsString );
      context.sync();
    });

    await PowerPoint.run(async function (context) {
      context.presentation.insertSlidesFromBase64( base64EncodedPptxFileAsString,
        {
          formatting: "UseDestinationTheme",
          targetSlideId: "257#",
          sourceSlideIds: ["257#3396654126", "258#"]
        });
      context.sync();
    });

【讨论】:

  • 感谢 Onur! insertSlidesFromBase64 的唯一警告是,除非我弄错了,否则它不能将元素插入/合并到现有幻灯片中。尽管如此,我还是很高兴听到 API 仍在进一步开发中。
  • 这是正确的 joelby,但是将形状+图像/图片插入到现有幻灯片中很快就会出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多