diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java index 43501949..330c9c15 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/model/TextPositionSequence.java @@ -34,6 +34,7 @@ public class TextPositionSequence implements CharSequence { private float x1; private float x2; + public TextPositionSequence(int page) { this.page = page; @@ -261,7 +262,8 @@ public class TextPositionSequence implements CharSequence { @JsonAttribute(ignore = true) public Rectangle getRectangle() { - log.debug("Page: '{}', Word: '{}', Rotation: '{}', textRotation {}", page, toString(), textPositions.get(0).getRotation(), textPositions.get(0).getDir()); + log.debug("Page: '{}', Word: '{}', Rotation: '{}', textRotation {}", page, toString(), textPositions.get(0) + .getRotation(), textPositions.get(0).getDir()); float height = getTextHeight(); @@ -270,26 +272,24 @@ public class TextPositionSequence implements CharSequence { float posYInit; float posYEnd; - if (textPositions.get(0).getRotation() == 90 && textPositions.get(0).getDir() != 0.0f) { - posXEnd = textPositions.get(0).getYDirAdj() + 2; - posYInit = getY1(); - posYEnd = textPositions.get(textPositions.size() - 1).getXDirAdj() - height + 4; + if (textPositions.get(0).getRotation() == 0 && textPositions.get(0).getDir() == 90f) { - } else if (textPositions.get(0).getRotation() == 270 && textPositions.get(0).getDir() == 270.0f) { - posYInit = textPositions.get(0).getPageHeight() - getX1(); - posYEnd = textPositions.get(0).getPageHeight() - getX2() - textPositions.get(0) - .getWidth() - textPositions.get(textPositions.size() - 1).getWidth() - 1; - posXInit = textPositions.get(0).getPageWidth() - textPositions.get(0).getYDirAdj() - 2; - posXEnd = textPositions.get(0).getPageWidth() - textPositions.get(textPositions.size() - 1) - .getYDirAdj() + height; + posYInit = getX1(); + posYEnd = getX2() + textPositions.get(0).getWidthDirAdj() - textPositions.get(textPositions.size() - 1) + .getWidthDirAdj() - 3; + posXInit = textPositions.get(0).getYDirAdj() + 2; + posXEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height; - } else if (textPositions.get(0).getRotation() == 270 && textPositions.get(0).getDir() == 0.0f) { - posYInit = textPositions.get(0).getPageHeight() - textPositions.get(0).getYDirAdj() - 2; - posYEnd = posYInit + 1; - posXInit = textPositions.get(0).getXDirAdj(); - posXEnd = textPositions.get(textPositions.size() - 1).getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 0.1f; + } else if (textPositions.get(0).getRotation() == 0 && textPositions.get(0).getDir() == 180f) { + + posXInit = textPositions.get(0).getPageWidth() - getX1() + 1; + posXEnd = textPositions.get(0).getPageWidth() - getX2() + textPositions.get(0) + .getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj() - 3; + posYInit = textPositions.get(0).getYDirAdj() - height + 2; + posYEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height + 2; } else if (textPositions.get(0).getRotation() == 0 && textPositions.get(0).getDir() == 270f) { + posYInit = textPositions.get(0).getPageHeight() - getX1(); posYEnd = textPositions.get(0).getPageHeight() - getX2() - textPositions.get(0) .getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj() - 3; @@ -298,6 +298,7 @@ public class TextPositionSequence implements CharSequence { .getYDirAdj() + height; } else if (textPositions.get(0).getRotation() == 90 && textPositions.get(0).getDir() == 0.0f) { + posXInit = textPositions.get(textPositions.size() - 1) .getXDirAdj() + textPositions.get(textPositions.size() - 1).getHeightDir(); posXEnd = textPositions.get(0).getXDirAdj(); @@ -305,30 +306,93 @@ public class TextPositionSequence implements CharSequence { posYEnd = textPositions.get(0).getPageHeight() - textPositions.get(textPositions.size() - 1) .getYDirAdj() + 2; - } else if (textPositions.get(0).getRotation() == 0 && textPositions.get(0).getDir() == 90f) { + } else if (textPositions.get(0).getRotation() == 90 && textPositions.get(0).getDir() == 90.0f) { + posXEnd = textPositions.get(0).getYDirAdj() + 2; + posYInit = getY1(); + posYEnd = textPositions.get(textPositions.size() - 1).getXDirAdj() - height + 4; + + } else if (textPositions.get(0).getRotation() == 90 && textPositions.get(0).getDir() == 180.0f) { + + posXInit = textPositions.get(0).getPageWidth() - textPositions.get(textPositions.size() - 1) + .getXDirAdj() - 4; + posXEnd = textPositions.get(0).getPageWidth() - textPositions.get(0).getXDirAdj(); + posYInit = textPositions.get(0).getYDirAdj() - 2 - textPositions.get(textPositions.size() - 1) + .getHeightDir(); + posYEnd = textPositions.get(textPositions.size() - 1) + .getYDirAdj() - textPositions.get(textPositions.size() - 1).getHeightDir(); + + } else if (textPositions.get(0).getRotation() == 90 && textPositions.get(0).getDir() == 270.0f) { + + posXInit = textPositions.get(0).getPageWidth() - getX1(); + posXEnd = textPositions.get(0).getPageWidth() - textPositions.get(0).getYDirAdj() - 2; + posYInit = textPositions.get(0).getPageHeight() - getY1(); + posYEnd = textPositions.get(0).getPageHeight() - textPositions.get(textPositions.size() - 1) + .getXDirAdj() - height - 4; + + } else if (textPositions.get(0).getRotation() == 180 && textPositions.get(0).getDir() == 0f) { + + posXEnd = textPositions.get(textPositions.size() - 1) + .getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 1; + posYInit = textPositions.get(0).getPageHeight() - textPositions.get(0).getYDirAdj() - 2; + posYEnd = textPositions.get(0).getPageHeight() - textPositions.get(textPositions.size() - 1) + .getYDirAdj() + 2; + + } else if (textPositions.get(0).getRotation() == 180 && textPositions.get(0).getDir() == 90f) { + posYInit = getX1(); - posYEnd = getX2() + textPositions.get(0).getWidthDirAdj() - textPositions.get(textPositions.size() - 1) - .getWidthDirAdj() - 3; + posYEnd = getX2() - 3; posXInit = textPositions.get(0).getYDirAdj() + 2; posXEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height; } else if (textPositions.get(0).getRotation() == 180 && textPositions.get(0).getDir() == 180f) { - posXInit = textPositions.get(0).getPageWidth() - getX1() + 1; - posXEnd = textPositions.get(0).getPageWidth() - getX2() + textPositions.get(0).getWidthDirAdj() - textPositions.get(textPositions.size() - 1) - .getWidthDirAdj() - 3; - posYInit = textPositions.get(0).getYDirAdj() - height + 2; - posYEnd = textPositions.get(textPositions.size() - 1) - .getYDirAdj() - height + 2; - } else if (textPositions.get(0).getRotation() == 0 && textPositions.get(0).getDir() == 180f) { posXInit = textPositions.get(0).getPageWidth() - getX1() + 1; - posXEnd = textPositions.get(0).getPageWidth() - getX2() + textPositions.get(0).getWidthDirAdj() - textPositions.get(textPositions.size() - 1) - .getWidthDirAdj() - 3; + posXEnd = textPositions.get(0).getPageWidth() - getX2() + textPositions.get(0) + .getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj() - 3; posYInit = textPositions.get(0).getYDirAdj() - height + 2; - posYEnd = textPositions.get(textPositions.size() - 1) - .getYDirAdj() - height + 2; + posYEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height + 2; + + } else if (textPositions.get(0).getRotation() == 180 && textPositions.get(0).getDir() == 270.0f) { + + posYInit = textPositions.get(0).getPageHeight() - getX1(); + posYEnd = textPositions.get(0).getPageHeight() - getX2() - textPositions.get(0) + .getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj(); + posXInit = textPositions.get(0).getPageWidth() - textPositions.get(0).getYDirAdj() - 2; + posXEnd = textPositions.get(0).getPageWidth() - textPositions.get(textPositions.size() - 1) + .getYDirAdj() + height; + + } else if (textPositions.get(0).getRotation() == 270 && textPositions.get(0).getDir() == 0.0f) { + + posYInit = textPositions.get(0).getPageHeight() - textPositions.get(0).getYDirAdj() - 2; + posYEnd = posYInit + 1; + posXInit = textPositions.get(0).getXDirAdj(); + posXEnd = textPositions.get(textPositions.size() - 1) + .getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 0.1f; + + } else if (textPositions.get(0).getRotation() == 270 && textPositions.get(0).getDir() == 90.0f) { + + posYInit = getX1(); + posYEnd = getX2() - height; + posXInit = textPositions.get(0).getYDirAdj() + 2; + posXEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height; + + } else if (textPositions.get(0).getRotation() == 270 && textPositions.get(0).getDir() == 180.0f) { + + posXInit = textPositions.get(0).getPageWidth() - getX1() + 1; + posXEnd = textPositions.get(0).getPageWidth() - getX2() - 4; + posYInit = textPositions.get(0).getYDirAdj() - height + 2; + posYEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height + 2; + + } else if (textPositions.get(0).getRotation() == 270 && textPositions.get(0).getDir() == 270.0f) { + + posYInit = textPositions.get(0).getPageHeight() - getX1(); + posYEnd = textPositions.get(0).getPageHeight() - getX2() - height; + posXInit = textPositions.get(0).getPageWidth() - textPositions.get(0).getYDirAdj() - 2; + posXEnd = textPositions.get(0).getPageWidth() - textPositions.get(textPositions.size() - 1) + .getYDirAdj() + height; } else { + // page rotation = 0 and text direction = 0 posXEnd = textPositions.get(textPositions.size() - 1) .getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 1; posYInit = textPositions.get(0).getPageHeight() - textPositions.get(0).getYDirAdj() - 2; diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java index eb5a0691..54962f1e 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java @@ -813,7 +813,7 @@ public class RedactionIntegrationTest { System.out.println("testTableRedaction"); long start = System.currentTimeMillis(); - AnalyzeRequest request = prepareStorage("files/new/RotateTestfile.pdf"); + AnalyzeRequest request = prepareStorage("files/new/RotateTestFile.pdf"); analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); AnalyzeResult result = analyzeService.analyze(request); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/annotate/AnnotationService.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/annotate/AnnotationService.java index 087f545e..e40ad85b 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/annotate/AnnotationService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/annotate/AnnotationService.java @@ -118,7 +118,7 @@ public class AnnotationService { annotation.setRectangle(pdRectangle); annotation.setQuadPoints(toQuadPoints(rectangles, mediaBox, cropBox)); if (!redactionLogEntry.isHint()) { - annotation.setContents(createAnnotationContent(redactionLogEntry)); + annotation.setContents(redactionLogEntry.getValue() + " " +createAnnotationContent(redactionLogEntry)); } annotation.setTitlePopup(redactionLogEntry.getId()); annotation.setAnnotationName(redactionLogEntry.getId()); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestFile.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestFile.pdf new file mode 100644 index 00000000..464e87d6 Binary files /dev/null and b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestFile.pdf differ diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestfile.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestfile.pdf deleted file mode 100644 index 1848dc38..00000000 Binary files a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/RotateTestfile.pdf and /dev/null differ