RED-1813: Fixed to large images
This commit is contained in:
parent
a1926a4055
commit
84db91d74d
@ -189,18 +189,17 @@ public class PDFLinesTextStripper extends PDFTextStripper {
|
|||||||
COSName objectName = (COSName) arguments.get(0);
|
COSName objectName = (COSName) arguments.get(0);
|
||||||
PDXObject xobject = getResources().getXObject(objectName);
|
PDXObject xobject = getResources().getXObject(objectName);
|
||||||
if (xobject instanceof PDImageXObject) {
|
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
|
Rectangle2D rect = new Rectangle2D.Float(ctmNew.getTranslateX(), ctmNew.getTranslateY(), ctmNew.getScaleX(), ctmNew.getScaleY());
|
||||||
.getWidth(), (float) imageBounds.getHeight());
|
|
||||||
|
|
||||||
// Memory Hack - sofReference kills me
|
// Memory Hack - sofReference kills me
|
||||||
FieldUtils.writeField(pdfImage, "cachedImageSubsampling", -1, true);
|
FieldUtils.writeField(image, "cachedImageSubsampling", -1, true);
|
||||||
|
|
||||||
if (rect.getHeight() > 2 && rect.getWidth() > 2) {
|
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) {
|
} 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) {
|
private float floatValue(COSBase value) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user