Aspose word for Java 22.11合并Word文档出现文本丢失

示例文档见压缩包
(合并前:文档21_50_469095886164037.docx和文档21_50_469096335282245.docx;

合并后:out2.docx)—— 报错 出现文本丢失,错误结果见demo.docx文档中的截图

Ps: 有两种情况我们测试了发现能够正常显示

1、将文档21_50_469096335282245.docx中页脚修改后,再合并两个Word文档,文本显示正常,
2、将21_50_469096335282245.docx修改后文件命名21_50_469096335282246.docx,再合并两个文档,输出结果out.docx,文本显示正常。
annex.zip (1.8 MB)

@SupportDhorde 感谢您报告此问题。 我们已经在我们的内部问题跟踪系统中打开了以下新工单,并将根据 免费支持政策 中提到的条款提供它们的修复:

Issue ID(s): WORDSNET-26625

如果您需要优先支持以及直接联系我们的付费支持管理团队,您可以获得 付费支持服务

补充说明下,压缩文件里有问题的文本框边框边距都是0,我是后面才发现这问题的。我的目的是想是合并前文件是啥样,合并后能一模一样。
supplement.docx (77.3 KB)

@SalesDhorde 感谢您的发现。主要问题出在阅读 21_50_469096335282245.docx 中,因为其中包含一些没有特定参数的 VML 图形。如果只是在第一页的表格内添加一个字母并保存文档,Word 会重新计算文档并为形状添加参数。

没有特定参数的 VML 图形这个意思是否是指边距为0的文本框,这种是否能保留原来的参数直接合并文件,虽然可能某些原因word重新计算文档,但从效果上来看原有文档的文本框内容会看不到。目前这个问题我用了其他办法把合并后结果再次处理了,看能否有官方的做法能更好的解决该问题

@SalesDhorde Aspose.words 使用默认值读取内部页边距,而不是 0。我们可以在分析创建的问题后为您提供更多信息。

作为一种变通方法,您可以尝试使用以下代码。

Document doc = new Document("21_50_469096335282245.docx");
NodeCollection textBoxShapes = doc.GetChildNodes(NodeType.Shape, true);
foreach (Shape textBoxShape in textBoxShapes)
{
    TextBox textBox = textBoxShape.TextBox;                
    textBox.InternalMarginTop = 1;
    textBox.InternalMarginBottom = 1;
    textBox.InternalMarginLeft = 1;
    textBox.InternalMarginRight = 1;
    textBox.FitShapeToText = true;
}

@SalesDhorde 为了更清楚,请使用

Document firstDoc = new Document("21_50_469095886164037.docx");
Document secondDoc = new Document("21_50_469096335282245.docx");
NodeCollection textBoxShapes = secondDoc.getChildNodes(NodeType.SHAPE, true);
for (Shape textBoxShape : (Iterable<Shape>) textBoxShapes)
{
    TextBox textBox = textBoxShape.getTextBox();
    textBox.setInternalMarginTop(1);
    textBox.setInternalMarginBottom(1);
    textBox.setInternalMarginLeft(1);
    textBox.setInternalMarginRight(1);
    textBox.setFitShapeToText(true);
}
secondDoc.save("Updated.docx");
secondDoc = new Document("Updated.docx");
firstDoc.appendDocument(secondDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
firstDoc.save("Merged.docx");

The issues you have found earlier (filed as WORDSNET-26625) have been fixed in this Aspose.Words for Java 24.4 update.