title: Merging multiple docx files to one
body: <p>I am developing a desktop application in C#. I have coded a function to merge multiple docx files but it does not work as expected. I don't get the content exactly as how it was in the source files.</p>
  
  <p>A few blank lines are added in between. The content extends to the next pages, header and footer information is lost, page margins gets changed, etc..
  How can I concatenate docs as it is without and change in it.Any suggestions will be helpful.</p>
  
  <p>This is my code.</p>
  
  <pre><code>    public bool CombineDocx(string[] filesToMerge, string destFilepath)
      {
          Application wordApp = null;
          Document wordDoc = null;
          object outputFile = destFilepath;
          object missing = Type.Missing;
          object pageBreak = WdBreakType.wdPageBreak;
  
          try
          {
              wordApp = new Application { DisplayAlerts = WdAlertLevel.wdAlertsNone, Visible = false };
              wordDoc = wordApp.Documents.Add(ref missing, ref missing, ref missing, ref missing);
  
              Selection selection = wordApp.Selection;
  
              foreach (string file in filesToMerge)
              {
                  selection.InsertFile(file, ref missing, ref missing, ref missing, ref missing);
  
                  selection.InsertBreak(ref pageBreak);
              }
  
              wordDoc.SaveAs( ref outputFile, ref missing, ref missing, ref missing, 
                  ref missing, ref missing, ref missing, ref missing, 
                  ref missing, ref missing, ref missing, ref missing, 
                  ref missing, ref missing, ref missing, ref missing);
  
              return true;
          }
          catch (Exception ex)
          {
              Msg.Log(ex);
              return false;
          }
          finally
          {
              if (wordDoc != null)
              {
                  wordDoc.Close();
              }
  
              if (wordApp != null)
              {
                  wordApp.DisplayAlerts = WdAlertLevel.wdAlertsAll;
                  wordApp.Quit();
                  Marshal.FinalReleaseComObject(wordApp);
              }
          }
      }
  </code></pre>