Aspose.Word怎么获取所有段落及其段落编号,怎么获取标题及其标题对应的内容
@ouchli 请参阅我们的文档以了解有关 Aspose.Words 文档对象模型的更多信息:
https://docs.aspose.com/words/java/aspose-words-document-object-model/
您可以使用以下代码获取段落及其索引:
Document doc = new Document("C:\\Temp\\in.docx");
// Get paragraphs.
NodeCollection paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);
for (Paragraph p : (Iterable<Paragraph>)paragraphs)
{
// Get index of the paragraph.
int paraIndex = paragraphs.indexOf(p);
// Check whether paragraph is heading.
if (p.getParagraphFormat().isHeading())
{
// get text of the heading paragraph.
System.out.println(p.toString(SaveFormat.TEXT).trim());
}
}
谢谢,怎么获取标题及其标题对应的内容呢?这个没找到
如图,根据标题获取标题的内容
比如根据 一级标题 介绍 获取 到的内容 为
根据 二级标题 目的 获取的内容为 你是谁
您上一段代码只有 标题 和标题的索引,没有标题所包含的内容哦
@ouchli You can modify code to print content of other paragraphs, other then headings:
Document doc = new Document("C:\\Temp\\in.docx");
// Get paragraphs.
NodeCollection paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);
for (Paragraph p : (Iterable<Paragraph>)paragraphs)
{
// Get index of the paragraph.
int paraIndex = paragraphs.indexOf(p);
// Check whether paragraph is heading.
if (p.getParagraphFormat().isHeading())
System.out.println(p.toString(SaveFormat.TEXT).trim());
// get text of the paragraph.
System.out.println("\t"+p.toString(SaveFormat.TEXT).trim());
}
getSize得到的大小不是 二号,而是一个double类型的字号, 我怎么直接获取 二号 这个字号呢
@ouchli 感谢您提供更多信息。 Aspose.Words 返回的值是正确的。 看起来你在MS Word中看到的是中文版MS Word中显示字体大小的特定方式。 如果检查所附文档,可以看到该段落应用了样式 2:
<w:p>
<w:pPr>
<w:pStyle w:val="2"/>
<w:bidi w:val="0"/>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:lang w:val="en-US" w:eastAsia="zh-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
<w:lang w:val="en-US" w:eastAsia="zh-CN"/>
</w:rPr>
<w:t>标题1</w:t>
</w:r>
<w:bookmarkStart w:id="0" w:name="_GoBack"/>
<w:bookmarkEnd w:id="0"/>
</w:p>
如果检查此样式,字体大小似乎为 Aspose.Words 返回的 44 半点或 22 点:
<w:style w:type="paragraph" w:styleId="2">
<w:name w:val="heading 1"/>
<w:basedOn w:val="1"/>
<w:next w:val="1"/>
<w:qFormat/>
<w:uiPriority w:val="9"/>
<w:pPr>
<w:keepNext/>
<w:keepLines/>
<w:spacing w:before="340" w:beforeLines="0" w:beforeAutospacing="0" w:after="330" w:afterLines="0" w:afterAutospacing="0" w:line="576" w:lineRule="auto"/>
<w:outlineLvl w:val="0"/>
</w:pPr>
<w:rPr>
<w:b/>
<w:kern w:val="44"/>
<w:sz w:val="44"/>
</w:rPr>
</w:style>
不好意思有点没看懂您说的意思,那我怎么能转换为我想要的返回呢 二号
请问我想获取标题前面的编号如何获取
如图红框中的编号
@jeremyliu 您可以使用 Style.getBuiltIn:
Document doc = new Document("input.docx");
NodeCollection paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);
for (Paragraph p : (Iterable<Paragraph>)paragraphs)
{
Style style = p.getParagraphFormat().getStyle();
if (!style.getBuiltIn())
{
//做点什么
}
}