public override void Process(PdfFileParserData data)
        {
            data.WFState.Value = WFState.WFStateFail;

            Dictionary <String, byte[]> files = new Dictionary <String, byte[]>();

            PdfReader reader = new PdfReader(data.DocumentToProcess);
            PdfReaderContentParser parser   = new PdfReaderContentParser(reader);
            MyImageRenderListener  listener = new MyImageRenderListener();

            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                parser.ProcessContent(i, listener);
            }
            for (int i = 0; i < listener.Images.Count; ++i)
            {
                string filedir = string.Format("{0}\\{1}", Path.GetDirectoryName(data.DocumentToProcess), WFUtilities.GetNextDirectoryNumber(Path.GetDirectoryName(data.DocumentToProcess)));
                if (!Directory.Exists(filedir))
                {
                    Directory.CreateDirectory(filedir);
                }
                if (Directory.Exists(filedir))
                {
                    using (FileStream fs = new FileStream(string.Format("{0}\\{1}", filedir, listener.ImageNames[i]), FileMode.Create, FileAccess.Write))
                    {
                        fs.Write(listener.Images[i], 0, listener.Images[i].Length);
                    }
                    data.OutputDocuments.Add(string.Format("{0}\\{1}", filedir, listener.ImageNames[i]));
                }
            }

            data.WFState.Value = KRSrcWorkflow.WFState.WFStateSuccess;
        }
Exemple #2
0
        private static void Main(string[] args)
        {
            var pdfPath    = "E:\\Embryo_Omics\\pdfExtract\\Binder1.pdf";
            var outputPath = "E:\\Embryo_Omics\\SingleSection_OldGrant\\OutTest\\Pngs";

            PdfReader pdf = new PdfReader(pdfPath);
            PdfReaderContentParser parser   = new PdfReaderContentParser(pdf);
            MyImageRenderListener  listener = new MyImageRenderListener();

            for (int i = 1; i <= pdf.NumberOfPages; i++)
            {
                parser.ProcessContent(i, listener); //Runs MyImageRenderListener below
            }
            var imgCount = listener.Images.Count;

            for (int i = 0; i < imgCount; i++)
            {
                var image = listener.Images[i];
                var ext   = listener.ImageExt[i];
                var name  = listener.ImageNames[i];

                using (MemoryStream ms = new MemoryStream(image))
                {
                    using (System.Drawing.Image img = System.Drawing.Image.FromStream(ms))
                    {
                        img.Save(String.Format("{0}\\{1}.png", outputPath, name), ImageFormat.Png);
                    }
                }
            }
        }
Exemple #3
0
    public PdfImageObject extractImage(String signatureName)
    {
        MyImageRenderListener     listener         = new MyImageRenderListener();
        PdfDictionary             sigFieldDic      = reader.AcroFields.GetFieldItem(signatureName).GetMerged(0);
        PdfDictionary             appearancesDic   = sigFieldDic.GetAsDict(PdfName.AP);
        PdfStream                 normalAppearance = appearancesDic.GetAsStream(PdfName.N);
        PdfDictionary             resourcesDic     = normalAppearance.GetAsDict(PdfName.RESOURCES);
        PdfContentStreamProcessor processor        = new PdfContentStreamProcessor(listener);

        processor.ProcessContent(ContentByteUtils.GetContentBytesFromContentObject(normalAppearance), resourcesDic);
        return(listener.image);
    }