我正在尝试使用Word add-in Javascript API来打印文档中列表的级别和样式类型。
我使用了以下代码:
Word.run(function (context) {
var range = context.document.getSelection();
var paragraphs = context.document.body.paragraphs.load("items");
var lists = [];
return context.sync()
.then(function () {
for (var i = 0; i < paragraphs.items.length; i++) {
if (paragraphs.items[i].isListItem) {
lists.push(paragraphs.items[i].listItem.load(['level', 'listString']));
}
}
})
.then(context.sync)
.then(function () {
for (var i = 0; i < lists.length; i++) {
range.insertText(lists[i].level.toString(), "End");
}
}).then(context.sync)
})这正确地给出了列表的级别,但listString给出的是列表编号,而不是它的类型,即对于1. This is a list item,它将返回1.。我尝试在Word.List类中使用levelTypes,但它只返回数字、项目符号或图片。我想要特定的类型,如“罗马”|“阿拉伯语”|“字母”|“实心”|“空心”等...
有API setLevelBullet和setLevelNumbering可以设置这些值,但找不到任何允许读取的API。
我尝试将其转换为OOXML,但它也没有给出所使用的列表样式的类型。
我可以使用pypandoc库在python中做到这一点。它将文档转换为HTML,然后我可以解析ul和ol标记来查找它们的类型。在Word插件中有什么方法可以做到这一点吗?
谢谢!
发布于 2019-12-09 05:21:26
这两个Word对象模型(COM或JavaScript)都不提供此信息。Word不是超文本标记语言,也不会从ol/ul的角度“思考”--所有列表都只是(9级)列表,每一级都有一组特定的字符(或者没有)作为段落的“前缀”。
有必要编写自己的代码来分析listString,或者使用执行此操作的库。可能基于Unicode值。
发布于 2020-04-29 14:50:38
我尝试将其转换为OOXML,但它也没有给出所使用的列表样式的类型。
OOXML提供了您需要的所有信息。Document.xml在标记为listItem的段落中包含listId。它引用了numbering xml文件,该文件包含特定列表上的信息及其在每个级别上的格式。ListId:s指向编号文件末尾的抽象块,它指向实际的格式定义。
不是100%确定你能不能用段落styleId指出格式。
https://stackoverflow.com/questions/59234022
复制相似问题