From 84db91d74dabc82306911972a0ffface1bcdff3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Wed, 14 Jul 2021 17:03:22 +0200 Subject: [PATCH] RED-1813: Fixed to large images --- .../server/parsing/PDFLinesTextStripper.java | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) 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 45bcef6a..d35e51b9 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 @@ -189,18 +189,17 @@ public class PDFLinesTextStripper extends PDFTextStripper { COSName objectName = (COSName) arguments.get(0); PDXObject xobject = getResources().getXObject(objectName); if (xobject instanceof PDImageXObject) { - PDImageXObject pdfImage = (PDImageXObject) xobject; + PDImageXObject image = (PDImageXObject)xobject; - Rectangle2D imageBounds = calculateImagePosition(pdfImage); + Matrix ctmNew = getGraphicsState().getCurrentTransformationMatrix(); - Rectangle2D rect = new Rectangle2D.Float((float) imageBounds.getX(), (float) imageBounds.getY(), (float) imageBounds - .getWidth(), (float) imageBounds.getHeight()); + Rectangle2D rect = new Rectangle2D.Float(ctmNew.getTranslateX(), ctmNew.getTranslateY(), ctmNew.getScaleX(), ctmNew.getScaleY()); // Memory Hack - sofReference kills me - FieldUtils.writeField(pdfImage, "cachedImageSubsampling", -1, true); + FieldUtils.writeField(image, "cachedImageSubsampling", -1, true); if (rect.getHeight() > 2 && rect.getWidth() > 2) { - this.images.add(new PdfImage(pdfImage.getImage(), rect, pageNumber)); + this.images.add(new PdfImage(image.getImage(), rect, pageNumber)); } } } catch (Exception e) { @@ -209,21 +208,6 @@ public class PDFLinesTextStripper extends PDFTextStripper { } - private Rectangle2D calculateImagePosition(PDImageXObject pdfImage) throws IOException { - - Matrix ctm = getGraphicsState().getCurrentTransformationMatrix(); - - Rectangle2D imageBounds = pdfImage.getImage().getRaster().getBounds(); - - AffineTransform imageTransform = new AffineTransform(ctm.createAffineTransform()); - imageTransform.scale(1.0 / pdfImage.getWidth(), -1.0 / pdfImage.getHeight()); - imageTransform.translate(0, -pdfImage.getHeight()); - - AffineTransform pageTransform = new AffineTransform(); - pageTransform.concatenate(imageTransform); - - return pageTransform.createTransformedShape(imageBounds).getBounds2D(); - } private float floatValue(COSBase value) {