问题1 :如何删除doc文件中的超链接,或者在遍历段落的时候不生成乱码( REF _Ref469933876 \r \h * MERGEFORMAT 6.1.)
问题2:在遍历Iterable paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true)时,为什么会遍历到表格数据,并且会生成乱码。
如何在遍历段落时跳过表格,或者在遍历之前删除所有表格
- 您可以使用以下代码来取消链接超链接:
Document doc = new Document("C:\\Temp\\in.docx");
// Get the table.
Table t = doc.getFirstSection().getBody().getTables().get(0);
// Unlink hyperlinks.
for (Field f : t.getRange().getFields())
{
if (f.getType() == FieldType.FIELD_HYPERLINK)
f.unlink();
}
doc.save("C:\\Temp\\out.docx");
- 表格中的内容也用段落表示。 请参阅我们的文档以了解有关 Aspose.Words 文档对象模型的更多信息:
https://docs.aspose.com/words/java/aspose-words-document-object-model/
您可以使用以下代码在循环段落时跳过表格:
Document doc = new Document("C:\\Temp\\in.docx");
// Get all paragraphs int he document.
Iterable<Paragraph> paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);
for (Paragraph p : paragraphs)
{
// Check whether paragraph is in table.
if (p.getAncestor(NodeType.TABLE) != null)
continue;
// Process paragraphs that are not in the table.
}
在遍历时遇到超链接字段依然会生成乱码
另外,应该如何在遍历时跳过目录呢
@sunhale 您看到的丢失字形是字段字符:字段开始、分隔符和结束。 您很可能正在使用 Node.GetText 方法。 请尝试使用 Node.ToString 方法并传递 SaveFormat.Text。
不幸的是,目前还不太清楚你的意思。 您能否详细说明您的要求并提供我们的输入文档和预期输出。