我试图读取源word文档中的每个节点,然后尝试根据newDocument对象中的某些条件合并两个段落。
在这种情况下,我发现它的字体显示时间12但目的地的大小似乎更大,因此会出现不必要的分页符。
分别附上源代码以及源文档和目标文档供您参考。
在目标文档的第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, ""));
}
}
}
}