Я использую приведенный ниже код для объединения нескольких документов.Но после слияния я вижу некоторые проблемы в объединенном документе.
public static void MergeDocuments(List<string> documentPaths, string outputFile)
{
if (System.IO.File.Exists(outputFile))
System.IO.File.Delete(outputFile);
string firstDoc = documentPaths.First();
System.IO.File.Copy(firstDoc, outputFile);
documentPaths.RemoveAt(0);
using (WordprocessingDocument myDoc = WordprocessingDocument.Open(outputFile, true))
{
foreach (var documentPath in documentPaths)
{
string altChunkId = string.Format("AltChunkId{0}", Guid.NewGuid().ToString());
MainDocumentPart mainPart = myDoc.MainDocumentPart;
AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (FileStream fileStream = File.Open(documentPath, FileMode.Open))
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
Paragraph para = new Paragraph(new Run((new Break() { Type = BreakValues.Page })));
mainPart.Document.Body.InsertAfter(para, mainPart.Document.Body.LastChild);
mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.LastChild);
mainPart.Document.Save();
}
}
}
Во втором объединяемом документе возникают проблемы с межстрочным интервалом в объединенном документе.Это добавляет дополнительное пространство после каждого из абзацев.Даже строки в таблице также получают место после них.Если вы любезно просмотрите документы, вы заметите проблемы.
Я загрузил 3 документа в учетную запись onedrive.
Документ 1: https://1drv.ms/w/s!AmifSn8Lhbgbg24v61BIYPjJvTt-
Документ 2:https://1drv.ms/w/s!AmifSn8Lhbgbg2wv61BIYPjJvTt-
Объединено: https://1drv.ms/w/s!AmifSn8Lhbgbg20v61BIYPjJvTt-
Я объединила "Doc 1.docx" и "Doc 2.docx".Вывод merged.docx.Вы можете запустить приведенный ниже код, чтобы объединить их.
static void Main()
{
var list = new List<string>();
list.Add(@"C:\temp\doc 1.docx");
list.Add(@"C:\temp\doc 2.docx");
string output = @"C:\temp\merged.docx";
MergeDocuments(list, output);
}
Любая помощь по решению проблем будет высоко оценена.Заранее спасибо.