使用Office.js更改ContentControl内部的对齐方式

时间:2018-05-23 19:50:38

标签: javascript ms-word office-js

我有以下代码:

Word.run(context => {
  var range = context.document.getSelection();
  var cc = range.insertContentControl();
  var ccRange = cc.insertHtml(myContent, 'replace');
  // ...

工作正常。如果我将文档对齐设置为Justified,则新ContentControl内的内容也将为Justified。我知道用户可以简单地选择内容并更改对齐,但我需要默认将其设置为Left

我知道如何处理字体以确保它遵循与文档相同的样式,为此我有这个代码紧跟上面的代码:

  // ...
  context.load(range, 'font');
  context.load(ccRange, 'font');

  context.sync().then(() => {
    ccRange.font.color = range.font.color;
    ccRange.font.highlightColor = range.font.highlightColor;
    ccRange.font.name = range.font.name;
    ccRange.font.size = range.font.size;
    // ...

基于这个例子,我想有一种类似的方法可以改变ContentControl中的对齐方式,但到目前为止我都失败了。

如果我理解正确,ContentControl具有paragraphs属性,并且单个段落具有alignment属性,因此我猜测这是我需要的,但我的几次尝试在访问它时没有产生任何结果(例如context.load(cc, 'paragraphs');,然后在上下文同步后访问该属性)。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我发现它更容易'#34;加载"变量而不是上下文但两种方式都有效。

您加载'paragraphs'就像使用'font'一样。您也可以使用'paragraphs, font'同时加载它们,以使事情变得更简单。

例如,此代码将插入ContentControl,插入一些HTML内容并将alignment设置为'centered'

return Word.run(function (context) {
    let range = context.document.getSelection();
    let cc = range.insertContentControl();
    let ccRange = cc.insertHtml('<b>Hello World</b>', 'Replace');

    ccRange.load('font, paragraphs');
    return context.sync().then(() => {
        ccRange.paragraphs.items[0].alignment = 'Centered';
        return context.sync();
    });
});