Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }