/** * @see com.itextpdf.text.pdf.parser.RenderFilter#allowText(com.itextpdf.text.pdf.parser.TextRenderInfo) */ public override bool AllowText(TextRenderInfo renderInfo) { LineSegment segment = renderInfo.GetBaseline(); Vector startPoint = segment.GetStartPoint(); Vector endPoint = segment.GetEndPoint(); float x1 = startPoint[Vector.I1]; float y1 = startPoint[Vector.I2]; float x2 = endPoint[Vector.I1]; float y2 = endPoint[Vector.I2]; return(filterRect.IntersectsLine(x1, y1, x2, y2)); }
/** * * @see com.itextpdf.text.pdf.parser.RenderListener#renderText(com.itextpdf.text.pdf.parser.TextRenderInfo) */ public virtual void RenderText(TextRenderInfo renderInfo) { LineSegment segment = renderInfo.GetBaseline(); if (renderInfo.GetRise() != 0) { // remove the rise from the baseline - we do this because the text from a super/subscript render operations should probably be considered as part of the baseline of the text the super/sub is relative to Matrix riseOffsetTransform = new Matrix(0, -renderInfo.GetRise()); segment = segment.TransformBy(riseOffsetTransform); } TextChunk location = new TextChunk(renderInfo.GetText(), segment.GetStartPoint(), segment.GetEndPoint(), renderInfo.GetSingleSpaceWidth()); locationalResult.Add(location); }
public void TestType3FontWidth() { String inFile = "type3font_text.pdf"; LineSegment origLineSegment = new LineSegment(new Vector(20.3246f, 769.4974f, 1.0f), new Vector(151.22923f, 769.4974f, 1.0f)); PdfReader reader = TestResourceUtils.GetResourceAsPdfReader(TEST_RESOURCES_PATH, inFile); TextPositionRenderListener renderListener = new TextPositionRenderListener(); PdfContentStreamProcessor processor = new PdfContentStreamProcessor(renderListener); PdfDictionary pageDic = reader.GetPageN(FIRST_PAGE); PdfDictionary resourcesDic = pageDic.GetAsDict(PdfName.RESOURCES); processor.ProcessContent(ContentByteUtils.GetContentBytesForPage(reader, FIRST_PAGE), resourcesDic); Assert.AreEqual(renderListener.LineSegments[FIRST_ELEMENT_INDEX].GetStartPoint()[FIRST_ELEMENT_INDEX], origLineSegment.GetStartPoint()[FIRST_ELEMENT_INDEX], 1/2f); Assert.AreEqual(renderListener.LineSegments[FIRST_ELEMENT_INDEX].GetEndPoint()[FIRST_ELEMENT_INDEX], origLineSegment.GetEndPoint()[FIRST_ELEMENT_INDEX], 1/2f); }
public ITextChunkLocation CreateLocation(TextRenderInfo renderInfo, LineSegment baseline) { return(new TextChunkLocationDefaultImp(baseline.GetStartPoint(), baseline.GetEndPoint(), renderInfo.GetSingleSpaceWidth())); }