From 247e57208a25251a347332c5ece85759e113bcc3 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 1 Oct 2020 15:04:51 +0200 Subject: [PATCH] Fixed multiline annotations --- .../service/AnnotationHighlightService.java | 33 +++++++++++++++---- 1 file changed, 27 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..bed9049c 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,34 @@ public class AnnotationHighlightService { } - private PDRectangle toPDRectangle(Rectangle rectangle) { + private PDRectangle toPDRectangle(List rectangles) { + + + float x1 = Float.MAX_VALUE; + float x2 = 0; + float y1 = 0; + float y2 = Float.MAX_VALUE; + + for(Rectangle rectangle : rectangles){ + if (rectangle.getTopLeft().getX() < x1){ + x1 = rectangle.getTopLeft().getX(); + } + if(rectangle.getTopLeft().getX() + rectangle.getWidth() > x2){ + x2 = rectangle.getTopLeft().getX() + rectangle.getWidth(); + } + if(rectangle.getTopLeft().getY() + rectangle.getHeight() > y1){ + y1 = rectangle.getTopLeft().getY() + rectangle.getHeight(); + } + if(rectangle.getTopLeft().getY() < y2){ + y2 = 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(x1); + annotationPosition.setLowerLeftY(y1); + annotationPosition.setUpperRightX(x2); + annotationPosition.setUpperRightY(y2); return annotationPosition; }