From ba0cde241fd11ed6fe0bd623561470a108e1b89f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Tue, 20 Jul 2021 10:01:49 +0200 Subject: [PATCH] RED-1813: Added imageHasTransparency to redaction log --- .../red/service/redaction/v1/model/RedactionLogEntry.java | 1 + .../redaction/v1/server/parsing/PDFLinesTextStripper.java | 3 +-- .../service/redaction/v1/server/redaction/model/Image.java | 1 + .../service/redaction/v1/server/redaction/model/PdfImage.java | 4 +++- .../v1/server/redaction/service/EntityRedactionService.java | 1 + .../v1/server/redaction/service/ReanalyzeService.java | 1 + .../server/redaction/service/RedactionLogCreatorService.java | 1 + .../redaction/v1/server/segmentation/ImageMergeService.java | 2 +- 8 files changed, 10 insertions(+), 4 deletions(-) diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java index e347f0b3..e837ddf9 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java @@ -46,6 +46,7 @@ public class RedactionLogEntry { private int endOffset; private boolean isImage; + private boolean imageHasTransparency; private boolean isDossierDictionaryEntry; diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/PDFLinesTextStripper.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/PDFLinesTextStripper.java index d35e51b9..d3f6f2a0 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/PDFLinesTextStripper.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/parsing/PDFLinesTextStripper.java @@ -190,7 +190,6 @@ public class PDFLinesTextStripper extends PDFTextStripper { PDXObject xobject = getResources().getXObject(objectName); if (xobject instanceof PDImageXObject) { PDImageXObject image = (PDImageXObject)xobject; - Matrix ctmNew = getGraphicsState().getCurrentTransformationMatrix(); Rectangle2D rect = new Rectangle2D.Float(ctmNew.getTranslateX(), ctmNew.getTranslateY(), ctmNew.getScaleX(), ctmNew.getScaleY()); @@ -199,7 +198,7 @@ public class PDFLinesTextStripper extends PDFTextStripper { FieldUtils.writeField(image, "cachedImageSubsampling", -1, true); if (rect.getHeight() > 2 && rect.getWidth() > 2) { - this.images.add(new PdfImage(image.getImage(), rect, pageNumber)); + this.images.add(new PdfImage(image.getImage(), rect, pageNumber, image.getImage().getColorModel().hasAlpha())); } } } catch (Exception e) { diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Image.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Image.java index 5aab9c7a..63d382d5 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Image.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Image.java @@ -20,5 +20,6 @@ public class Image implements ReasonHolder { private int sectionNumber; private String section; private int page; + private boolean hasTransparency; } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfImage.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfImage.java index 1631717f..dbb390c0 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfImage.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/PdfImage.java @@ -18,14 +18,16 @@ public class PdfImage { private RedRectangle2D position; private ImageType imageType; private boolean isAppendedToParagraph; + private boolean hasTransparency; @NonNull private int page; - public PdfImage(BufferedImage image, Rectangle2D position, int page) { + public PdfImage(BufferedImage image, Rectangle2D position, int page, boolean hasTransparency) { this.image = image; this.position = new RedRectangle2D(position.getX(), position.getY(), position.getWidth(), position.getHeight()); this.page = page; + this.hasTransparency = hasTransparency; } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java index 2a26bfec..389b7186 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java @@ -426,6 +426,7 @@ public class EntityRedactionService { .sectionNumber(sectionNumber) .section(headline) .page(pdfImage.getPage()) + .hasTransparency(pdfImage.isHasTransparency()) .build(); String imageId = IdBuilder.buildId(image.getPosition(), image.getPage()); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/ReanalyzeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/ReanalyzeService.java index 91f7398d..fa3f388c 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/ReanalyzeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/ReanalyzeService.java @@ -338,6 +338,7 @@ public class ReanalyzeService { .sectionNumber(entry.getSectionNumber()) .section(entry.getSection()) .page(position.getPage()) + .hasTransparency(entry.isImageHasTransparency()) .build(); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java index 18e23420..885326c9 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java @@ -83,6 +83,7 @@ public class RedactionLogCreatorService { .getWidth(), (float) image.getPosition().getHeight(), pageNumber))) .sectionNumber(image.getSectionNumber()) .section(image.getSection()) + .imageHasTransparency(image.isHasTransparency()) .build(); processImageEntry(manualRedactions, dossierTemplateId, image, redactionLogEntry); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/ImageMergeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/ImageMergeService.java index 73a94909..4c58bcd8 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/ImageMergeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/segmentation/ImageMergeService.java @@ -118,7 +118,7 @@ public class ImageMergeService { //set position for merged image with values of image1 and the height of both Rectangle2D pos = new Rectangle2D.Float(); pos.setRect(image1.getPosition().getX(), image2.getPosition().getY(), rotation == 90 ? width + width2: width, rotation == 90 ? height1 : height1 + height2); - PdfImage newPdfImage = new PdfImage(mergedImage, pos, image1.getPage()); + PdfImage newPdfImage = new PdfImage(mergedImage, pos, image1.getPage(), image1.isHasTransparency() || image2.isHasTransparency()); // Graphics need to be disposed image1.getImage().flush();