Aspose.words的合并和拆分文档问题

我在使用aspose.words合并文档的时候,发现合并后的文档内容会丢失,比如我的1-10这几个文档里面都是有图片的,但是合并到一个word以后,里面会有几页的图片丢失;另外我想问一下,aspose.words拆分文档的时候,一个文档假设为16页,我逐页拆分后,拆分出来的文件,比如第16页,正常来说这里页码应该是1的,因为这个文档只有1页,但是用aspose拆分以后,这里还是16,是要加什么参数来更新吗?

这是关于合并文档的样例文件,分页里面是我要合并的文档,合并.docx文件是我用aspose.words将分页里面的文件合并起来的最终文件:
Save.zip (552.0 KB)

合并文档的代码,我是这么写的,importmode我都试过了,只有keepsource效果最好:

            Aspose.Words.Document MergeDocument = new Aspose.Words.Document();

            //设置Docx保存参数
            Aspose.Words.Saving.OoxmlSaveOptions TempDocxSaveOption = new Aspose.Words.Saving.OoxmlSaveOptions()
            {
                Compliance = Aspose.Words.Saving.OoxmlCompliance.Iso29500_2008_Transitional,
                SaveFormat = Aspose.Words.SaveFormat.Docx,
                KeepLegacyControlChars = true,
                UpdateFields = true,
            };

            DocumentsFileNames.ForEach(
                DocumentName =>
                {
                    Aspose.Words.Document LoadTempDocument = new Aspose.Words.Document(DocumentName);
                    
                    MergeDocument.AppendDocument(LoadTempDocument, Aspose.Words.ImportFormatMode.KeepSourceFormatting);
                });

            MergeDocument.FirstSection.Remove();
            MergeDocument.Save(SavedDocumentFileName);

@jidesheng,

  1. 能否附上合并后图片丢失问题的截图? 我在 合并.docx 中看不到任何缺失的图片。
  2. 要更新页码可以使用 Document.UpdatePageLayout()

我忘记补充了,附件doc合并的文档和分页文档中,文档内的文字 “测评类型: A”在源文档中是通过空格调整靠右的,但是合并以后的文档和源文档的排版方式是不一样的,包括下方说明中的图片(圈内画了一个勾的图片)

doc合并的文档和分页文档.zip (496.4 KB)

图片丢失说明中说明了分页的001测评人文档中的图片(圈内画了一个勾的图片),在合并.docx文档中,这个图片消失了(圈内画了一个勾的图片)。

图片丢失的说明.zip (126.0 KB)

我在代码中使用了UpdatePageLayout,但是还是没有更新页码,依然是按照原来的,第一个文档就是第1页,第二个文档就是第2页这样子

                    Aspose.Words.Document TempSplitDocument = TempDocument.ExtractPages(range_start - 1, range_end);
                    TempSplitDocument.CompatibilityOptions.OptimizeFor(Aspose.Words.Settings.MsWordVersion.Word2010);
                    TempSplitDocument.CompatibilityOptions.BalanceSingleByteDoubleByteWidth = true;
                    TempSplitDocument.UpdateFields();
                    TempSplitDocument.UpdatePageLayout();
                    TempSplitDocument.Save(SavedFileName, TempSaveOption);

这个附件是我是用的拆分文档和上述代码拆分后的文档附件。

拆分word(带页码).zip (100.3 KB)

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

Issue ID(s): WORDSNET-26420  形状缺失问题
Issue ID(s): WORDSNET-26421 空格问题

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

关于页码问题,您可以通过在 PageLayoutUpdate() 之前将 PageStartingNumber 设置为 1 来解决:

TempSplitDocument.FirstSection.PageSetup.PageStartingNumber = 1;
TempSplitDocument.UpdatePageLayout();

@jidesheng 我们已完成对问题 - WORDSNET-26421 Blanks 的分析。出现该问题的原因是文档是由旧版本的 blank.doc (Word2003) 创建的,这导致了兼容性问题。您可以使用以下代码片段解决此问题:

Document dest = new Document();
Document src = new Document("001.docx");
dest.AppendDocument(src, ImportFormatMode.KeepSourceFormatting);
dest.FirstSection.Remove();
dest.Save("out.docx");

LoadOptions lo = new LoadOptions();
lo.LanguagePreferences.DefaultEditingLanguage = EditingLanguage.ChinesePRC;
dest = new Document("out.docx", lo);
dest.CompatibilityOptions.BalanceSingleByteDoubleByteWidth = true;
dest.Save("out.docx");

但是我尝试了如上代码,文档中还是会有图片丢失的问题,空格问题应该是你们之前说过words不支持两端对齐的原因,所以那个空格我使用右对齐方式就可以解决,但是合并以后文档中的图片会丢失就不知道什么原因了,或许你们可以尝试把说明里面那个图片(一个圆圈里面画了勾);另存为本地图片以后重新插入,再合并试试。

@jidesheng 请注意,这只是我上面写的一个空间问题 (WORDSNET-26421) 的变通方法。图像问题将在今后的版本中得到解决。

@jidesheng WORDSNET-26420(形状缺失问题)将在下一版本中提供,但要获得理想的输出结果,您应在保存前为 "Word2003 "优化文档:

Document mergeDocument = new Document();

var documentsFileNames = Directory.EnumerateFiles("pages");

foreach (var documentName in documentsFileNames)
{
    Document tempDocument = new Document(documentName);
    mergeDocument.AppendDocument(tempDocument, ImportFormatMode.KeepSourceFormatting);
}

mergeDocument.FirstSection.Remove();

// Add this line to get desired output.
mergeDocument.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2003);
mergeDocument.Save("merged.docx");

The issues you have found earlier (filed as WORDSNET-26420) have been fixed in this Aspose.Words for .NET 24.3 update also available on NuGet.

The issues you have found earlier (filed as WORDSNET-26421) have been fixed in this Aspose.Words for .NET 24.5 update also available on NuGet.