public void RenderImage(ImageRenderInfo renderInfo) { PdfImageObject imagen = renderInfo.GetImage(); PdfName filtro = (PdfName)imagen.Get(PdfName.FILTER); if (filtro != null) { System.Drawing.Image drawingImage = imagen.GetDrawingImage(); string extension = "."; if (filtro == PdfName.DCTDECODE) { extension += PdfImageObject.ImageBytesType.JPG.FileExtension; } else if (filtro == PdfName.JPXDECODE) { extension += PdfImageObject.ImageBytesType.JP2.FileExtension; } else if (filtro == PdfName.FLATEDECODE) { extension += PdfImageObject.ImageBytesType.PNG.FileExtension; } else if (filtro == PdfName.LZWDECODE) { extension += PdfImageObject.ImageBytesType.CCITT.FileExtension; } this.Imagenes.Add(drawingImage, extension); } }
public virtual void RenderImage(ImageRenderInfo renderInfo) { IList<Rectangle> areasToBeCleaned = GetImageAreasToBeCleaned(renderInfo); if (areasToBeCleaned == null || newClippingPath.IsEmpty()) { chunks.Add(new PdfCleanUpContentChunk.Image(false, null)); } else { PdfImageObject pdfImage = renderInfo.GetImage(); byte[] imageBytes = ProcessImage(pdfImage.GetImageAsBytes(), areasToBeCleaned); if (renderInfo.GetRef() == null && pdfImage != null) { // true => inline image PdfDictionary dict = pdfImage.GetDictionary(); PdfObject imageMask = dict.Get(PdfName.IMAGEMASK); Image image = Image.GetInstance(imageBytes); if (imageMask == null) { imageMask = dict.Get(PdfName.IM); } if (imageMask != null && imageMask.Equals(PdfBoolean.PDFTRUE)) { image.MakeMask(); } PdfContentByte canvas = Context.Canvas; canvas.AddImage(image, 1, 0, 0, 1, 0, 0, true); } else if (pdfImage != null && imageBytes != pdfImage.GetImageAsBytes()) { chunks.Add(new PdfCleanUpContentChunk.Image(true, imageBytes)); } } }
// --------------------------------------------------------------------------- /** * @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); //} }
public void RenderImage(ImageRenderInfo renderInfo) { Image imageRange = null; iTextSharp.text.pdf.parser.PdfImageObject image = renderInfo.GetImage(); if (image == null) return; try { imageRange = Image.FromStream(new MemoryStream(image.GetImageAsBytes())); } catch (Exception) {} if (imageRange != null) { if (textRange.Trim() != "") AddAllTextPars(); ExtractedParagraphs.Add(new BookParagraph(BookParagraph.TYPE_PICTURE, imageRange, index, ++index)); } }
// --------------------------------------------------------------------------- /** * @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 } }
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) { 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); } }
public void RenderImage(ImageRenderInfo renderInfo) { PdfImageObject image = renderInfo.GetImage(); try { image = renderInfo.GetImage(); if (image == null) return; using (MemoryStream ms = new MemoryStream(image.GetImageAsBytes())) { string filename = string.Format(@"{0}\Image-{1:0000}.{2}", outputPath, imageNumber++, image.GetFileType()); using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write)) { fs.Write(ms.ToArray(), 0, (int)ms.Length); } this.statusListView.Invoke(new MainForm.AddStatusItemDelegate(mainForm.AddStatusItem), new object[] { filename, "Extracted" }); } } catch (IOException ie) { /* * pass-through; image type not supported by iText[Sharp]; e.g. jbig2 */ } }
//------------------------------------------------------------------------- private Bitmap RenderImage(ImageRenderInfo renderInfo) { PdfImageObject image = renderInfo.GetImage(); using (System.Drawing.Image dotnetImg = image.GetDrawingImage()) { if (dotnetImg != null) { using (MemoryStream ms = new MemoryStream()) { dotnetImg.Save(ms, ImageFormat.Tiff); Bitmap d = new Bitmap(dotnetImg); return d;//d.Save(imgPath); } } } return null; }