Author: tilman
Date: Tue Oct 7 12:16:15 2025
New Revision: 1929000
Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov; closes #277
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Tue Oct 7 12:16:11 2025 (r1928999)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Tue Oct 7 12:16:15 2025 (r1929000)
@@ -104,6 +104,7 @@ import org.apache.pdfbox.pdmodel.interac
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationUnknown;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceEntry;
import org.apache.pdfbox.util.Matrix;
import org.apache.pdfbox.util.Vector;
@@ -1559,14 +1560,17 @@ public class PageDrawer extends PDFGraph
if (annotation.isNoRotate() && getCurrentPage().getRotation() != 0)
{
appearance = annotation.getAppearance();
- if (appearance != null && appearance.getNormalAppearance() != null
&&
- appearance.getNormalAppearance().isStream() &&
-
hasTransparency(appearance.getNormalAppearance().getAppearanceStream()))
- {
- // PDFBOX-4744: avoid appearances with transparency groups
until we have fixed
- // the rendering. A real solution should probably be
- // in PDFStreamEngine.processAnnotation().
- annotation.constructAppearances();
+ if (appearance != null)
+ {
+ PDAppearanceEntry appearanceEntry =
appearance.getNormalAppearance();
+ if (appearanceEntry != null && appearanceEntry.isStream() &&
+ hasTransparency(appearanceEntry.getAppearanceStream()))
+ {
+ // PDFBOX-4744: avoid appearances with transparency groups
until we have fixed
+ // the rendering. A real solution should probably be
+ // in PDFStreamEngine.processAnnotation().
+ annotation.constructAppearances();
+ }
}
PDRectangle rect = annotation.getRectangle();
AffineTransform savedTransform = graphics.getTransform();