在MS Word外接Javascript API中获取列表样式类型

问题描述 投票:0回答:1

我正在尝试使用Word外接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.。我尝试在levelTypes类中使用Word.List,但它仅返回数字,项目符号或图片。我想要特定的类型,例如“罗马” | “阿拉伯语” | “字母” | “实心” | “空心”等...

有API setLevelBulletsetLevelNumbering来设置这些值,但找不到任何允许读取的值。

我尝试将其转换为OOXML,但它也没有提供所使用的列表样式的类型。

我能够使用pypandoc库在python中执行此操作。它将文档转换为HTML,然后我可以解析ul和ol标记以查找其类型。 Word加载项中有某种方法可以做到这一点吗?

谢谢!

javascript ms-word office-js word-addins word-web-addins
1个回答
0
投票

两个Word对象模型(COM或JavaScript)都不提供此信息。 Word不是HTML,也不用ol / ul来“思考”-所有列表都是(9级)列表,每个级别都有一组特定的字符(或没有)作为“前缀”段落。

有必要编写自己的代码来分析listString,或使用执行此操作的库。可能基于Unicode值。

© www.soinside.com 2019 - 2024. All rights reserved.