是否可以确定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
。
有没有办法读取部分选择内容或遍历每个字符以确定正确的格式?
答案 0 :(得分:1)
这很难做到。在有人可以提供更好的答案之前,有一些想法。
任何字符串都必须是范围对象,然后才能阅读其格式。 您可以在文档中搜索字符串,但是没有API可以搜索具有特定格式的字符串。也无法搜索格式更改的地方。
如果可以引用原始字符串的第一个字母作为Range对象,则可以尝试使用Range.getNextTextRange(或Range.getNextTextRangeOrNullObject)来逐步浏览每个字母。该方法的第一个参数采用字符串数组来标记您要查找的“下一个”范围的可能终点。如果将每个字符和每个标点符号都放在该数组中作为字符串,看看会发生什么。如果这将逐步引导您完成每个字母,那么您可以阅读每个范围的格式设置属性。