我在使用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);
我忘记补充了,附件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.