Author: tilman
Date: Wed Dec 10 11:29:48 2025
New Revision: 1930425
Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov, closes #368
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Wed Dec 10 11:29:43 2025 (r1930424)
+++
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Wed Dec 10 11:29:48 2025 (r1930425)
@@ -683,12 +683,13 @@ public class PageDrawer extends PDFGraph
return parentPaint;
}
PDColor backdropColor = null;
- if (COSName.LUMINOSITY.equals(softMask.getSubType()))
+ COSName subType = softMask.getSubType();
+ PDTransparencyGroup form = softMask.getGroup();
+ if (COSName.LUMINOSITY.equals(subType))
{
COSArray backdropColorArray = softMask.getBackdropColor();
if (backdropColorArray != null)
{
- PDTransparencyGroup form = softMask.getGroup();
PDColorSpace colorSpace =
form.getGroup().getColorSpace(form.getResources());
if (colorSpace != null &&
colorSpace.getNumberOfComponents() ==
backdropColorArray.size()) // PDFBOX-5795
@@ -697,7 +698,7 @@ public class PageDrawer extends PDFGraph
}
}
}
- TransparencyGroup transparencyGroup = new
TransparencyGroup(softMask.getGroup(), true,
+ TransparencyGroup transparencyGroup = new TransparencyGroup(form,
true,
softMask.getInitialTransformationMatrix(), backdropColor);
BufferedImage image = transparencyGroup.getImage();
if (image == null)
@@ -707,11 +708,11 @@ public class PageDrawer extends PDFGraph
return parentPaint;
}
BufferedImage gray = new BufferedImage(image.getWidth(),
image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
- if (COSName.ALPHA.equals(softMask.getSubType()))
+ if (COSName.ALPHA.equals(subType))
{
gray.setData(image.getAlphaRaster());
}
- else if (COSName.LUMINOSITY.equals(softMask.getSubType()))
+ else if (COSName.LUMINOSITY.equals(subType))
{
Graphics g = gray.getGraphics();
g.drawImage(image, 0, 0, null);
@@ -719,7 +720,7 @@ public class PageDrawer extends PDFGraph
}
else
{
- throw new IOException("Invalid soft mask subtype.");
+ throw new IOException("Invalid soft mask subtype: " + subType);
}
gray = adjustImage(gray);
Rectangle2D tpgBounds = transparencyGroup.getBounds();