Esempio n. 1
0
        /**
         * Create an ImageRenderInfo object based on inline image data.  This is nowhere near completely thought through
         * and really just acts as a placeholder.
         * @param ctm the coordinate transformation matrix at the time the image is rendered
         * @param imageObject the image object representing the inline image
         * @return the ImageRenderInfo representing the rendered embedded image
         * @since 5.0.1
         */
        protected internal static ImageRenderInfo CreateForEmbeddedImage(GraphicsState gs, InlineImageInfo inlineImageInfo, PdfDictionary colorSpaceDictionary)
        {
            ImageRenderInfo renderInfo = new ImageRenderInfo(gs, inlineImageInfo, colorSpaceDictionary);

            return(renderInfo);
        }
 public void RenderImage(ImageRenderInfo renderInfo)
 {
 }
Esempio n. 3
0
 /**
  * 
  * @param renderInfo
  * @return true if the image render operation should be performed
  */
 public virtual bool AllowImage(ImageRenderInfo renderInfo){
     return true;
 }
 virtual public void RenderImage(ImageRenderInfo renderInfo)
 {
     deleg.RenderImage(renderInfo);
 }
Esempio n. 5
0
        //*
        //         * no-op method - this renderer isn't interested in image events
        //         * @see com.itextpdf.text.pdf.parser.RenderListener#renderImage(com.itextpdf.text.pdf.parser.ImageRenderInfo)
        //         * @since 5.0.1
        //

        public void RenderImage(ImageRenderInfo renderInfo)
        {
            // do nothing
        }
Esempio n. 6
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image = renderInfo.GetImage();


            var v = PdfName.FILTER;

            //PdfArray array = new PdfArray();
            //array.Add(PdfName.FLATEDECODE);
            //array.Add(PdfName.DCTDECODE);
            //imgStream.put(PdfName.FILTER, array);
            //PdfName filter = (PdfName)image.Get(PdfName.FILTER);
            PdfName filter           = (PdfName)image.Get(PdfName.FIRST);
            int     width            = Convert.ToInt32(image.Get(PdfName.WIDTH).ToString());
            int     bitsPerComponent = Convert.ToInt32(image.Get(PdfName.BITSPERCOMPONENT).ToString());
            string  subtype          = image.Get(PdfName.SUBTYPE).ToString();
            int     height           = Convert.ToInt32(image.Get(PdfName.HEIGHT).ToString());
            int     length           = Convert.ToInt32(image.Get(PdfName.LENGTH).ToString());
            string  colorSpace       = image.Get(PdfName.COLORSPACE).ToString();

            /* It appears to be safe to assume that when filter == null, PdfImageObject
             * does not know how to decode the image to a System.Drawing.Image.
             *
             * Uncomment the code above to verify, but when I've seen this happen,
             * width, height and bits per component all equal zero as well. */
            //if (filter != null)
            //{
            Image drawingImage = image.GetDrawingImage();

            string extension = PdfImageObject.ImageBytesType.JPG.FileExtension;

            //if (filter == PdfName.DCTDECODE)
            //{
            //    extension += PdfImageObject.ImageBytesType.JPG.FileExtension;
            //}
            //else if (filter == PdfName.JPXDECODE)
            //{
            //    extension += PdfImageObject.ImageBytesType.JP2.FileExtension;
            //}
            //else if (filter == PdfName.FLATEDECODE)
            //{
            //    extension += PdfImageObject.ImageBytesType.PNG.FileExtension;
            //}
            //else if (filter == PdfName.LZWDECODE)
            //{
            //    extension += PdfImageObject.ImageBytesType.CCITT.FileExtension;
            //}

            /* Rather than struggle with the image stream and try to figure out how to handle
             * BitMapData scan lines in various formats (like virtually every sample I've found
             * online), use the PdfImageObject.GetDrawingImage() method, which does the work for us. */
            try
            {
                var pages = Program.NumberOfPagesPdf(Program.FilePhth);
                this.Images.Add(drawingImage, extension);
                string filename = @"C:\Images\" + pages + "\\";
                bool   exists   = System.IO.Directory.Exists(filename);
                PdfImageExtractor.increment++;
                if (!exists)
                {
                    System.IO.Directory.CreateDirectory(filename);
                }

                if (PdfImageExtractor.increment <= pages)
                {
                    string       fullName2 = filename + "im" + PdfImageExtractor.increment + ".JPG";
                    byte[]       byteArray = Encoding.UTF8.GetBytes(fullName2);
                    MemoryStream stream    = new MemoryStream();
                    drawingImage.Save(stream, drawingImage.RawFormat);
                    drawingImage.Save(fullName2, ImageFormat.Gif);
                    if (Program.invoice.images1.Any(m => m.ImageName == fullName2))
                    {
                    }
                    else
                    {
                        //sparar bilden till modellen
                        Program.invoice.images1.Add(new Models.Images()
                        {
                            ImageName = fullName2,

                            ImageData = stream.ToArray()
                        });
                    }
                }
            }
            catch (IOException e)
            {
                Console.WriteLine(e);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Converts the Matrix containing the coordinates of an image as stored
        /// in an ImageRenderInfo object into a Rectangle.
        /// </summary>
        /// <param name="imageRenderInfo">Object that contains info about an image</param>
        /// <returns>coordinates in the form of a Rectangle object</returns>
        private static Rectangle GetRectangle(ImageRenderInfo imageRenderInfo)
        {
            Matrix ctm = imageRenderInfo.GetImageCTM();

            return(new Rectangle(ctm[6], ctm[7], ctm[6] + ctm[0], ctm[7] + ctm[4]));
        }
Esempio n. 8
0
 /**
  * Create an ImageRenderInfo object based on inline image data.  This is nowhere near completely thought through
  * and really just acts as a placeholder.
  * @param ctm the coordinate transformation matrix at the time the image is rendered
  * @param imageObject the image object representing the inline image
  * @return the ImageRenderInfo representing the rendered embedded image
  * @since 5.0.1
  */
 protected internal static ImageRenderInfo CreateForEmbeddedImage(Matrix ctm, InlineImageInfo inlineImageInfo, PdfDictionary colorSpaceDictionary) {
     ImageRenderInfo renderInfo = new ImageRenderInfo(ctm, inlineImageInfo, colorSpaceDictionary);
     return renderInfo;
 }
Esempio n. 9
0
 public void RenderImage(ImageRenderInfo renderInfo)
 {
     throw new NotImplementedException();
 }
Esempio n. 10
0
        private bool ExtractImageOLD(String pdfFile, string imgPath, ProgressBar progressBar1)
        {
            bool ret   = true;
            int  imgNo = 1;
//			string pdfFile=@"F:\gheyret\kitablar\Matitey we anarqiz pajiesi.pdf";
//			string imgPath=@"F:\gheyret\kitab_suret\Hazirqi Zaman Uyghur Tili Gramatikisi\";
            string imgname = System.IO.Path.GetFileNameWithoutExtension(pdfFile);

            progressBar1.Visible = true;
            progressBar1.Minimum = 1;
            try{
                PdfDictionary   pg, tg;
                PdfDictionary   res;
                PdfDictionary   xobj;
                PdfImageObject  pdfimage;
                PdfObject       lpdfobjW;
                PdfObject       lpdfobjH;
                ImageRenderInfo imgRI;
                string          width, height;
                int             pageRotation;
                PdfReader       pdfReader = new PdfReader(pdfFile);
                progressBar1.Maximum = pdfReader.NumberOfPages;
                for (int pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++)
                {
//					if(gStop) break;
//					pg = pdfReader.GetPageN(pageNumber);
                    pg           = pdfReader.GetPageNRelease(pageNumber);
                    res          = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
                    xobj         = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
                    imgNo        = 1;
                    pageRotation = pdfReader.GetPageRotation(pageNumber);
                    foreach (PdfName name in xobj.Keys)
                    {
                        PdfObject obj = xobj.Get(name);
                        if (obj.IsIndirect())
                        {
                            tg       = (PdfDictionary)PdfReader.GetPdfObject(obj);
                            lpdfobjW = tg.Get(PdfName.WIDTH);
                            lpdfobjH = tg.Get(PdfName.HEIGHT);
                            if (lpdfobjW != null && lpdfobjH != null)
                            {
                                width  = lpdfobjW.ToString();
                                height = lpdfobjH.ToString();
//								imgRI = ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg);
                                imgRI    = ImageRenderInfo.CreateForXObject(new GraphicsState(), (PRIndirectReference)obj, tg);
                                pdfimage = imgRI.GetImage();
                                ExtractImageOLD(pdfimage, imgPath + "\\" + imgname + pageNumber.ToString("_000") + "_" + imgNo + ".png", pageRotation);
                                imgNo++;
                            }
                        }
                    }
                    progressBar1.Value = pageNumber;
                    Application.DoEvents();
                }
                pdfReader.Close();
            }
            catch (Exception ee) {
//				MessageBox.Show(ee.Message,"Xataliq koruldi");
                System.Diagnostics.Debug.WriteLine(ee.StackTrace);
                ret = false;
            }
            progressBar1.Visible = false;
            return(ret);
        }
Esempio n. 11
0
 internal FilteredImageKey(ImageRenderInfo imageInfo, IList <Rectangle> cleanedAreas)
 {
     this.image        = imageInfo;
     this.cleanedAreas = cleanedAreas;
 }
Esempio n. 12
0
 public void RenderImage(ImageRenderInfo renderInfo) => Buffer.Add(renderInfo.GetImage());
Esempio n. 13
0
 /// <summary>Filter an ImageRenderInfo object</summary>
 /// <param name="image">the ImageRenderInfo object to be filtered</param>
 public virtual PdfCleanUpFilter.FilterResult <ImageData> FilterImage(ImageRenderInfo image)
 {
     return(FilterImage(image, GetImageAreasToBeCleaned(image)));
 }
Esempio n. 14
0
 internal virtual FilteredImagesCache.FilteredImageKey CreateFilteredImageKey(ImageRenderInfo image, PdfDocument
                                                                              document)
 {
     return(FilteredImagesCache.CreateFilteredImageKey(image, GetImageAreasToBeCleaned(image), document));
 }
Esempio n. 15
0
    private bool GetCheckboxState(ImageRenderInfo renderInfo)
    {
        var n = renderInfo.GetRef().Number;

        return(n == 21);                // MagicNumberOfYesCheckboxImage;
    }
 public override bool AllowImage(ImageRenderInfo renderInfo)
 {
     throw new NotImplementedException();
 }
Esempio n. 17
0
 public void RenderImage(ImageRenderInfo renderInfo)
 {
     this.m_CurrentCheckboxBox.CheckboxStates.Add(this.GetCheckboxState(renderInfo));
 }
Esempio n. 18
0
        public void OCRPdf(bool rotate, string docPath, ref Documents doc)
        {
            PdfReader pdfReader = new PdfReader(docPath);
            int       totalPage = pdfReader.NumberOfPages;

            Console.WriteLine("Pdf file {0} contains {1} pages...", docPath, totalPage);
            List <int> pageNos = new List <int>();

            for (int i = 1; i <= totalPage; i++)
            {
                if (!doc.DocBodyDic.ContainsKey(i))
                {
                    pageNos.Add(i);
                }
            }

            foreach (int pageNumber in pageNos)
            {
                try
                {
                    Console.WriteLine("Working on page {0}...", pageNumber);
                    PdfReader     pdf  = new PdfReader(docPath);
                    PdfDictionary pg   = pdf.GetPageN(pageNumber);
                    PdfDictionary res  = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
                    PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
                    foreach (PdfName name in xobj.Keys)
                    {
                        PdfObject obj = xobj.Get(name);

                        if (obj.IsIndirect())
                        {
                            PdfDictionary tg          = (PdfDictionary)PdfReader.GetPdfObject(obj);
                            string        width       = tg.Get(PdfName.WIDTH).ToString();
                            float         widthValue  = float.Parse(width);
                            string        height      = tg.Get(PdfName.HEIGHT).ToString();
                            float         heightValue = -1;
                            bool          isDigit     = float.TryParse(height, out heightValue);
                            heightValue = isDigit ? heightValue : widthValue;

                            if (heightValue < 100 || widthValue < 100)
                            {
                                continue;
                            }

                            ImageRenderInfo imgRI         = ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), heightValue), (PRIndirectReference)obj, tg);
                            PdfImageObject  image         = imgRI.GetImage();
                            string          imageFileName = string.Empty;

                            using (Image dotnetImg = image.GetDrawingImage())
                            {
                                if (dotnetImg != null)
                                {
                                    using (MemoryStream ms = new MemoryStream())
                                    {
                                        dotnetImg.Save(ms, ImageFormat.Jpeg);
                                    }
                                }

                                string ocrFolder = string.Format("{0}\\{1}", this.localDirectory, Path.GetFileNameWithoutExtension(docPath));

                                if (!Directory.Exists(ocrFolder))
                                {
                                    Directory.CreateDirectory(ocrFolder);
                                }

                                imageFileName = string.Format("{0}\\{1}\\Page_{2}.jpg", localDirectory, Path.GetFileNameWithoutExtension(docPath), pageNumber);
                                dotnetImg.Save(imageFileName);
                            }

                            //string text = RunOCRCommand(imageFileName);
                            string text = RetryText(imageFileName);

                            if ((!doc.DocBodyDic.ContainsKey(pageNumber)) && (!string.IsNullOrEmpty(text)))
                            {
                                doc.DocBodyDic.Add(pageNumber, text);
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Yellow;
                                Console.WriteLine("Page {0} could read...", pageNumber);
                                Console.ResetColor();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
            pdfReader.Close();
        }
Esempio n. 19
0
 /// <summary>
 /// Creates an ImageItem based on an ImageRenderInfo object.
 /// </summary>
 /// <param name="imageRenderInfo">Object containing info about an image</param>
 public ImageItem(ImageRenderInfo imageRenderInfo) : base()
 {
     rectangle = GetRectangle(imageRenderInfo);
     color     = IMG_COLOR;
 }
Esempio n. 20
0
 /**
  * @return null if the image is not allowed (either it is fully covered or ctm == null).
  * List of covered image areas otherwise.
  */
 private IList <Rectangle> GetImageAreasToBeCleaned(ImageRenderInfo renderInfo)
 {
     return(filter.GetCoveredAreas(renderInfo));
 }
Esempio n. 21
0
 /**
  *
  * @param renderInfo
  * @return true if the image render operation should be performed
  */
 public virtual bool AllowImage(ImageRenderInfo renderInfo)
 {
     return(true);
 }
Esempio n. 22
0
 /**
  * Create an ImageRenderInfo object based on inline image data.  This is nowhere near completely thought through
  * and really just acts as a placeholder.
  * @param ctm the coordinate transformation matrix at the time the image is rendered
  * @param imageObject the image object representing the inline image
  * @return the ImageRenderInfo representing the rendered embedded image
  * @since 5.0.1
  */
 protected internal static ImageRenderInfo CreateForEmbeddedImage(GraphicsState gs, InlineImageInfo inlineImageInfo, PdfDictionary colorSpaceDictionary)
 {
     ImageRenderInfo renderInfo = new ImageRenderInfo(gs, inlineImageInfo, colorSpaceDictionary);
     return renderInfo;
 }
Esempio n. 23
0
 public virtual void RenderImage(ImageRenderInfo renderInfo)
 {
 }
        //
        // EventListener implementation
        //

        /// <summary><inheritDoc/></summary>
        public void EventOccurred(IEventData data, EventType type)
        {
            switch (type)
            {
            case EventType.RENDER_IMAGE:
            {
                ImageRenderInfo renderInfo = (ImageRenderInfo)data;
                Matrix          ctm        = renderInfo.GetImageCtm();
                float[]         yCoords    = new float[4];
                for (int x = 0; x < 2; x++)
                {
                    for (int y = 0; y < 2; y++)
                    {
                        Vector corner = new Vector(x, y, 1).Cross(ctm);
                        yCoords[2 * x + y] = corner.Get(Vector.I2);
                    }
                }

                Array.Sort(yCoords);
                AddVerticalUseSection(yCoords[0], yCoords[3]);
                break;
            }

            case EventType.RENDER_PATH:
            {
                PathRenderInfo renderInfo = (PathRenderInfo)data;
                if (renderInfo.GetOperation() != PathRenderInfo.NO_OP)
                {
                    Matrix ctm  = renderInfo.GetCtm();
                    Path   path = renderInfo.GetPath();
                    foreach (Subpath subpath in path.GetSubpaths())
                    {
                        List <float> yCoordsList = new List <float>();
                        foreach (Point point2d in subpath.GetPiecewiseLinearApproximation())
                        {
                            Vector vector = new Vector((float)point2d.GetX(), (float)point2d.GetY(), 1);
                            vector = vector.Cross(ctm);
                            yCoordsList.Add(vector.Get(Vector.I2));
                        }

                        if (yCoordsList.Count != 0)
                        {
                            float[] yCoords = yCoordsList.ToArray();
                            Array.Sort(yCoords);
                            AddVerticalUseSection(yCoords[0], yCoords[yCoords.Length - 1]);
                        }
                    }
                }

                break;
            }

            case EventType.RENDER_TEXT:
            {
                TextRenderInfo renderInfo  = (TextRenderInfo)data;
                LineSegment    ascentLine  = renderInfo.GetAscentLine();
                LineSegment    descentLine = renderInfo.GetDescentLine();
                float[]        yCoords     = new float[]
                {
                    ascentLine.GetStartPoint().Get(Vector.I2),
                    ascentLine.GetEndPoint().Get(Vector.I2),
                    descentLine.GetStartPoint().Get(Vector.I2),
                    descentLine.GetEndPoint().Get(Vector.I2)
                };


                Array.Sort(yCoords);
                AddVerticalUseSection(yCoords[0], yCoords[3]);
                break;
            }

            default:
            {
                break;
            }
            }
        }
 /// <see cref="IRenderListener.RenderImage"/>
 public void RenderImage(ImageRenderInfo renderInfo)
 {
     items.Add(new ImageItem(renderInfo));
 }
Esempio n. 26
0
 void IRenderListener.RenderImage(ImageRenderInfo renderInfo)
 {
     Logger.log(MethodBase.GetCurrentMethod());
 }
Esempio n. 27
0
 public void RenderImage(ImageRenderInfo renderInfo)
 {
     this.textextractionstrategy.RenderImage(renderInfo);
 }
Esempio n. 28
0
        /**
         * Create an ImageRenderInfo object based on inline image data.  This is nowhere near completely thought through
         * and really just acts as a placeholder.
         * @param ctm the coordinate transformation matrix at the time the image is rendered
         * @param imageObject the image object representing the inline image
         * @return the ImageRenderInfo representing the rendered embedded image
         * @since 5.0.1
         */
        protected internal static ImageRenderInfo CreateForEmbeddedImage(Matrix ctm, InlineImageInfo inlineImageInfo, PdfDictionary colorSpaceDictionary)
        {
            ImageRenderInfo renderInfo = new ImageRenderInfo(ctm, inlineImageInfo, colorSpaceDictionary);

            return(renderInfo);
        }
 virtual public void RenderImage(ImageRenderInfo renderInfo) {
     deleg.RenderImage(renderInfo);
 }
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image  = renderInfo.GetImage();
            PdfName        filter = (PdfName)image.Get(PdfName.FILTER);

            //int width = Convert.ToInt32(image.Get(PdfName.WIDTH).ToString());
            //int bitsPerComponent = Convert.ToInt32(image.Get(PdfName.BITSPERCOMPONENT).ToString());
            //string subtype = image.Get(PdfName.SUBTYPE).ToString();
            //int height = Convert.ToInt32(image.Get(PdfName.HEIGHT).ToString());
            //int length = Convert.ToInt32(image.Get(PdfName.LENGTH).ToString());
            //string colorSpace = image.Get(PdfName.COLORSPACE).ToString();

            /* It appears to be safe to assume that when filter == null, PdfImageObject
             * does not know how to decode the image to a System.Drawing.Image.
             *
             * Uncomment the code above to verify, but when I’ve seen this happen,
             * width, height and bits per component all equal zero as well. */
            if (filter != null)
            {
                Matrix matrix = renderInfo.GetImageCTM();
                System.Drawing.Image drawingImage = image.GetDrawingImage();

                string extension = ".";
                float  x         = matrix[Matrix.I31];
                float  y         = matrix[Matrix.I32];
                float  w         = matrix[Matrix.I11];
                float  h         = matrix[Matrix.I22];

                if (filter == PdfName.DCTDECODE)
                {
                    extension += PdfImageObject.ImageBytesType.JPG.FileExtension;
                }
                else if (filter == PdfName.JPXDECODE)
                {
                    extension += PdfImageObject.ImageBytesType.JP2.FileExtension;
                }
                else if (filter == PdfName.FLATEDECODE)
                {
                    extension += PdfImageObject.ImageBytesType.PNG.FileExtension;
                }
                else if (filter == PdfName.LZWDECODE)
                {
                    extension += PdfImageObject.ImageBytesType.CCITT.FileExtension;
                }


                /* Rather than struggle with the image stream and try to figure out how to handle
                 * BitMapData scan lines in various formats (like virtually every sample I’ve found
                 * online), use the PdfImageObject.GetDrawingImage() method, which does the work for us. */
                //this.Images.Add(drawingImage, extension);
                images.Add(new PdfImage()
                {
                    X            = x,
                    Y            = y,
                    Width        = w,
                    Height       = h,
                    DrawingImage = drawingImage,
                    Extension    = extension
                });
            }
        }