public void GeneratePDF(ReceivedLetter receivedLetter) { MemoryStream stream = null; if (receivedLetter.ReceiveLetterFiles != null && receivedLetter.ReceiveLetterFiles.Count > 0) { //Render Letter Content With Files Aspose.Pdf.Document contentPdf = new Aspose.Pdf.Document(); foreach (var file in receivedLetter.ReceiveLetterFiles) { if (file.File.ContentType.Contains("image")) { Aspose.Pdf.Page page = contentPdf.Pages.Add(); Bitmap b = new Bitmap(new MemoryStream(file.File.Content)); page.PageInfo.Width = b.Width; page.PageInfo.Height = b.Height; // Set margins so image will fit, etc. page.PageInfo.Margin.Bottom = 0; page.PageInfo.Margin.Top = 0; page.PageInfo.Margin.Left = 0; page.PageInfo.Margin.Right = 0; page.CropBox = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height); Aspose.Pdf.Image image1 = new Aspose.Pdf.Image(); // Add the image into paragraphs collection of the section page.Paragraphs.Add(image1); // Set the image file stream image1.ImageStream = new MemoryStream(file.File.Content); } else if (file.File.ContentType.Contains("pdf")) { //Append pdf to appendages Aspose.Pdf.Document thisPDF = new Aspose.Pdf.Document(new MemoryStream(file.File.Content)); contentPdf.Pages.Add(thisPDF.Pages); } else if (file.File.ContentType.Contains("word")) { //Convert to pdf first Document thisDoc = new Document(new MemoryStream(file.File.Content)); MemoryStream temp = new MemoryStream(); thisDoc.Save(temp, SaveFormat.Pdf); //Second append it to appendages Aspose.Pdf.Document thisPDF = new Aspose.Pdf.Document(temp); contentPdf.Pages.Add(thisPDF.Pages); } } stream = new MemoryStream(); contentPdf.Save(stream); receivedLetter.LetterFileContent = stream.ToArray(); } else { receivedLetter.LetterFileContent = new byte[0]; } //Debug //Aspose.Pdf.Document letterFile = new Aspose.Pdf.Document(stream); //letterFile.Save(Server.MapPath("~/LetterOnly.pdf")); //Save letter with Appendage if (receivedLetter.Appendages != null && receivedLetter.Appendages.Count > 0) { Aspose.Pdf.Document appendagePdf = new Aspose.Pdf.Document(); foreach (var file in receivedLetter.Appendages) { if (file.File.ContentType.Contains("image")) { Page page = appendagePdf.Pages.Add(); Bitmap b = new Bitmap(new MemoryStream(file.File.Content)); page.PageInfo.Width = b.Width; page.PageInfo.Height = b.Height; // Set margins so image will fit, etc. page.PageInfo.Margin.Bottom = 0; page.PageInfo.Margin.Top = 0; page.PageInfo.Margin.Left = 0; page.PageInfo.Margin.Right = 0; page.CropBox = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height); Aspose.Pdf.Image image1 = new Aspose.Pdf.Image(); // Add the image into paragraphs collection of the section page.Paragraphs.Add(image1); // Set the image file stream image1.ImageStream = new MemoryStream(file.File.Content); } else if (file.File.ContentType.Contains("pdf")) { //Append pdf to appendages Aspose.Pdf.Document thisPDF = new Aspose.Pdf.Document(new MemoryStream(file.File.Content)); appendagePdf.Pages.Add(thisPDF.Pages); } else if (file.File.ContentType.Contains("word")) { //Convert to pdf first Document thisDoc = new Document(new MemoryStream(file.File.Content)); MemoryStream temp = new MemoryStream(); thisDoc.Save(temp, SaveFormat.Pdf); //Second append it to appendages Aspose.Pdf.Document thisPDF = new Aspose.Pdf.Document(temp); appendagePdf.Pages.Add(thisPDF.Pages); } } //Return PDF from letter if (stream != null && receivedLetter.LetterFileContent.Length > 0) { Aspose.Pdf.Document letterPdf = new Aspose.Pdf.Document(stream); stream = new MemoryStream(); appendagePdf.Save(stream); receivedLetter.AppendageContent = stream.ToArray(); //Debug //appendagePdf.Save(Server.MapPath("~/AppendagesOnly.pdf")); letterPdf.Pages.Add(appendagePdf.Pages); stream = new MemoryStream(); letterPdf.Save(stream); //Debug //letterPdf.Save(Server.MapPath("~/letterWithAppendages.pdf")); receivedLetter.LetterFileAppendageContent = stream.ToArray(); } else { stream = new MemoryStream(); appendagePdf.Save(stream); receivedLetter.AppendageContent = stream.ToArray(); receivedLetter.LetterFileAppendageContent = stream.ToArray(); } } else { receivedLetter.LetterFileAppendageContent = new byte[0]; receivedLetter.AppendageContent = new byte[0]; } }