コード例 #1
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image  = renderInfo.GetImage();
            var            filter = (PdfName)image.Get(PdfName.FILTER);

            if (filter != null)
            {
                System.Drawing.Image drawingImage = image.GetDrawingImage();
                string extension = ".";

                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;
                }


                this.Images.Add(drawingImage, extension);
                string path = System.IO.Path.GetFullPath(System.AppDomain.CurrentDomain.BaseDirectory);
                drawingImage.Save(path + "temp" + extension, drawingImage.RawFormat);
            }
        }
コード例 #2
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image  = renderInfo.GetImage();
            PdfName        filter = (PdfName)image.Get(PdfName.FILTER);

            if (filter != null)
            {
                System.Drawing.Image drawingImage = image.GetDrawingImage();
                string extension = ".";
                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;
                }
                this.Images.Add(drawingImage, extension);
            }
        }
コード例 #3
0
ファイル: ImageCollection.cs プロジェクト: hisa-lab/Cube.Pdf
        /* ----------------------------------------------------------------- */
        ///
        /// RenderImage
        ///
        /// <summary>
        /// Occurs when the specified image is rendered.
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        public void RenderImage(ImageRenderInfo info)
        {
            var obj = info.GetImage();

            if (!(obj.Get(PdfName.FILTER) is PdfName))
            {
                return;
            }

            var raw = obj.GetDrawingImage();

            if (raw == null)
            {
                return;
            }

            var sm = obj.GetDictionary().GetDirectObject(PdfName.SMASK);

            if (sm == null)
            {
                _inner.Add(raw);
                return;
            }

            var tmp  = new PdfImageObject(sm as PRStream);
            var mask = tmp.GetDrawingImage();
            var dest = Restore(raw as Bitmap, mask as Bitmap);

            _inner.Add(dest ?? raw);
        }
コード例 #4
0
            public void RenderImage(ImageRenderInfo renderInfo)
            {
                PdfImageObject image = renderInfo.GetImage();

                var pdfObject = image.Get(PdfName.FILTER);

                PdfName filter = null;

                if (pdfObject is PdfName)
                {
                    filter = (PdfName)pdfObject;
                    var drawingImage = GetImage(filter, image);
                    if (drawingImage != null)
                    {
                        Images.Add(drawingImage.Item2, drawingImage.Item1);
                    }
                }

                if (pdfObject is PdfArray)
                {
                    var pdfArray = (PdfArray)pdfObject;
                    foreach (PdfName pdfName in pdfArray)
                    {
                        var drawingImage = GetImage(pdfName, image);
                        Images.Add(drawingImage.Item2, drawingImage.Item1);
                    }
                }
            }
コード例 #5
0
        /// <summary>
        /// Gets all the images in the given document
        /// </summary>
        /// <param name="file"></param>
        private List <Image> ExtractImages(string file)
        {
            var          randomAccess = new RandomAccessFileOrArray(file);
            var          reader       = new PdfReader(randomAccess, null);
            List <Image> imgList      = new List <Image>();

            for (int i = 0; i <= reader.XrefSize - 1; i++)
            {
                var pdfObject = reader.GetPdfObject(i);

                if ((pdfObject != null) && pdfObject.IsStream())
                {
                    var       PDFStremObj = (PdfStream)pdfObject;
                    PdfObject subtype     = PDFStremObj.Get(PdfName.SUBTYPE);

                    if ((subtype != null) && subtype.ToString() == PdfName.IMAGE.ToString())
                    {
                        PdfImageObject PdfImageObj = new PdfImageObject((PRStream)PDFStremObj);

                        Image ImgPDF = PdfImageObj.GetDrawingImage();


                        imgList.Add(ImgPDF);
                    }
                }
            }

            reader.Close();
            return(imgList);
        }
コード例 #6
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);
                }
            }
コード例 #7
0
        // ---------------------------------------------------------------------------

        /**
         * @see com.itextpdf.text.pdf.parser.RenderListener#renderImage(
         *     com.itextpdf.text.pdf.parser.ImageRenderInfo)
         */
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image = renderInfo.GetImage();
            //PdfName filter = (PdfName)image.Get(PdfName.FILTER);

            string imageName      = string.Format("{0:0000}_{1:0000}.{2}", PageIndex, ImagesList.Count, image.GetImageBytesType().FileExtension);
            var    pageImageIndex = new PageImageIndex
            {
                ImageName  = imageName,
                ImageIndex = ImagesList.Count,
                PageIndex  = PageIndex
            };
            var imageType = image.GetImageBytesType();
            //if (imageType != PdfImageObject.ImageBytesType.JBIG2)
            //{
            //var bmp = image.GetDrawingImage();

            // Write image to file
            string pathToSave = string.Format(@"{0}\{1}", OutputPath, imageName);

            //bmp.Save(string.Format(pathToSave));
            // bmp.Dispose();

            // Sometime gdi+ error happen. We must write byte directly to disk
            if (!Directory.Exists(OutputPath))
            {
                Directory.CreateDirectory(OutputPath);
            }
            var bytes = image.GetImageAsBytes();

            File.WriteAllBytes(pathToSave, bytes);

            ImagesList.Add(pageImageIndex, null);
            //}
        }
コード例 #8
0
        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;
            }
        }
コード例 #9
0
ファイル: FilePDF.cs プロジェクト: zs2hx/QuickBook
        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;
            }
        }
コード例 #10
0
            public void RenderImage(ImageRenderInfo renderInfo)
            {
                PdfImageObject image        = null;
                Image          drawingImage = null;

                try
                {
                    image = renderInfo.GetImage();
                    var imgBytesLen = image.GetImageAsBytes().Length;
                    // Smallest image we can OCR is 40 x 40
                    if (imgBytesLen > 1600)
                    {
                        drawingImage = image.GetDrawingImage();
                    }
                }
                catch (Exception ex)
                {
                    _log.Error("Exception in GetImage or GetDrawingImage: {0}", ex);
                }

                if (drawingImage != null)
                {
                    this.Images.Add(drawingImage);
                }
            }
コード例 #11
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
            }
        }
コード例 #12
0
ファイル: CVReader.cs プロジェクト: kachmaroman/CVParser
        public static byte[] GetPictureFromPdf(Stream stream)
        {
            byte[] imageData = new byte[0];
            string path      = Path.Combine(Directory.GetParent(Directory.GetCurrentDirectory()).FullName, "wwwroot", "CV Parser", "Pictures");

            using (PdfReader pdfReader = new PdfReader(stream))
            {
                for (int i = 0; i < pdfReader.XrefSize; i++)
                {
                    PdfObject po = pdfReader.GetPdfObject(i);

                    if (po == null || !po.IsStream()) //object not found so continue
                    {
                        continue;
                    }

                    PRStream  pst  = (PRStream)po;
                    PdfObject type = pst.Get(PdfName.SUBTYPE); //get the object type
                                                               //check if the object is the image type object
                    if (type != null && type.ToString().Equals(PdfName.IMAGE.ToString()))
                    {
                        PdfImageObject pio = new PdfImageObject(pst);

                        int imageLength = pio.GetImageAsBytes().Length;

                        if (imageLength != WatermarkSize && imageLength > imageData.Length)
                        {
                            imageData = pio.GetImageAsBytes();
                        }
                    }
                }
            }

            return(imageData);
        }
コード例 #13
0
ファイル: Form1.cs プロジェクト: alialiayman/PDFEditor
        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);
        }
コード例 #14
0
        /// <summary>
        ///  Extract Image from PDF file and Store in Image Object
        /// </summary>
        /// <param name="pdfPath">Specify PDF Source Path</param>
        /// <returns>List</returns>
        public static List <Image> ExtractImages(string pdfPath)
        {
            var images    = new List <Image>();
            var rafObj    = new RandomAccessFileOrArray(pdfPath);
            var pdfReader = new PdfReader(rafObj, null);

            for (int i = 0; i < pdfReader.XrefSize; i++)
            {
                var pdfObject = pdfReader.GetPdfObject(i);

                if ((pdfObject != null) && pdfObject.IsStream())
                {
                    var pdfStream = (PdfStream)pdfObject;
                    var subtype   = pdfStream.Get(PdfName.SUBTYPE);

                    if ((subtype != null) && subtype.ToString() == PdfName.IMAGE.ToString())
                    {
                        var pdfImageObj = new PdfImageObject((PRStream)pdfStream);
                        var image       = pdfImageObj.GetDrawingImage();
                        images.Add(image);
                    }
                }
            }

            pdfReader.Close();

            return(images);
        }
コード例 #15
0
        public void Compress(PdfObject pdfObject, PdfDictionary pdfImageObject, PdfStamper stamper, int pageNum)
        {
            var image    = new PdfImageObject((PRStream)pdfImageObject);
            var oldBytes = image.GetImageAsBytes();

            var compressedBitmapInfo = CompressImage(oldBytes, CompressionQuality.Low, pageNum);

            Bitmap bitmap = compressedBitmapInfo.Item1;

            if (compressedBitmapInfo.Item1 == null)
            {
                return;
            }

            iTextSharp.text.Image compressedImage;
            using (var shrinkedBitmap = ShrinkImage(bitmap, _recommendedCompression))
            {
                if (shrinkedBitmap == null)
                {
                    return;
                }

                Image palettedImage = shrinkedBitmap;

                if (compressedBitmapInfo.Item2 != PixelFormat.Undefined)
                {
                    var bitsPerPixel = GetIntPalette(compressedBitmapInfo.Item2);

                    if (bitsPerPixel > 0)
                    {
                        palettedImage = GdiPaletteConverter.ConvertBitmapTo1Or8Bpp(shrinkedBitmap, bitsPerPixel);
                    }
                }

                using (var msInternal = new MemoryStream())
                {
                    //Checked for T_ file, resolution: Png format took less space up to 10% rather JPEG
                    //var newBytes = ConvertImageToBytes(palettedImage, 90);
                    palettedImage.Save(msInternal, _imageOutputFormat);
                    var newBytes = msInternal.ToArray();
                    compressedImage = iTextSharp.text.Image.GetInstance(newBytes);
                }

                shrinkedBitmap.Dispose();
                if (compressedBitmapInfo.Item1 != null)
                {
                    compressedBitmapInfo.Item1.Dispose();
                }
                palettedImage.Dispose();
            }

            PdfReader.KillIndirect(pdfObject);
            var mask = compressedImage.ImageMask;

            if (mask != null)
            {
                stamper.Writer.AddDirectImageSimple(mask);
            }
            stamper.Writer.AddDirectImageSimple(compressedImage, (PRIndirectReference)pdfObject);
        }
コード例 #16
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            PdfImageObject image = renderInfo.GetImage();
            ImageInfo      eii   = new ImageInfo();
            Matrix         m     = renderInfo.GetImageCTM();

            try
            {
                Image  drawingImage = image.GetDrawingImage();
                double hPoints      = m[0];
                double vPoints      = m[4];

                //72 Points = 1 inch so...
                double widthInches  = hPoints / 72;
                double heightInches = vPoints / 72;
                double hDPI         = drawingImage.Width / widthInches;
                double vDPI         = drawingImage.Height / heightInches;

                eii.hDPI        = Math.Round(hDPI);
                eii.vDPI        = Math.Round(vDPI);
                eii.width       = drawingImage.Width;
                eii.height      = drawingImage.Height;
                eii.pixelFormat = drawingImage.PixelFormat;
            }
            catch (Exception e)
            {
                //It was not possible to extract image with image.GetDrawingImage();
                //Don't throw exception to continue parsing the document
                log.Warn(e.Message, e);
            }
            ImagesInfo.Add(eii);
        }
コード例 #17
0
        private void TestFile(String filename, int page, String objectid)
        {
            PdfReader pdfReader = TestResourceUtils.GetResourceAsPdfReader(TEST_RESOURCES_PATH, filename);

            try
            {
                PdfDictionary        resources = pdfReader.GetPageResources(page);
                PdfDictionary        xobjects  = resources.GetAsDict(PdfName.XOBJECT);
                PdfIndirectReference objRef    = xobjects.GetAsIndirectObject(new PdfName(objectid));
                if (objRef == null)
                {
                    throw new NullReferenceException("Reference " + objectid + " not found - Available keys are " + xobjects.Keys);
                }
                PRStream      stream        = (PRStream)PdfReader.GetPdfObject(objRef);
                PdfDictionary colorSpaceDic = resources != null?resources.GetAsDict(PdfName.COLORSPACE) : null;

                PdfImageObject img    = new PdfImageObject(stream, colorSpaceDic);
                byte[]         result = img.GetImageAsBytes();
                Assert.NotNull(result);
                int zeroCount = 0;
                foreach (byte b in result)
                {
                    if (b == 0)
                    {
                        zeroCount++;
                    }
                }
                Assert.IsTrue(zeroCount > 0);
            }
            finally
            {
                pdfReader.Close();
            }
        }
コード例 #18
0
        public void RenderImage(ImageRenderInfo renderInfo)
        {
            try
            {
                PdfImageObject image = renderInfo.GetImage();

                if (image != null)//Added By DS To Handle Exception
                {
                    //PdfName filter = (PdfName)image.Get(PdfName.FILTER);// Commented By DS To Handle Exception
                    PdfName filter = null;

                    //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)// Commented By DS To Handle Exception
                    //{
                    System.Drawing.Image drawingImage = image.GetDrawingImage();

                    string extension = ".";

                    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);
                    //}// Commented By DS To Handle Exception
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #19
0
ファイル: PDFImageListener.cs プロジェクト: vishalishere/CBR
        // ---------------------------------------------------------------------------

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

            //PdfName filter = (PdfName)image.Get(PdfName.FILTER);

            _imageNames.Add(string.Format("{0:0000}_{1:0000}.{2}", PageIndex, _imageNames.Count, image.GetImageBytesType().FileExtension));
            _ImageBytes.Add(image.GetImageAsBytes());
        }
コード例 #20
0
 public void RenderImage(ImageRenderInfo renderInfo)
 {
     try
     {
         image = renderInfo.GetImage();
     }
     catch (System.IO.IOException)
     {
     }
 }
コード例 #21
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);
        }
コード例 #22
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++;
        }
コード例 #23
0
        private ImageFormat _imageOutputFormat = ImageFormat.Png; //for T_.., Sthlm.. files

        public void Compress(PdfObject pdfObject, PdfDictionary pdfImageObject, PdfStamper stamper, int pageNum)
        {
            var stream = (PRStream)pdfImageObject;
            var image  = new PdfImageObject(stream);

            var imageBytes = image.GetImageAsBytes();

            using (var ms = new MemoryStream(imageBytes))
            {
                var fileType     = FreeImage.GetFileTypeFromStream(ms);
                var sourceBitmap = FreeImage.LoadFromStream(ms, FREE_IMAGE_LOAD_FLAGS.PNG_IGNOREGAMMA, ref fileType);
                var dotnetBitmap = FreeImage.GetBitmap(sourceBitmap);

                iTextSharp.text.Image compressedImage;
                using (var shrinkedBitmap = ShrinkImage(dotnetBitmap, _recommendedCompression))
                {
                    if (shrinkedBitmap == null)
                    {
                        return;
                    }

                    System.Drawing.Image newImage = shrinkedBitmap;
                    if (DefineBitPerPixel(sourceBitmap) <= 8)
                    {
                        newImage = GdiPaletteConverter.ConvertBitmapTo1Or8Bpp(shrinkedBitmap, 1);
                    }

                    using (var msInternal = new MemoryStream())
                    {
                        newImage.Save(msInternal, _imageOutputFormat);
                        var newBytes = msInternal.ToArray();
                        compressedImage = iTextSharp.text.Image.GetInstance(newBytes);
                    }

                    shrinkedBitmap.Dispose();
                    newImage.Dispose();
                }

                dotnetBitmap.Dispose();
                FreeImage.Unload(sourceBitmap);
                sourceBitmap.SetNull();

                PdfReader.KillIndirect(pdfObject);
                stamper.Writer.CompressionLevel = PdfStream.BEST_COMPRESSION;

                var mask = compressedImage.ImageMask;
                if (mask != null)
                {
                    stamper.Writer.AddDirectImageSimple(mask);
                }
                stamper.Writer.AddDirectImageSimple(compressedImage, (PRIndirectReference)pdfObject);
            }
        }
コード例 #24
0
    public void RenderImage(ImageRenderInfo renderInfo)
    {
        PdfImageObject imageObject = renderInfo.GetImage();

        if (imageObject == null)
        {
            Console.WriteLine("Image {0} could not be read.", renderInfo.GetRef().Number);
        }
        else
        {
            Images.Add(imageObject.GetDrawingImage());
        }
    }
コード例 #25
0
ファイル: PdfUtil.cs プロジェクト: USCPSC/PatternRecognition
        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);
            }
        }
コード例 #26
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());
        }
    }
コード例 #27
0
ファイル: Form1.cs プロジェクト: alialiayman/PDFEditor
 private bool TryToReadImage(PRStream stream)
 {
     try
     {
         var pdfImage = new PdfImageObject(stream);
         picImage.Image = null;
         picImage.Image = pdfImage.GetDrawingImage();
         tsMessage.Text = "Image Size = " + stream.Length;
         return(true);
     }
     catch (Exception e)
     {
         return(false);
     }
 }
コード例 #28
0
    static private void InsertIntoDictionary(PdfDocument doc, PdfPage page, PdfImageObject image)
    {
        //Get page dictionary, list of indirect objects and original page content
        var pageDict = page.Dictionary;
        var list     = PdfIndirectList.FromPdfDocument(doc);
        //Convert contents to array.
        PdfTypeArray array = ConvertContentsToArray(pageDict["Contents"], list, pageDict);
        //Get stream of image.
        IntPtr streamHandle = Pdfium.FPDFImageObj_GenerateStream(image.Handle, page.Handle);
        var    stream       = PdfTypeStream.Create(streamHandle);
        //Add image's stream into list of indirect objects and then add it to array.
        int num = list.Add(stream);

        array.AddIndirect(list, num);
    }
コード例 #29
0
        /// BT = Beginning of a text object operator
        /// ET = End of a text object operator
        /// Td move to the start of next line
        ///  5 Ts = superscript
        /// -5 Ts = subscript
        ///

        public List <byte[]> ExtractImages(string inFileName, ImageFormat imageFormat, int minimumHeight, int minumumWidth)
        {
            List <byte[]> extractedImages = new List <byte[]>();

            PdfReader pdfReader = new PdfReader(inFileName);

            for (int pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++)
            {
                PdfDictionary pdfDictionary = pdfReader.GetPageN(pageNumber);
                PdfDictionary res           = (PdfDictionary)PdfReader.GetPdfObject(pdfDictionary.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();
                        string          height = tg.Get(PdfName.HEIGHT).ToString();
                        ImageRenderInfo imgRI  = ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg);

                        PdfImageObject pdfImageObject = imgRI.GetImage();

                        using (Image image = pdfImageObject.GetDrawingImage())
                        {
                            if (image.Height >= minimumHeight && image.Width >= minumumWidth)
                            {
                                if (pdfImageObject.GetDrawingImage() != null)
                                {
                                    using (MemoryStream ms = new MemoryStream())
                                    {
                                        image.Save(ms, imageFormat);

                                        extractedImages.Add(ms.ToArray());
                                    }
                                }
                            }
                        }
                    }
                }
            }

            pdfReader.Close();

            return(extractedImages);
        }
コード例 #30
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
        {
        }
    }
コード例 #31
0
ファイル: ImageRenderInfo.cs プロジェクト: labeuze/source
 private void PrepareImageObject() {
     if (imageObject != null)
         return;
     
     if (refi != null){
         PRStream stream = (PRStream)iTextSharp.text.pdf.PdfReader.GetPdfObject(refi);
         imageObject = new PdfImageObject(stream, colorSpaceDictionary);
     } else if (inlineImageInfo != null){
         // 'iTextSharp.text.pdf.parser.PdfImageObject.PdfImageObject(iTextSharp.text.pdf.PdfDictionary, byte[], iTextSharp.text.pdf.PdfDictionary)' is inaccessible due to its protection level
         imageObject = new PdfImageObject(inlineImageInfo.ImageDictionary, inlineImageInfo.Samples, colorSpaceDictionary);
     }
 }
コード例 #32
0
 private void PrepareImageObject() {
     if (imageObject != null)
         return;
     
     if (refi != null){
         PRStream stream = (PRStream)PdfReader.GetPdfObject(refi);
         imageObject = new PdfImageObject(stream, colorSpaceDictionary);
     } else if (inlineImageInfo != null){
         imageObject = new PdfImageObject(inlineImageInfo.ImageDictionary, inlineImageInfo.Samples, colorSpaceDictionary);
     }
 }