gpt4 book ai didi

javascript - 通过 Word API 获取当前段落的样式/字体(字体大小、颜色等)

转载 作者:行者123 更新时间:2023-11-29 20:59:24 25 4
gpt4 key购买 nike

我正在开发一个 word 网络插件,它涉及将一些文本(如 OOXML)插入到 word 文档中。

插入功能工作正常,但我希望插入的文本与用户当前正在编辑的区域具有相同的字体大小和颜色等。

通过像这样将当前段落置于光标处,我已经在某种程度上实现了这一点:

Word.run((context) => {
var pars = context.document.getSelection().paragraphs;
pars.load();

return context.sync().then(() => {
var par = pars.items[0];
var font = par.font.load();
var style = par.style;

// Do stuff with the style & font...
});
});

然而,这似乎不可靠,有时不起作用。

我想获取当前键入位置的样式,或者以某种方式直接从功能区中的值中读取它们:

enter image description here

有什么好的方法吗?这似乎是 Word 加载项中非常常见的用例。

最佳答案

paragraph不会是可靠的范围,因为它可以很容易地包含使用多种字体和大小的内容。您还只检索了第一段,更多 可能具有不同的属性(即标题)。

要获取要插入 OOXML 的确切位置的字体信息,您需要使用 document.getSelection()返回 range目的。这将让您获取光标所在位置的当前字体:

return Word.run(function (context) {
var range = context.document.getSelection();
range.load('font');

return context.sync()
.then(function () {
console.log("Font: " + range.font.name);
console.log("Size: " + range.font.size);
});
});

请注意,如果用户的选择包含多种字体,这将为 font 返回一个 null。要解决这个问题,您可以使用 getRange("start")range 重新调整到该部分的开头。 :

return Word.run(function (context) {
var range = context.document.getSelection();
range = range.getRange("start");
range.load('font');

return context.sync()
.then(function () {
console.log("Font: " + range.font.name);
console.log("Size: " + range.font.size);
});
});

关于javascript - 通过 Word API 获取当前段落的样式/字体(字体大小、颜色等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47355649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com