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 }); }
public virtual void RenderImage(ImageRenderInfo renderInfo) { IList <Rectangle> areasToBeCleaned = GetImageAreasToBeCleaned(renderInfo); if (areasToBeCleaned == null) { 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)); } } }