title: iText7 Create PDF in memory instead of physical file
body: <p>How do one create PDF in memorystream instead of physical file using itext7?
  I have no idea how to do it in the latest version, any help?</p>
  
  <p>I tried the following code, but pdfSM is not properly populated:</p>
  
  <pre><code>string filePath = "./abc.pdf";
  
  MemoryStream pdfSM = new ByteArrayOutputStream();
  
  PdfDocument doc = new PdfDocument(new PdfReader(filePath), new PdfWriter(pdfSM));
  .......
  
  doc.close();
  </code></pre>
  
  <p>The full testing code as below for your reference, it worked when past filePath into PdfWriter but not for the memory stream:</p>
  
  <pre><code>    public static readonly String sourceFolder = "../../FormTest/";
  
      public static readonly String destinationFolder = "../../Output/";
  
      static void Main(string[] args)
      {
  
          String srcFilePattern = "I-983";
          String destPattern = "I-129_2014_";
  
          String src = sourceFolder + srcFilePattern + ".pdf";
          String dest = destinationFolder + destPattern + "_flattened.pdf";
          MemoryStream returnSM = new MemoryStream();
  
          PdfDocument doc = new PdfDocument(new PdfReader(src), new PdfWriter(returnSM));
  
          PdfAcroForm form = PdfAcroForm.GetAcroForm(doc, false);
  
          foreach (PdfFormField field in form.GetFormFields().Values) 
          {
              var fieldName = field.GetFieldName();
              var type = field.GetType();
              if (fieldName != null)
              {
                  if (type.Name.Equals("PdfTextFormField"))
                  {
                          field.SetValue("T");
                  }
              }               
          }
          form.FlattenFields();         
          doc.Close();
  
      }
  </code></pre>