iText7 Create PDF in memory instead of physical file

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? I tried the following code, but pdfSM is not properly populated:

string filePath = "./abc.pdf"; MemoryStream pdfSM = new ByteArrayOutputStream(); PdfDocument doc = new PdfDocument(new PdfReader(filePath), new PdfWriter(pdfSM)); . doc.close(); 

The full testing code as below for your reference, it worked when past filePath into PdfWriter but not for the memory stream:

 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(); >