@@ -43,8 +43,17 @@ This file is part of the iText (R) project.
43
43
package com .itextpdf .kernel .pdf ;
44
44
45
45
import com .itextpdf .io .source .ByteArrayOutputStream ;
46
+ import com .itextpdf .kernel .geom .Rectangle ;
47
+ import com .itextpdf .kernel .pdf .canvas .parser .EventType ;
48
+ import com .itextpdf .kernel .pdf .canvas .parser .PdfCanvasProcessor ;
49
+ import com .itextpdf .kernel .pdf .canvas .parser .data .IEventData ;
50
+ import com .itextpdf .kernel .pdf .canvas .parser .listener .IEventListener ;
51
+ import com .itextpdf .kernel .pdf .colorspace .PdfColorSpace ;
52
+ import com .itextpdf .kernel .pdf .colorspace .PdfSpecialCs ;
46
53
import com .itextpdf .test .ExtendedITextTest ;
47
54
import com .itextpdf .test .annotations .type .UnitTest ;
55
+
56
+ import java .util .Set ;
48
57
import org .junit .Assert ;
49
58
import org .junit .Test ;
50
59
import org .junit .experimental .categories .Category ;
@@ -226,4 +235,42 @@ public void testIndexOf2() {
226
235
Assert .assertEquals (i , array .indexOf (array2 .get (i )));
227
236
}
228
237
}
238
+
239
+ @ Test
240
+ public void pdfUncoloredPatternColorSize1Test () {
241
+ PdfDocument pdfDocument = new PdfDocument (new PdfWriter (new ByteArrayOutputStream ()));
242
+
243
+ String contentColorSpace = "/Cs1 cs\n " ;
244
+ PdfDictionary pageDictionary = (PdfDictionary ) new PdfDictionary ().makeIndirect (pdfDocument );
245
+ PdfStream contentStream = new PdfStream (contentColorSpace .getBytes ());
246
+ pageDictionary .put (PdfName .Contents , contentStream );
247
+
248
+ PdfPage page = pdfDocument .addNewPage ();
249
+ page .getPdfObject ().put (PdfName .Contents , contentStream );
250
+
251
+ PdfArray pdfArray = new PdfArray ();
252
+ pdfArray .add (PdfName .Pattern );
253
+ PdfColorSpace space = PdfColorSpace .makeColorSpace (pdfArray );
254
+ page .getResources ().addColorSpace (space );
255
+
256
+ Rectangle rectangle = new Rectangle (50 , 50 , 1000 , 1000 );
257
+ page .setMediaBox (rectangle );
258
+
259
+ PdfCanvasProcessor processor = new PdfCanvasProcessor (new NoOpListener ());
260
+ processor .processPageContent (page );
261
+
262
+ // Check if we reach the end of the test without failings together with verifying expected color space instance
263
+ Assert .assertTrue (processor .getGraphicsState ().getFillColor ().getColorSpace () instanceof PdfSpecialCs .Pattern );
264
+ }
265
+
266
+ private static class NoOpListener implements IEventListener {
267
+ @ Override
268
+ public void eventOccurred (IEventData data , EventType type ) {
269
+ }
270
+
271
+ @ Override
272
+ public Set <EventType > getSupportedEvents () {
273
+ return null ;
274
+ }
275
+ }
229
276
}
0 commit comments