@@ -70,6 +70,8 @@ This file is part of the iText (R) project.
70
70
import java .nio .file .Paths ;
71
71
import java .util .ArrayList ;
72
72
import java .util .List ;
73
+ import java .util .Map ;
74
+ import java .util .HashMap ;
73
75
import org .junit .Assert ;
74
76
import org .junit .Ignore ;
75
77
import org .junit .Rule ;
@@ -108,6 +110,34 @@ public void contentStreamProcessorTest() throws IOException {
108
110
Assert .assertEquals (expectedPageEventsLog , pageEventsLog .toString ());
109
111
}
110
112
113
+ @ Test
114
+ public void processGraphicsStateResourceOperatorFillOpacityTest () throws IOException {
115
+ PdfDocument document = new PdfDocument (new PdfReader (sourceFolder + "transparentText.pdf" ));
116
+ Float expOpacity = 0.5f ;
117
+
118
+ Map <String , Object > textRenderInfo = new HashMap <>();
119
+ for (int i = 1 ; i <= document .getNumberOfPages (); ++i ) {
120
+ PdfPage page = document .getPage (i );
121
+ PdfCanvasProcessor processor = new PdfCanvasProcessor (new RecordEveryTextRenderEvent (textRenderInfo ));
122
+ processor .processPageContent (page );
123
+ }
124
+ Assert .assertEquals ("Expected fill opacity not found" , expOpacity , textRenderInfo .get ("FillOpacity" ));
125
+ }
126
+
127
+ @ Test
128
+ public void processGraphicsStateResourceOperatorStrokeOpacityTest () throws IOException {
129
+ PdfDocument document = new PdfDocument (new PdfReader (sourceFolder + "hiddenText.pdf" ));
130
+ Float expOpacity = 0.0f ;
131
+
132
+ Map <String , Object > textRenderInfo = new HashMap <>();
133
+ for (int i = 1 ; i <= document .getNumberOfPages (); ++i ) {
134
+ PdfPage page = document .getPage (i );
135
+ PdfCanvasProcessor processor = new PdfCanvasProcessor (new RecordEveryTextRenderEvent (textRenderInfo ));
136
+ processor .processPageContent (page );
137
+ }
138
+ Assert .assertEquals ("Expected stroke opacity not found" , expOpacity , textRenderInfo .get ("StrokeOpacity" ));
139
+ }
140
+
111
141
@ Test
112
142
public void testClosingEmptyPath () throws IOException {
113
143
String fileName = "closingEmptyPath.pdf" ;
@@ -301,4 +331,25 @@ public Set<EventType> getSupportedEvents() {
301
331
return null ;
302
332
}
303
333
}
334
+
335
+ private static class RecordEveryTextRenderEvent implements IEventListener {
336
+ private Map <String , Object > map ;
337
+
338
+ RecordEveryTextRenderEvent (Map <String , Object > map ) {
339
+ this .map = map ;
340
+ }
341
+
342
+ public void eventOccurred (IEventData data , EventType type ) {
343
+ if (data instanceof TextRenderInfo ) {
344
+ TextRenderInfo renderInfo = (TextRenderInfo ) data ;
345
+ map .put ("String" , renderInfo .getPdfString ().toUnicodeString ());
346
+ map .put ("FillOpacity" , renderInfo .getGraphicsState ().getFillOpacity ());
347
+ map .put ("StrokeOpacity" , renderInfo .getGraphicsState ().getStrokeOpacity ());
348
+ }
349
+ }
350
+
351
+ public Set <EventType > getSupportedEvents () {
352
+ return null ;
353
+ }
354
+ }
304
355
}
0 commit comments