private void ParseAndHighlight(String input, String output, bool singleCharacters) { PdfReader reader = new PdfReader(input); FileStream fos = new FileStream(output, FileMode.Create); PdfStamper stamper = new PdfStamper(reader, fos); PdfReaderContentParser parser = new PdfReaderContentParser(reader); MyRenderListener myRenderListener = singleCharacters ? new MyCharacterRenderListener() : new MyRenderListener(); for (int pageNum = 1; pageNum <= reader.NumberOfPages; pageNum++) { List <Rectangle> rectangles = parser.ProcessContent(pageNum, myRenderListener).GetRectangles(); PdfContentByte canvas = stamper.GetOverContent(pageNum); canvas.SetLineWidth(0.5f); canvas.SetColorStroke(BaseColor.RED); foreach (Rectangle rectangle in rectangles) { canvas.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height); canvas.Stroke(); } } stamper.Close(); fos.Close(); reader.Close(); }
/// <summary> /// Parses a page of a PDF file resulting in a list of /// TextItem and ImageItem objects. /// </summary> /// <param name="reader">a PdfReader</param> /// <param name="page">the page number of the page that needs to be parsed</param> /// <param name="header_height">header_height the height of the top margin</param> /// <returns>a list of TextItem and ImageItem objects</returns> public List <MyItem> GetContentItems(PdfReader reader, int page, float header_height) { PdfReaderContentParser parser = new PdfReaderContentParser(reader); Rectangle pageSize = reader.GetPageSize(page); MyRenderListener myRenderListener = new MyRenderListener(pageSize.Top - header_height); parser.ProcessContent(page, myRenderListener); return(myRenderListener.Items); }