Aspose Words:尝试将每个节点从源docx复制到目标docx

时间:2017-02-17 15:02:49

标签: paragraph aspose.words

我试图读取源word文档中的每个节点,然后尝试根据newDocument对象中的某些条件合并两个段落。

在这种情况下,我发现它的字体显示时间12但目的地的大小似乎更大,因此会出现不必要的分页符。

分别附上源代码以及源文档和目标文档供您参考。

在目标文档的第2页中,您可以看到空白页面,因为源文档和目标文档中字体的呈现分别增加。

2 个答案:

答案 0 :(得分:0)

Aspose.Words模仿与MS Word相同的行为。您正在文档中添加新页面类型的分节符。如果更改了文档的字体大小,分节符的位置可能会移动到下一页(第3页)。在这种情况下,空白页面将出现在输出文档中。

我们建议您使用Aspose.Words for Java 17.2.0的最新版本,并用连续替换分节符新页面。希望这对你有所帮助。我和Aspose一起担任开发人员传道人。

答案 1 :(得分:0)

请注意,格式化适用于几个不同的级别。例如,让我们考虑简单文本的格式。文档中的文本由Run元素表示,Run只能是Paragraph的子元素。您可以应用格式

1)使用字符样式运行节点,例如一个标志符号样式

2)到那些Run节点的父节点,即Paragraph节点(可能通过段落样式

3)您还可以使用“运行”属性(字体)将直接格式应用于运行节点。在这种情况下,Run将继承Paragraph Style的格式,字形样式,然后直接格式化。

输入文档中没有样式。请使用MS Word将输入文档的文本复制到新的空文档中并检查输出。输出与输入不同。

您正面临此行为,因为输入文档中没有样式。文本的样式是" RAUTRP + TimesNewRoman"," GUUSPV + TimesNewRoman,Italic"。这些样式应存在于文档中以获得正确的输出。

如果您想在输出文档中使用正确的字体名称,请根据您的要求应用字体格式。使用正确的字体名称或样式后,将解决分页问题。

此外,您的文档在每个部分的末尾都包含分页符。我们建议您使用以下方法删除分页符。

private static void RemovePageBreaks(Document doc) {
    // Retrieve all paragraphs in the document.
    NodeCollection paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);

    // Iterate through all paragraphs
    for (Paragraph para : (Iterable<Paragraph>) paragraphs) {
        {
            // Check all runs in the paragraph for page breaks and remove them.
            for (Run run : para.getRuns()) {
                if (run.getText().contains(ControlChar.PAGE_BREAK))
                    run.setText(run.getText().replace(ControlChar.PAGE_BREAK, ""));
            }
        }
    }
}