public static byte[] Tif2PDF(byte[] fileBuffer) { Aspose.Pdf.Document doc = new Aspose.Pdf.Document(); // Add a page to pages collection of document MemoryStream mystream = new MemoryStream(fileBuffer); Image tiffImage = Image.FromStream(mystream); int frameCount = tiffImage.GetFrameCount(FrameDimension.Page); MemoryStream[] images = new MemoryStream[frameCount]; Guid objGuid = tiffImage.FrameDimensionsList[0]; FrameDimension objDimension = new FrameDimension(objGuid); for (int i = 0; i < frameCount; i++) { tiffImage.SelectActiveFrame(objDimension, i); using (MemoryStream ms = new MemoryStream()) { tiffImage.Save(ms, ImageFormat.Bmp); Aspose.Pdf.Page page = doc.Pages.Add(); Bitmap b = new Bitmap(ms); page.Resources.Images.Add(ms); page.PageInfo.Margin.Bottom = 0; page.PageInfo.Margin.Top = 0; page.PageInfo.Margin.Left = 0; page.PageInfo.Margin.Right = 0; page.SetPageSize(b.Width, b.Height); // Using GSave operator: this operator saves current graphics state page.Contents.Add(new Aspose.Pdf.Operator.GSave()); // Create Rectangle and Matrix objects Aspose.Pdf.Rectangle rectangle = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height); Aspose.Pdf.DOM.Matrix matrix = new Aspose.Pdf.DOM.Matrix(new double[] { rectangle.URX - rectangle.LLX, 0, 0, rectangle.URY - rectangle.LLY, rectangle.LLX, rectangle.LLY }); // Using ConcatenateMatrix (concatenate matrix) operator: defines how image must be placed page.Contents.Add(new Aspose.Pdf.Operator.ConcatenateMatrix(matrix)); Aspose.Pdf.XImage ximage = page.Resources.Images[page.Resources.Images.Count]; // Using Do operator: this operator draws image page.Contents.Add(new Aspose.Pdf.Operator.Do(ximage.Name)); // Using GRestore operator: this operator restores graphics state page.Contents.Add(new Aspose.Pdf.Operator.GRestore()); } } var pdfStream = new MemoryStream(); doc.Save(pdfStream); // Close memoryStream object var buffer = pdfStream.ToArray(); pdfStream.Close(); mystream.Close(); return(buffer); }
public static byte[] Img2PDF(byte[] fileBuffer) { Aspose.Pdf.Document doc = new Aspose.Pdf.Document(); // Add a page to pages collection of document Aspose.Pdf.Page page = doc.Pages.Add(); MemoryStream mystream = new MemoryStream(fileBuffer); // Instantiate BitMap object with loaded image stream Bitmap b = new Bitmap(mystream); // 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.SetPageSize(b.Width, b.Height); //page.CropBox = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height); page.Resources.Images.Add(mystream); // Using GSave operator: this operator saves current graphics state page.Contents.Add(new Aspose.Pdf.Operator.GSave()); // Create Rectangle and Matrix objects Aspose.Pdf.Rectangle rectangle = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height); Aspose.Pdf.DOM.Matrix matrix = new Aspose.Pdf.DOM.Matrix(new double[] { rectangle.URX - rectangle.LLX, 0, 0, rectangle.URY - rectangle.LLY, rectangle.LLX, rectangle.LLY }); // Using ConcatenateMatrix (concatenate matrix) operator: defines how image must be placed page.Contents.Add(new Aspose.Pdf.Operator.ConcatenateMatrix(matrix)); Aspose.Pdf.XImage ximage = page.Resources.Images[page.Resources.Images.Count]; // Using Do operator: this operator draws image page.Contents.Add(new Aspose.Pdf.Operator.Do(ximage.Name)); // Using GRestore operator: this operator restores graphics state page.Contents.Add(new Aspose.Pdf.Operator.GRestore()); var pdfStream = new MemoryStream(); doc.Save(pdfStream); // Close memoryStream object var buffer = pdfStream.ToArray(); pdfStream.Close(); mystream.Close(); return(buffer); }