在Word API中检测文本的部分字体样式属性

时间:2018-10-16 20:23:26

标签: office-js

是否可以确定Word中范围的部分字体样式?

以下代码示例显示了所选内容的字体样式

$("#test1").click(() => tryCatch(test1));
async function test1() {
  await Word.run(async(context) => {
    console.log('run test1');
    var thisDocument = context.document;
    var range = thisDocument.getSelection();
    range.load('style');
    range.load('font');
    await context.sync();

    console.log(range.font.toJSON());

  });
}

带有控制台输出:

bold 
null 

color 
"#222222" 

doubleStrikeThrough 
false 

highlightColor 
null 

...

如果所选内容包含部分格式,如下所示:

  

lloWor ld

粗体属性显示null。 有没有办法读取部分选择内容或遍历每个字符以确定正确的格式?

1 个答案:

答案 0 :(得分:1)

这很难做到。在有人可以提供更好的答案之前,有一些想法。

任何字符串都必须是范围对象,然后才能阅读其格式。 您可以在文档中搜索字符串,但是没有API可以搜索具有特定格式的字符串。也无法搜索格式更改的地方。

如果可以引用原始字符串的第一个字母作为Range对象,则可以尝试使用Range.getNextTextRange(或Range.getNextTextRangeOrNullObject)来逐步浏览每个字母。该方法的第一个参数采用字符串数组来标记您要查找的“下一个”范围的可能终点。如果将每个字符和每个标点符号都放在该数组中作为字符串,看看会发生什么。如果这将逐步引导您完成每个字母,那么您可以阅读每个范围的格式设置属性。