我正在使用以下代码合并多个文档。但是,合并后,我在合并的文档中看到了一些问题。
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();
}
}
}
我合并的第二个文档在合并的文档中存在一些异常的行距问题。它在每个段落之后增加了额外的空间。甚至表中的行也在它们之后留有空间。如果您仔细地查看文档,您会发现问题所在。
我已经在onedrive帐户中上传了3个文档。
文档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);
}
任何解决问题的帮助将不胜感激。 预先感谢。