示例#1
0
            public void RenderImage(ImageRenderInfo renderInfo)
            {
                PdfImageObject image = null;                 // renderInfo.GetImage();

                try
                {
                    image = renderInfo.GetImage();
                    if (image == null)
                    {
                        return;
                    }

                    ImageNames.Add(string.Format(
                                       "Image{0}.{1}", renderInfo.GetRef().Number, image.GetFileType()
                                       ));
                    using (MemoryStream ms = new MemoryStream(image.GetImageAsBytes()))
                    {
                        Images.Add(ms.ToArray());
                    }
                }
                catch (Exception ie)
                {
                    /*
                     * pass-through; image type not supported by iText[Sharp]; e.g. jbig2
                     */
                    WFLogger.NLogger.ErrorException("ERROR: RenderImage failed!", ie);
                }
            }
示例#2
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image = renderInfo.GetImage();

            try
            {
                image = renderInfo.GetImage();
                if (image == null)
                {
                    return;
                }

                ImageNames.Add(string.Format(
                                   "Image{0}.{1}", renderInfo.GetRef().Number, image.GetFileType()
                                   ));
                using (MemoryStream ms = new MemoryStream(image.GetImageAsBytes()))
                {
                    Images.Add(ms.ToArray());
                }
            }
            catch (IOException ex)
            {
                throw ex;
            }
        }
示例#3
0
        private string GetStreamType(PdfObject obj)
        {
            if (obj == null)
            {
                return("unknown");
            }

            if (obj.IsStream())
            {
                var stream = (PRStream)obj;
                try
                {
                    var pdfImage     = new PdfImageObject(stream);
                    var drawingImage = pdfImage.GetDrawingImage();
                    if (pdfImage != null)
                    {
                        return($"{drawingImage.Width}x{drawingImage.Height} {pdfImage.GetFileType()} Image");
                    }
                }
                catch (Exception ex)
                {
                    var sb = new StringBuilder();
                    foreach (var item in stream.Keys)
                    {
                        var streamKeyValue = stream.Get(item);
                        sb.Append(item + ":" + streamKeyValue + "  ");
                    }
                    return(sb.ToString());
                }
            }


            return(string.Empty);
        }
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image = null;

            try
            {
                image = renderInfo.GetImage();
                if (image == null)
                {
                    return;
                }

                ImageNames.Add(string.Format(
                                   "qrcode.{0}", image.GetFileType()
                                   ));
                using (MemoryStream ms = new MemoryStream(image.GetImageAsBytes()))
                {
                    Images.Add(ms.ToArray());
                }
            }
            catch (IOException ie)
            {
                throw ie;
            }
        }
示例#5
0
// ---------------------------------------------------------------------------

        /**
         * @see com.itextpdf.text.pdf.parser.RenderListener#renderImage(
         *     com.itextpdf.text.pdf.parser.ImageRenderInfo)
         */
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            try {
                PdfImageObject image = renderInfo.GetImage();
                if (image == null

/*
 * do not attempt to parse => jbig2 decoder not fully implemented.
 * THE JAVA EXAMPLE INCORRECTLY CREATES A CORRUPT JBIG2 IMAGE
 * BECAUSE THERE IS NO EXPLICIT CHECK. I POSTED TWICE TO THE MAILING
 * LIST, SINCE VERSION 5.1.3 BUT THE ERROR HAS NOT BEEN CORRECTED.
 */
                    || image.GetImageBytesType() == PdfImageObject.ImageBytesType.JBIG2
                    )
                {
                    return;
                }

                _imageNames.Add(string.Format(
                                    "Image{0}.{1}",
                                    renderInfo.GetRef().Number, image.GetFileType()
                                    ));
                _myImages.Add(image.GetImageAsBytes());
            }
            catch {
// pass through any other unsupported image types
            }
        }
示例#6
0
        private ImgFileType _GetFileType()
        {
            ImgFileType result = new ImgFileType();

            result = ImgFileType.Unknown;

            PdfImageObject imageObject = null;

            try
            {
                imageObject = IsMask ? new PdfImageObject(_maskStream) : new PdfImageObject(_stream);
            }
            catch (UnsupportedPdfException)
            {
                return(ImgFileType.Bmp);
            }

            string fileType = imageObject.GetFileType().ToUpper();

            switch (fileType)
            {
            case "PNG":
                result = ImgFileType.PNG;
                break;

            case "JBIG2":
                result = ImgFileType.JBIG2;
                break;

            case "JP2":
                result = ImgFileType.JP2;
                break;

            case "JPG":
                result = ImgFileType.JPG;
                break;

            case "TIF":
                result = ImgFileType.TIF;
                break;
            }

            if (result == ImgFileType.Unknown &&
                (PixelFormat == PixelFormat.Format1bppIndexed || PixelFormat == PixelFormat.Format4bppIndexed))
            {
                result = ImgFileType.Bmp;
            }

            if (result == ImgFileType.Unknown)
            {
                throw new Exception("Cant Get FileType");
            }

            return(result);
        }
示例#7
0
        public void RenderImageOrg(ImageRenderInfo renderInfo)
        {
            PdfImageObject pdfimage      = renderInfo.GetImage();
            string         imgtp         = pdfimage.GetFileType();
            String         imageFileName = String.Format("{0}_{1:000}_{2}.{3}", _imgname, _currentPage, _imgNo, imgtp);

            imageFileName = _outputFolder + "\\" + imageFileName;
            var imageRawBytes = pdfimage.GetImageAsBytes();

            File.WriteAllBytes(imageFileName, imageRawBytes);
            _imgNo++;
        }
示例#8
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image    = renderInfo.GetImage();
            string         fileType = image.GetFileType();

            if (images.ContainsKey(fileType))
            {
                images[fileType] = images[fileType] + 1;
            }
            else
            {
                images.Add(fileType, 1);
            }
        }
示例#9
0
    public void RenderImage(ImageRenderInfo renderInfo)
    {
        imageNumber++;
        expectingTitle = true;
        PdfImageObject imageObject = renderInfo.GetImage();

        if (imageObject == null)
        {
            Console.WriteLine("Image {0} could not be read.", imageNumber);
        }
        else
        {
            File.WriteAllBytes(string.Format(format, imageNumber, imageObject.GetFileType()), imageObject.GetImageAsBytes());
        }
    }
示例#10
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject pdfimage = renderInfo.GetImage();
            string         pp       = pdfimage.GetImageBytesType().FileExtension;

            string imgtp = pdfimage.GetFileType();

            if ("jpg".Equals(imgtp, StringComparison.OrdinalIgnoreCase) ||
                "png".Equals(imgtp, StringComparison.OrdinalIgnoreCase) ||
                "gif".Equals(imgtp, StringComparison.OrdinalIgnoreCase))
            {
            }
            else
            {
                imgtp = pp;
                imgtp = "png";
            }
            String imageFileName = String.Format("{0}_{1:000}_{2}.{3}", _imgname, _currentPage, _imgNo, imgtp);

//			imageFileName= _outputFolder+"\\"+_imgname+_currentPage.ToString("_000")+"_"+_imgNo+".png";
            imageFileName = _outputFolder + "\\" + imageFileName;
            try{
                using (Image dotnetImg = pdfimage.GetDrawingImage())
                {
                    if (dotnetImg != null)
                    {
                        if (_pageRotation == 270)
                        {
                            dotnetImg.RotateFlip(RotateFlipType.Rotate270FlipNone);
                        }
                        else if (_pageRotation == 90)
                        {
                            dotnetImg.RotateFlip(RotateFlipType.Rotate90FlipNone);
                        }
                        else if (_pageRotation == 180)
                        {
                            dotnetImg.RotateFlip(RotateFlipType.Rotate180FlipNone);
                        }
                        dotnetImg.Save(imageFileName);
                    }
                }
            }catch (Exception ee) {
                System.Diagnostics.Debug.WriteLine(ee.StackTrace);
            }
            _imgNo++;
        }
示例#11
0
    public override void RenderImage(ImageRenderInfo renderInfo)
    {
        PdfImageObject image = renderInfo.GetImage();

        if (image == null)
        {
            return;
        }
        int    number   = counter++;
        String filename = name + "-" + number + "." + image.GetFileType();

        File.WriteAllBytes(outputPath + filename, image.GetImageAsBytes());
        LineSegment      segment          = UNIT_LINE.TransformBy(renderInfo.GetImageCTM());
        TextChunk        location         = new TextChunk("[" + filename + "]", segment.GetStartPoint(), segment.GetEndPoint(), 0f);
        List <TextChunk> locationalResult = (List <TextChunk>)field.GetValue(this);

        locationalResult.Add(location);
    }
            public void RenderImage(ImageRenderInfo info)
            {
                PdfImageObject image    = info.GetImage();
                var            fileType = image.GetFileType();
                var            imgBytes = image.GetImageAsBytes();
                var            imgDict  = image.GetDictionary();
                var            imgInfo  = "Unknown";
                var            filter   = image.Get(PdfName.FILTER);

                if (filter != null)
                {
                    imgInfo = filter.ToString().Replace(',', ' ');
                }

                var ctm       = info.GetImageCTM();
                var ctmWidth  = ctm[Matrix.I11];
                var ctmHeight = ctm[Matrix.I22];

                int         imgWidth      = -1;
                int         imgHeight     = -1;
                int         imgResolution = -1;
                PixelFormat imgFormat     = PixelFormat.Undefined;

                if (imgInfo != "/JBIG2Decode" && imgInfo != "/JPXDecode")
                {
                    var img = image.GetDrawingImage();
                    imgWidth      = img.Width;
                    imgHeight     = img.Height;
                    imgFormat     = img.PixelFormat;
                    imgResolution = Convert.ToInt32(img.VerticalResolution);
                    img.Dispose();
                }

                Images.Add(new PDFImageInfo()
                {
                    ImageBytes  = imgBytes.Length, ImageFormat = imgFormat.ToString(),
                    ImageHeight = imgHeight, ImageWidth = imgWidth, ImageResolution = imgResolution,
                    ImageInfo   = imgInfo, ImageType = fileType
                });
            }
示例#13
0
            public void RenderImage(ImageRenderInfo renderInfo)
            {
                PdfImageObject image = renderInfo.GetImage();

                try
                {
                    image = renderInfo.GetImage();
                    if (image == null)
                    {
                        return;
                    }
                    using (MemoryStream ms = new MemoryStream(image.GetImageAsBytes()))
                    {
                        Images.Add(ms.ToArray());
                        ImageExt.Add(image.GetFileType());
                    }
                }
                catch (IOException ie)
                {
                    /*
                     * pass-through; image type not supported by iText[Sharp]; e.g. jbig2
                     */
                }
            }
示例#14
0
    public void RenderImage(ImageRenderInfo renderInfo)
    {
        try {
            PdfImageObject image = renderInfo.GetImage();
            if (image == null || image.GetImageBytesType() == PdfImageObject.ImageBytesType.JBIG2)
            {
                return;
            }

            _imageNames.Add(string.Format("Image{0}.{1}", renderInfo.GetRef().Number, image.GetFileType()));
            _myImages.Add(image.GetImageAsBytes());
        }
        catch
        {
        }
    }
示例#15
0
        private static void FindImages(string source, string target)
        {
            using (var pdf = new PdfReader(source))
            {
                for (int pageNumber = 1, imageNumber = 1; pageNumber <= pdf.NumberOfPages; pageNumber++, imageNumber = 1)
                {
                    FindPageImages(pdf.GetPageN(pageNumber), obj =>
                    {
                        if (obj == null)
                        {
                            return;
                        }

                        var pdfObj = pdf.GetPdfObject(((PRIndirectReference)obj).Number);
                        if (pdfObj == null || !pdfObj.IsStream())
                        {
                            return;
                        }

                        var stream  = (PdfStream)pdfObj;
                        var subtype = stream.Get(PdfName.SUBTYPE);

                        if (subtype == null || !subtype.Equals(PdfName.IMAGE))
                        {
                            return;
                        }

                        var imageObj = new PdfImageObject((PRStream)stream);

                        using (var image = imageObj.GetDrawingImage())
                        {
                            image.Save(Path.Combine(target, $"Image {pageNumber} - {imageNumber++}.{imageObj.GetFileType()}"));
                        }
                    });
                }
            }
        }
示例#16
0
        private void btnRemoveObject_Click(object sender, EventArgs e)
        {
            foreach (var item in lstSelectedImages.SelectedItems)
            {
                if (item is KeyValuePair <string, object> )
                {
                    var thisItem = (KeyValuePair <string, object>)item;
                    var obj      = thisItem.Value as PdfObject;
                    if (obj != null && obj.IsStream())
                    {
                        var    stream = (PRStream)obj;
                        byte[] b;
                        try
                        {
                            b = PdfReader.GetStreamBytes(stream);
                        }
                        catch (Exception ex1)
                        {
                            b = PdfReader.GetStreamBytesRaw(stream);
                        }

                        var bytes = b;
                        try
                        {
                            var pdfImage = new PdfImageObject(stream);
                            picImage.Image = pdfImage.GetDrawingImage();
                            picImage.Image.Save(Path.GetDirectoryName(fileName) + "\\output\\" + DateTime.Now.Ticks.ToString() + "." + pdfImage.GetFileType());
                            PdfImage image = new PdfImage(MakeBlankImg(), "", null);
                            ReplaceStream(stream, image);
                        }
                        catch (Exception ex)
                        {
                            tsMessage.Text = ex.Message;
                        }
                    }
                }
                SaveReaderToOutput();
            }
        }