【发布时间】:2010-12-01 15:02:32
【问题描述】:
我使用下面提到的链接中的代码将word文件合并为一个文件
但是,看到输出文件后,我意识到它无法在第一个文档中复制标题图像。我们如何合并保留格式和内容的文档。
【问题讨论】:
我使用下面提到的链接中的代码将word文件合并为一个文件
但是,看到输出文件后,我意识到它无法在第一个文档中复制标题图像。我们如何合并保留格式和内容的文档。
【问题讨论】:
我建议使用GroupDocs.Merger Cloud 将多个word 文档合并为一个word 文档,它保留了源文档的格式和内容。它是一个独立于平台的 REST API 解决方案,不依赖任何第三方工具或软件。
示例 C# 代码:
var configuration = new GroupDocs.Merger.Cloud.Sdk.Client.Configuration(MyAppSid, MyAppKey);
var apiInstance_Document = new GroupDocs.Merger.Cloud.Sdk.Api.DocumentApi(configuration);
var apiInstance_File = new GroupDocs.Merger.Cloud.Sdk.Api.FileApi(configuration);
var pathToSourceFiles = @"C:/Temp/input/";
var remoteFolder = "Temp/";
var joinItem_list = new List<JoinItem>();
try
{
DirectoryInfo dir = new DirectoryInfo(pathToSourceFiles);
System.IO.FileInfo[] files = dir.GetFiles();
foreach (System.IO.FileInfo file in files)
{
var request_upload = new GroupDocs.Merger.Cloud.Sdk.Model.Requests.UploadFileRequest(remoteFolder + file.Name, File.Open(file.FullName, FileMode.Open));
var response_upload = apiInstance_File.UploadFile(request_upload);
var item = new JoinItem
{
FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
{ FilePath = remoteFolder + file.Name }
};
joinItem_list.Add(item);
}
var options = new JoinOptions
{
JoinItems = joinItem_list,
OutputPath = remoteFolder + "Merged_Document.docx"
};
var request = new JoinRequest(options);
var response = apiInstance_Document.Join(request);
Console.WriteLine("Output file path: " + response.Path);
}
catch (Exception e)
{
Console.WriteLine("Exception while Merging Documents: " + e.Message);
}
【讨论】:
该代码在每个文件后插入一个分页符。
由于节控制标题,如果第二个或后续文档有标题,您可能希望保留原始节属性,并在第一个文档之后插入这些属性。
如果您将原始文档视为 docx,您可能会看到您的部分是文档级别的部分属性元素。
解决您的问题的最简单方法可能是在最后一段(包含标题信息)内创建第二个部分属性元素。然后,当文档合并时(即在其后添加的其他段落),它应该只保留在那里。
这就是理论。另见http://www.pcreview.co.uk/forums/thread-898133.php 但我还没有尝试过;它假定 InsertFile 的行为符合我的预期。
【讨论】: