title: C# iTextSharp Merge multiple pdf via byte array
body: <p>I am new to using iTextSharp and working with Pdf files in general, but I think I'm on the right track.  </p>
  
  <p>I iterate through a list of pdf files, convert them to bytes, and push all of the resulting bytes into a byte array.  From there I pass the byte array to concatAndAddContent() to merge all of the pdf's into a single large pdf.  Currently I'm just getting the last pdf in the list (they seem to be overwriting) </p>
  
  <pre><code>public static byte[] concatAndAddContent(List&lt;byte[]&gt; pdfByteContent)
      {
          byte[] allBytes;
  
          using (MemoryStream ms = new MemoryStream())
          {
              Document doc = new Document();
              PdfWriter writer = PdfWriter.GetInstance(doc, ms);
  
              doc.SetPageSize(PageSize.LETTER);
              doc.Open();
              PdfContentByte cb = writer.DirectContent;
              PdfImportedPage page;
  
              PdfReader reader;
              foreach (byte[] p in pdfByteContent)
              {
                  reader = new PdfReader(p);
                  int pages = reader.NumberOfPages;
  
                  // loop over document pages
                  for (int i = 1; i &lt;= pages; i++)
                  {
                      doc.SetPageSize(PageSize.LETTER);
                      doc.NewPage();
                      page = writer.GetImportedPage(reader, i);
                      cb.AddTemplate(page, 0, 0);
  
                  }
              }
  
              doc.Close();
              allBytes = ms.GetBuffer();
              ms.Flush();
              ms.Dispose();
          }
  
          return allBytes;
      }
  </code></pre>
  
  <p>Above is the working code that results in a single pdf being created, and the rest of the files are being ignored.  Any suggestions </p>