请问怎么给文档中的 段落 添加标签列表

第二个列表的起始编号如何设置?

@ouchli 您可以使用 ListLevel.StartAt 属性。

请问如何让实心圆圈直径变大一点呢

@ouchli 您可以增加列表标签字体大小。 列表标签使用段落的字体,因此增加段落分隔符字体大小。

怎么不改变段落分隔符,而使实心圆圈增大。请问.setNumberFormat(“\uF0B7”),还有别的更大的实心圆圈格式吗

@ouchli 您可以使用 Wingdings \u006c 符号:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.getListFormat().applyBulletDefault();
builder.getListFormat().getListLevel().getFont().setName("Wingdings");
builder.getListFormat().getListLevel().setNumberFormat("\u006c");
builder.write("List item with big circle");
doc.save("C:\\Temp\\out.docx");

out.docx (8.0 KB)

PS:我会将您的主题移至Aspose中文支持论坛类别。

原始文档:文字文稿4.docx (21.3 KB)

NodeCollection<Paragraph> childNodes = document.getFirstSection().getBody().getChildNodes(NodeType.PARAGRAPH, false);
            Paragraph paragraph = (Paragraph) childNodes.get(0);
            ListLevel listLevel = paragraph.getListFormat().getListLevel();
            listLevel.setNumberStyle(NumberStyle.LOWERCASE_LETTER);
            listLevel.setNumberFormat("\0)");
            listLevel.setTrailingCharacter(ListTrailingCharacter.TAB);

            Paragraph paragraph2 = (Paragraph) childNodes.get(2);
            ListLevel listLevel1 = paragraph2.getListFormat().getListLevel();
            listLevel1.setNumberStyle(NumberStyle.ARABIC);
            listLevel1.setNumberFormat("\0)");
            listLevel1.setTrailingCharacter(ListTrailingCharacter.TAB);

结果文档:
列项测试结果.docx (20.1 KB)
image.png (3.9 KB)

得到的结果为什么会是 这样呢?

@ouchli 因为只有一个列表适用于你的段落,所以你不需要为每个段落获取列表。

Document doc = new Document("input.docx");

NodeCollection<Paragraph> childNodes = doc.getFirstSection().getBody().getChildNodes(NodeType.PARAGRAPH, false);
Paragraph paragraph = (Paragraph) childNodes.get(0);
List list = paragraph.getListFormat().getList();
ListLevel listLevel = list.getListLevels().get(0);
listLevel.setNumberStyle(NumberStyle.LOWERCASE_LETTER);
listLevel.setNumberFormat("\0)");
listLevel.setTrailingCharacter(ListTrailingCharacter.TAB);

ListLevel listLevel1 = list.getListLevels().get(1);
listLevel1.setNumberStyle(NumberStyle.ARABIC);
listLevel1.setNumberFormat("\u0001)");
listLevel1.setTrailingCharacter(ListTrailingCharacter.TAB);

doc.save("output.docx");

此外,每个级别都需要使用自己的数字格式。

请问如何判断一个段落有换行呢

@ouchli 您可以使用 “ControlChar” 进行检查。

listLevel.setNumberStyle(NumberStyle.ARABIC);
listLevel.setNumberFormat("\u0001)");
listLevel.setNumberFormat("\0)");

请问这两种编号样式有什么区别呢?
原始文档:文字文稿4.docx (15.1 KB)

如原始文档中 有两种列项形式, 使用上述两种编号样式结果不同。
请问那种编号样式可以让文档中的两种形式所得到的编号都为 1) 2) …

@ouchli 这是占位符 \x0000 至 \x0008,代表相应列表级别的数字。使用此代码即可获得结果:

Document doc = new Document("input (4).docx");

NodeCollection<Paragraph> childNodes = doc.getChildNodes(NodeType.PARAGRAPH, true);
for (Paragraph childNode : childNodes)
{
    ListFormat listFormat = childNode.getListFormat();
    boolean listItem = listFormat.isListItem();
    if (listItem && !childNode.getParagraphFormat().isHeading())
    {
        ListLevel listLevel = childNode.getListFormat().getListLevel();
        listLevel.setNumberStyle(NumberStyle.ARABIC);
        if (childNode.getListFormat().getListLevelNumber() == 1)
            listLevel.setNumberFormat("\u0001)");
        else
            listLevel.setNumberFormat("\0)");
        continue;
    }
}

doc.save("out.docx");