예제 #1
0
        static void Main(string[] args)
        {
            //using (var doc = new PdfDocument("TestDoc.pdf", "password"))
            using (var doc = new PdfDocument(@"C:\Users\rafae\Downloads\EN-US-CNTNT-eBook-Build a Competitive Edge With SaaS Apps.pdf"))
            {
                int pageNumber = 0;
                foreach (var page in doc.Pages)
                {
                    using (page)
                    {
                        using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, true))
                            using (var stream = new FileStream($"{pageNumber}.bmp", FileMode.Create))
                            {
                                page.Render(bitmap);
                                bitmap.Save(stream);
                            }

                        using (var text = PdfText.Load(page))
                        {
                            File.WriteAllText($"{pageNumber}.txt", text.GetText());

                            var parts = text.GetSegmentedText();

                            File.WriteAllLines($"{pageNumber}.bti.txt", parts.Select(ti => ti.Text));
                        }
                    }
                    pageNumber++;
                }
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            PdfDocument       document       = new PdfDocument("pdf's/CS 369 REGISTRATION.pdf");
            PdfPageCollection pageCollection = document.Pages;
            PdfPage           page           = pageCollection[0];
            PDFiumBitmap      bitmap         = new PDFiumBitmap(300, 300, true);

            //From my understanding, this renders the PdfPage to the bitmap. The bitmap is simply the target.
            page.Render(bitmap);


            Stream stream = new MemoryStream();

            document.Save(stream);



            /*try{
             *  PdfDocument document = PdfDocument.Load("pdf's/CS 369 REGISTRATION.pdf");
             *  var bitMapImg = document.Render(1, 300, 300, true);
             *  bitMapImg.Save("pdf's", ImageFormat.Png);
             * }catch(FileNotFoundException ex){
             *  Console.WriteLine("File Not Found");
             *
             * }catch(System.BadImageFormatException ex1){
             *  Console.WriteLine("Incorrect Image Format");
             * }*/
        }
예제 #3
0
        public Dictionary <string, byte[]> ExtractImagePages(byte[] pdfContent)
        {
            var pageImages = new Dictionary <string, byte[]>();

            using (var doc = new PdfDocument(pdfContent))
            {
                int i = 0;
                foreach (var page in doc.Pages)
                {
                    using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, false))
                    {
                        bitmap.Fill(new PDFiumSharp.Types.FPDF_COLOR(255, 255, 255));
                        page.Render(bitmap);
                        var bmp = Image.FromStream(bitmap.AsBmpStream());
                        using (var ms = new MemoryStream())
                        {
                            bmp.Save(ms, ImageFormat.Jpeg);
                            pageImages.Add($"{i++.ToString("000")}.jpg", ms.ToArray());
                        }
                    }
                }
            }

            return(pageImages);
        }
예제 #4
0
 static void Main(string[] args)
 {
     using (var doc = new PdfDocument("TestDoc.pdf", "password"))
     {
         var page = doc.Pages[0];
         using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, true))
         {
             page.Render(bitmap);
             bitmap.Save("Page1.bmp");
         }
     }
 }
 public static ImageSource RenderPage(string filename, int pageIndex, string password = null, bool withTransparency = true)
 {
     using (var doc = new PdfDocument(filename, password))
     {
         var page = doc.Pages[pageIndex];
         using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, withTransparency))
         {
             page.Render(bitmap);
             return(new BmpBitmapDecoder(bitmap.AsBmpStream(), BitmapCreateOptions.None, BitmapCacheOption.OnLoad).Frames.First());
         }
     }
 }
예제 #6
0
 public void OnGet()
 {
     // pdf extraction here
     using (var doc = new PdfDocument("c:\\test.pdf"))
     {
         int i = 0;
         foreach (var page in doc.Pages)
         {
             using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, true))
                 using (var stream = new FileStream($"{i++}.bmp", FileMode.Create))
                 {
                     page.Render(bitmap);
                     bitmap.Save(stream);
                 }
         }
     }
 }
예제 #7
0
 static void Main(string[] args)
 {
     using (var doc = new PdfDocument("TestDoc.pdf", "password"))
     {
         int i = 0;
         foreach (var page in doc.Pages)
         {
             using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, true))
                 using (var stream = new FileStream($"{i++}.bmp", FileMode.Create))
                 {
                     page.Render(bitmap);
                     bitmap.Save(stream);
                 }
         }
     }
     Console.ReadKey();
 }
예제 #8
0
 static void Main(string[] args)
 {
     using (var doc = new PdfDocument(@"C:\temp\80d4e54f-8064-4c7f-b924-c196dbe2a087.pdf"))
     {
         var test = doc.InitFormFillEnvironment();
         int i    = 0;
         foreach (var page in doc.Pages)
         {
             using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, true))
                 using (var stream = new FileStream($"{i++}.bmp", FileMode.Create))
                 {
                     page.Render(bitmap);
                     page.RenderForm(test, bitmap);
                     bitmap.Save(stream, 72, 72);
                 }
         }
     }
 }
예제 #9
0
 //Todo clean this up and add support for multiple pages
 public byte[] Test(string filepath)
 {
     using (var doc = new PDFiumSharp.PdfDocument(filepath))
     {
         var page = doc.Pages[0];
         using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, false))
         {
             page.Render(bitmap);
             var b = new BmpBitmapDecoder(bitmap.AsBmpStream(), BitmapCreateOptions.None, BitmapCacheOption.OnLoad).Frames.First();
             JpegBitmapEncoder encoder = new JpegBitmapEncoder();
             encoder.Frames.Add(b);
             using (MemoryStream ms = new MemoryStream())
             {
                 encoder.Save(ms);
                 return(ms.ToArray());
             }
         }
     }
 }
예제 #10
0
        static void Main()
        {
            Application.Initialize();
            Window window = new Window();

            window.Closed += (sender, e) => Application.Exit();

            using (var doc = new PdfDocument("TestDoc.pdf", "password"))
            {
                var page = doc.Pages[0];
                using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, false))
                {
                    page.Render(bitmap, PageOrientations.Normal);
                    bitmap.Save("Page0.bmp");
                    window.Content = new ImageView(Image.FromStream(bitmap.AsBmpStream()));
                }
            }

            window.Show();
            Application.Run();
        }
예제 #11
0
        static void Main(string[] args)
        {
            using (var doc = new PdfDocument("TestDoc.pdf"))
            {
                int i = 0;
                foreach (var page in doc.Pages)
                {
                    using (page)
                    {
                        //var textInfo = page.Text.GetTextInfo(0, page.Text.CountChars);
                        var pageObjects = page.PageObjects;
                        List <PdfPageObject> pageObjs = new List <PdfPageObject>();

                        List <string> str = new List <string>();

                        for (int j = 0, len = pageObjects.Count; j < len; j++)
                        {
                            pageObjs.Add(pageObjects[j]);
                            if (pageObjects[j].ObjectType == PDFiumSharp.Enums.PageObjTypes.Text)
                            {
                                var txtPageObj = (PdfTextObject)pageObjects[j];
                                str.Add(txtPageObj.TextUnicode);
                                var deviceRect = doc.RectangleFromPdf(page, txtPageObj.BoundingBox);
                            }
                        }

                        var rects = page.Text.GetTextInfo(0, page.Text.CountChars).Rects;

                        List <string> fontName  = new List <string>();
                        int           charIndex = 0;

                        /*foreach (var rect in rects)
                         * {
                         *  var txtContent = page.Text.GetBoundedText(rect);
                         *  str.Add( txtContent );
                         *  fontName.Add(page.Text.GetFontNameInfo(charIndex));
                         *
                         *  //var point = page.PageToDevice(0, 0, (int)(rect.Right - rect.Left), (int)(rect.Bottom - rect.Top), rect.Left, rect.Top, page.Orientation);
                         *  var deviceRect = doc.RectangleFromPdf(page, rect);
                         *  charIndex += txtContent.Length;
                         * }*/

                        //var font = page.Text.Font;
                        //textInfo.Rects
                        int width  = (int)(page.Width);
                        int height = (int)(page.Height);

                        float dpiX        = 72f;
                        float dpiY        = 72f;
                        var   thumbWidth  = 800;
                        var   thumbHeight = 800;
                        var   ratio       = 1f;

                        var memStream = new MemoryStream();

                        // Get correct width/height for new DPI
                        var pdfBitmapWidth  = width * (int)dpiX / 72;
                        var pdfBitmapHeight = height * (int)dpiY / 72;
                        try
                        {
                            using (var pdfBitmap = new PDFiumBitmap(pdfBitmapWidth, pdfBitmapHeight, false))
                            {
                                Console.WriteLine("Rendering page " + i.ToString());
                                pdfBitmap.FillRectangle(0, 0, pdfBitmapWidth, pdfBitmapHeight, new PDFiumSharp.Types.FPDF_COLOR(255, 255, 255));
                                page.Render(pdfBitmap, rectDest: (0, 0, pdfBitmapWidth, pdfBitmapHeight), orientation: PDFiumSharp.Enums.PageOrientations.Normal, flags: PDFiumSharp.Enums.RenderingFlags.None);
                                pdfBitmap.Save(memStream);
                            }

                            //memStream.Seek(0, SeekOrigin.Begin);

                            using (var img = Image.FromStream(memStream))
                                using (var bitmap = new Bitmap(img))
                                    using (var fileStream = new FileStream($"{i}.png", FileMode.Create))
                                    {
                                        bitmap.SetResolution(dpiX, dpiY);

                                        bitmap.Save(fileStream, ImageFormat.Png);
                                    }

                            /*ratio = Math.Min((float)thumbWidth / (float)width, (float)thumbHeight / (float)height);
                             *
                             * thumbWidth = (int)(width * ratio);
                             * thumbHeight = (int)(height * ratio);
                             *
                             * var originalImage = Bitmap.FromStream(memStream);
                             * memStream.Dispose();
                             *
                             * using (var thumbImage = new Bitmap(thumbWidth, thumbHeight))
                             * using (var graphics = Graphics.FromImage(thumbImage))
                             * using (var fileStream = new FileStream($"thumb_{i}.png", FileMode.Create))
                             * {
                             *  //graphics.CompositingQuality = CompositingQuality.HighQuality;
                             *  graphics.InterpolationMode = InterpolationMode.HighQualityBilinear;
                             *  //graphics.SmoothingMode = SmoothingMode.HighQuality;
                             *  graphics.DrawImage(originalImage, 0, 0, thumbWidth, thumbHeight);
                             *  graphics.Save();
                             *
                             *  thumbImage.SetResolution(dpiX, dpiY);
                             *  thumbImage.Save(fileStream, ImageFormat.Png);
                             * } */
                        }
                        finally
                        {
                            //memStream.Dispose();
                        }

                        var textInfo = page.Text.GetTextInfo(0, page.Text.CountChars);

                        //Console.WriteLine("==================================================");

                        //Console.WriteLine("Rendering page " + i.ToString());
                        //using (var image = page.Render(width, height, dpiX, dpiY, PDFiumSharp.Enums.RenderingFlags.CorrectFromDpi))
                        //{
                        //   image.Save($"page-{i}.png");
                        //}
                    }
                    i++;
                }
            }
            Console.ReadKey();
        }