Class PdfCleanUpRegionFilter

java.lang.Object
com.itextpdf.text.pdf.parser.RenderFilter
com.itextpdf.text.pdf.pdfcleanup.PdfCleanUpRegionFilter

class PdfCleanUpRegionFilter extends RenderFilter
  • Field Details

  • Constructor Details

    • PdfCleanUpRegionFilter

      public PdfCleanUpRegionFilter(List<Rectangle> rectangles)
  • Method Details

    • allowText

      public boolean allowText(TextRenderInfo renderInfo)
      Checks if the text is inside render filter region.
      Overrides:
      allowText in class RenderFilter
      Returns:
      true if the text render operation should be performed
    • allowImage

      public boolean allowImage(ImageRenderInfo renderInfo)
      Overrides:
      allowImage in class RenderFilter
      Returns:
      true if the image render operation should be performed
    • getCoveredAreas

      protected List<Rectangle> getCoveredAreas(ImageRenderInfo renderInfo)
      Calculates intersection of the image and the render filter region in the coordinate system relative to the image.
      Returns:
      null if the image is not allowed, List of Rectangle objects otherwise.
    • filterStrokePath

      protected Path filterStrokePath(Path sourcePath, Matrix ctm, float lineWidth, int lineCapStyle, int lineJoinStyle, float miterLimit, LineDashPattern lineDashPattern)
    • filterFillPath

      protected Path filterFillPath(Path path, Matrix ctm, int fillingRule)
      Note: this method will close all unclosed subpaths of the passed path.
      Parameters:
      fillingRule - If the subpath is contour, pass any value.
    • getJoinType

      private static Clipper.JoinType getJoinType(int lineJoinStyle)
    • getEndType

      private static Clipper.EndType getEndType(int lineCapStyle)
    • convertToCircles

      private static List<Subpath> convertToCircles(List<Subpath> degenerateSubpaths, double radius)
      Converts specified degenerate subpaths to circles. Note: actually the resultant subpaths are not real circles but approximated.
      Parameters:
      radius - Radius of each constructed circle.
      Returns:
      List consisting of circles constructed on given degenerated subpaths.
    • convertToSquares

      private static List<Subpath> convertToSquares(List<Subpath> degenerateSubpaths, double squareWidth, Path sourcePath)
      Converts specified degenerate subpaths to squares. Note: the list of degenerate subpaths should contain at least 2 elements. Otherwise we can't determine the direction which the rotation of each square depends on.
      Parameters:
      squareWidth - Width of each constructed square.
      sourcePath - The path which dash pattern applied to. Needed to calc rotation angle of each square.
      Returns:
      List consisting of squares constructed on given degenerated subpaths.
    • getPathApproximation

      private static List<Point2D> getPathApproximation(Path path)
    • constructSquare

      private static Subpath constructSquare(Point2D squareCenter, double widthHalf, double rotationAngle)
    • getRotatedSquareVertices

      private static Point2D[] getRotatedSquareVertices(Point2D[] orthogonalSquareVertices, double angle, Point2D squareCenter)
    • addPath

      private static List<Subpath> addPath(ClipperOffset offset, Path path, Clipper.JoinType joinType, Clipper.EndType endType)
      Adds all subpaths of the path to the ClipperOffset object with one note: it doesn't add degenerate subpaths.
      Returns:
      List consisting of all degenerate subpaths of the path.
    • approximateCircle

      private static BezierCurve[] approximateCircle(Point2D center, double radius)
    • addPath

      private static void addPath(Clipper clipper, Path path)
    • addRect

      private static void addRect(Clipper clipper, Point2D[] rectVertices, Clipper.PolyType polyType)
    • convertToIntPoints

      private static Path convertToIntPoints(List<Point2D> points)
    • convertToFloatPoints

      private static List<Point2D> convertToFloatPoints(List<Point.LongPoint> points)
    • convertToPath

      private static Path convertToPath(PolyTree result)
    • addContour

      private static void addContour(Path path, List<Point.LongPoint> contour, Boolean close)
    • getVertices

      private Point2D[] getVertices(Rectangle rect)
    • intersect

      private boolean intersect(Point2D[] rect1, Point2D[] rect2)
    • calcImageRect

      private Rectangle calcImageRect(ImageRenderInfo renderInfo)
      Returns:
      Image boundary rectangle in device space.
    • intersection

      private Rectangle intersection(Rectangle rect1, Rectangle rect2)
      Returns:
      null if the intersection is empty, Rectangle representing intersection otherwise
    • transformIntersection

      private Rectangle transformIntersection(Matrix imageCTM, Rectangle rect)
      Transforms the given Rectangle into the image coordinate system which is [0,1]x[0,1] by default
    • getRectangle

      private Rectangle getRectangle(Point2D p1, Point2D p2, Point2D p3, Point2D p4)
      Constructs Rectangle object on the given points
    • applyDashPattern

      private static Path applyDashPattern(Path path, LineDashPattern lineDashPattern)
    • getNextPoint

      private static Point2D getNextPoint(Point2D segStart, Point2D segEnd, float dist)
    • componentwiseDiff

      private static Point2D componentwiseDiff(Point2D minuend, Point2D subtrahend)
    • getUnitVector

      private static Point2D getUnitVector(Point2D vector)
    • getVectorEuclideanNorm

      private static double getVectorEuclideanNorm(Point2D vector)
    • applyDash

      private static float applyDash(Path dashedPath, Point2D segStart, Point2D segEnd, Point2D dashTo, boolean isGap)
    • liesOnSegment

      private static boolean liesOnSegment(Point2D segStart, Point2D segEnd, Point2D point)
    • transformPoints

      private Point2D[] transformPoints(Matrix transormationMatrix, boolean inverse, Point2D... points)