From a4e012762e1adda234decc1137f221cfd70498d3 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 1 Oct 2020 15:04:51 +0200 Subject: [PATCH] RED-373: Fixed multiline annotations view in pdftron --- .../service/AnnotationHighlightService.java | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java index 8669fffd..1da947fc 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java @@ -227,7 +227,7 @@ public class AnnotationHighlightService { PDAnnotationTextMarkup annotation = new PDAnnotationTextMarkup(PDAnnotationTextMarkup.SUB_TYPE_HIGHLIGHT); annotation.constructAppearances(); - annotation.setRectangle(toPDRectangle(rectangles.get(0))); + annotation.setRectangle(toPDRectangle(rectangles)); annotation.setQuadPoints(toQuadPoints(rectangles)); if (popup) { annotation.setAnnotationName(id); @@ -252,13 +252,33 @@ public class AnnotationHighlightService { } - private PDRectangle toPDRectangle(Rectangle rectangle) { + private PDRectangle toPDRectangle(List rectangles) { + + float lowerLeftX = Float.MAX_VALUE; + float upperRightX = 0; + float lowerLeftY = 0; + float upperRightY = Float.MAX_VALUE; + + for (Rectangle rectangle : rectangles) { + if (rectangle.getTopLeft().getX() < lowerLeftX) { + lowerLeftX = rectangle.getTopLeft().getX(); + } + if (rectangle.getTopLeft().getX() + rectangle.getWidth() > upperRightX) { + upperRightX = rectangle.getTopLeft().getX() + rectangle.getWidth(); + } + if (rectangle.getTopLeft().getY() + rectangle.getHeight() > lowerLeftY) { + lowerLeftY = rectangle.getTopLeft().getY() + rectangle.getHeight(); + } + if (rectangle.getTopLeft().getY() < upperRightY) { + upperRightY = rectangle.getTopLeft().getY(); + } + } PDRectangle annotationPosition = new PDRectangle(); - annotationPosition.setLowerLeftX(rectangle.getTopLeft().getX()); - annotationPosition.setLowerLeftY(rectangle.getTopLeft().getY() + rectangle.getHeight()); - annotationPosition.setUpperRightX(rectangle.getTopLeft().getX() + rectangle.getWidth()); - annotationPosition.setUpperRightY(rectangle.getTopLeft().getY()); + annotationPosition.setLowerLeftX(lowerLeftX); + annotationPosition.setLowerLeftY(lowerLeftY); + annotationPosition.setUpperRightX(upperRightX); + annotationPosition.setUpperRightY(upperRightY); return annotationPosition; }