public IList <PdfTextFragment> GetTextWithinRegion(PdfSourceRect markedRect, int firstPage, int lastPage) { IList <PdfTextFragment> containedFragments = new List <PdfTextFragment>(); IList <int> pageRange = Enumerable.Range(firstPage, lastPage - firstPage + 1).ToList(); //intersect the markedRect with the textFragments (transformed to canvas coordinates) foreach (int page in pageRange) { IList <PdfTextFragment> textFragments; try { textFragments = documentManager.GetTextFragments(page); } catch (PdfRequestCanceledException) { continue; } foreach (PdfTextFragment frag in textFragments) { PdfSourceRect rectOnCanvas = frag.RectOnUnrotatedPage.CalculateRectOnCanvas(GetPageRect(page), Rotation); if (markedRect.IsEmpty || rectOnCanvas.intersectsDouble(markedRect)) { containedFragments.Add(frag); } } } return(containedFragments); }
/// <summary> /// Checks whether the bounding rectangle of this annotation is intersected by a rectangle. /// If OnIntersect is false the markedRect has to completly contain the bounding rectangle. /// </summary> /// <param name="markedRect"></param> /// <param name="onIntersect"></param> /// <returns></returns> public bool ContainsOrIntersectsWithRect(PdfSourceRect markedRect, bool onIntersect) { PdfSourceRect annotRect = new PdfSourceRect(Rect[0], Rect[1], Rect[2] - Rect[0], Rect[3] - Rect[1]); if (onIntersect) { return(markedRect.intersectsDouble(annotRect)); } return(markedRect.contains(annotRect)); }