1 31 package org.pdfbox.util.operator; 32 33 import java.util.List ; 34 import java.util.Map ; 35 36 import org.pdfbox.cos.COSName; 37 import org.pdfbox.pdmodel.graphics.color.PDColorSpace; 38 import org.pdfbox.pdmodel.graphics.color.PDColorSpaceFactory; 39 import org.pdfbox.pdmodel.graphics.color.PDColorSpaceInstance; 40 import org.pdfbox.pdmodel.graphics.color.PDDeviceCMYK; 41 import org.pdfbox.util.PDFOperator; 42 43 import java.io.IOException ; 44 45 51 public class SetNonStrokingColorSpace extends OperatorProcessor 52 { 53 private static final float[] EMPTY_FLOAT_ARRAY = new float[0]; 54 55 61 public void process(PDFOperator operator, List arguments) throws IOException 62 { 63 COSName name = (COSName)arguments.get( 0 ); 65 PDColorSpace cs = null; 66 Map colorSpaces = context.getColorSpaces(); 67 if( colorSpaces != null ) 68 { 69 cs = (PDColorSpace)colorSpaces.get( name.getName() ); 70 } 71 if( cs == null ) 72 { 73 cs = PDColorSpaceFactory.createColorSpace( name ); 74 } 75 PDColorSpaceInstance colorInstance = context.getGraphicsState().getNonStrokingColorSpace(); 76 colorInstance.setColorSpace( cs ); 77 int numComponents = cs.getNumberOfComponents(); 78 float[] values = EMPTY_FLOAT_ARRAY; 79 if( numComponents >= 0 ) 80 { 81 values = new float[numComponents]; 82 for( int i=0; i<numComponents; i++ ) 83 { 84 values[i] = 0f; 85 } 86 if( cs instanceof PDDeviceCMYK ) 87 { 88 values[3] = 1f; 89 } 90 } 91 colorInstance.setColorSpaceValue( values ); 92 } 93 } 94 | Popular Tags |