📄 pdpagecontentstream.java
字号:
private void writeColorSpace( PDColorSpace colorSpace ) throws IOException
{
COSName key = null;
if( colorSpace instanceof PDDeviceGray ||
colorSpace instanceof PDDeviceRGB ||
colorSpace instanceof PDDeviceCMYK )
{
key = COSName.getPDFName( colorSpace.getName() );
}
else
{
COSDictionary colorSpaces =
(COSDictionary)resources.getCOSDictionary().getDictionaryObject(COSName.COLORSPACE);
if( colorSpaces == null )
{
colorSpaces = new COSDictionary();
resources.getCOSDictionary().setItem( COSName.COLORSPACE, colorSpaces );
}
key = colorSpaces.getKeyForValue( colorSpace.getCOSObject() );
if( key == null )
{
int counter = 0;
String csName = "CS";
while( colorSpaces.containsValue( csName + counter ) )
{
counter++;
}
key = COSName.getPDFName( csName + counter );
colorSpaces.setItem( key, colorSpace );
}
}
key.writePDF( output );
appendRawCommands( SPACE );
}
/**
* Set the color components of current stroking colorspace.
*
* @param components The components to set for the current color.
* @throws IOException If there is an error while writing to the stream.
*/
public void setStrokingColor( float[] components ) throws IOException
{
for( int i=0; i< components.length; i++ )
{
appendRawCommands( formatDecimal.format( components[i] ) );
appendRawCommands( SPACE );
}
if( currentStrokingColorSpace instanceof PDSeparation ||
currentStrokingColorSpace instanceof PDPattern ||
currentStrokingColorSpace instanceof PDDeviceN ||
currentStrokingColorSpace instanceof PDICCBased )
{
appendRawCommands( SET_STROKING_COLOR_COMPLEX );
}
else
{
appendRawCommands( SET_STROKING_COLOR_SIMPLE );
}
}
/**
* Set the stroking color, specified as RGB.
*
* @param color The color to set.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setStrokingColor( Color color ) throws IOException
{
ColorSpace colorSpace = color.getColorSpace();
if( colorSpace.getType() == ColorSpace.TYPE_RGB )
{
setStrokingColor( color.getRed(), color.getGreen(), color.getBlue() );
}
else if( colorSpace.getType() == ColorSpace.TYPE_GRAY )
{
color.getColorComponents( colorComponents );
setStrokingColor( colorComponents[0] );
}
else if( colorSpace.getType() == ColorSpace.TYPE_CMYK )
{
color.getColorComponents( colorComponents );
setStrokingColor( colorComponents[0], colorComponents[2], colorComponents[2], colorComponents[3] );
}
else
{
throw new IOException( "Error: unknown colorspace:" + colorSpace );
}
}
/**
* Set the non stroking color, specified as RGB.
*
* @param color The color to set.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setNonStrokingColor( Color color ) throws IOException
{
ColorSpace colorSpace = color.getColorSpace();
if( colorSpace.getType() == ColorSpace.TYPE_RGB )
{
setNonStrokingColor( color.getRed(), color.getGreen(), color.getBlue() );
}
else if( colorSpace.getType() == ColorSpace.TYPE_GRAY )
{
color.getColorComponents( colorComponents );
setNonStrokingColor( colorComponents[0] );
}
else if( colorSpace.getType() == ColorSpace.TYPE_CMYK )
{
color.getColorComponents( colorComponents );
setNonStrokingColor( colorComponents[0], colorComponents[2], colorComponents[2], colorComponents[3] );
}
else
{
throw new IOException( "Error: unknown colorspace:" + colorSpace );
}
}
/**
* Set the stroking color, specified as RGB, 0-255.
*
* @param r The red value.
* @param g The green value.
* @param b The blue value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setStrokingColor( int r, int g, int b ) throws IOException
{
appendRawCommands( formatDecimal.format( r/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( g/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( b/255d ) );
appendRawCommands( SPACE );
appendRawCommands( RG_STROKING );
}
/**
* Set the stroking color, specified as CMYK, 0-255.
*
* @param c The cyan value.
* @param m The magenta value.
* @param y The yellow value.
* @param k The black value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setStrokingColor( int c, int m, int y, int k) throws IOException
{
appendRawCommands( formatDecimal.format( c/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( m/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( y/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( k/255d ) );
appendRawCommands( SPACE );
appendRawCommands( K_STROKING );
}
/**
* Set the stroking color, specified as CMYK, 0.0-1.0.
*
* @param c The cyan value.
* @param m The magenta value.
* @param y The yellow value.
* @param k The black value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setStrokingColor( double c, double m, double y, double k) throws IOException
{
appendRawCommands( formatDecimal.format( c ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( m ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( y ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( k ) );
appendRawCommands( SPACE );
appendRawCommands( K_STROKING );
}
/**
* Set the stroking color, specified as grayscale, 0-255.
*
* @param g The gray value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setStrokingColor( int g ) throws IOException
{
appendRawCommands( formatDecimal.format( g/255d ) );
appendRawCommands( SPACE );
appendRawCommands( G_STROKING );
}
/**
* Set the stroking color, specified as Grayscale 0.0-1.0.
*
* @param g The gray value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setStrokingColor( double g ) throws IOException
{
appendRawCommands( formatDecimal.format( g ) );
appendRawCommands( SPACE );
appendRawCommands( G_STROKING );
}
/**
* Set the color components of current non stroking colorspace.
*
* @param components The components to set for the current color.
* @throws IOException If there is an error while writing to the stream.
*/
public void setNonStrokingColor( float[] components ) throws IOException
{
for( int i=0; i< components.length; i++ )
{
appendRawCommands( formatDecimal.format( components[i] ) );
appendRawCommands( SPACE );
}
if( currentNonStrokingColorSpace instanceof PDSeparation ||
currentNonStrokingColorSpace instanceof PDPattern ||
currentNonStrokingColorSpace instanceof PDDeviceN ||
currentNonStrokingColorSpace instanceof PDICCBased )
{
appendRawCommands( SET_NON_STROKING_COLOR_COMPLEX );
}
else
{
appendRawCommands( SET_NON_STROKING_COLOR_SIMPLE );
}
}
/**
* Set the non stroking color, specified as RGB, 0-255.
*
* @param r The red value.
* @param g The green value.
* @param b The blue value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setNonStrokingColor( int r, int g, int b ) throws IOException
{
appendRawCommands( formatDecimal.format( r/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( g/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( b/255d ) );
appendRawCommands( SPACE );
appendRawCommands( RG_NON_STROKING );
}
/**
* Set the non stroking color, specified as CMYK, 0-255.
*
* @param c The cyan value.
* @param m The magenta value.
* @param y The yellow value.
* @param k The black value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setNonStrokingColor( int c, int m, int y, int k) throws IOException
{
appendRawCommands( formatDecimal.format( c/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( m/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( y/255d ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( k/255d ) );
appendRawCommands( SPACE );
appendRawCommands( K_NON_STROKING );
}
/**
* Set the non stroking color, specified as CMYK, 0.0-1.0.
*
* @param c The cyan value.
* @param m The magenta value.
* @param y The yellow value.
* @param k The black value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setNonStrokingColor( double c, double m, double y, double k) throws IOException
{
appendRawCommands( formatDecimal.format( c ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( m ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( y ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( k ) );
appendRawCommands( SPACE );
appendRawCommands( K_NON_STROKING );
}
/**
* Set the non stroking color, specified as grayscale, 0-255.
*
* @param g The gray value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setNonStrokingColor( int g ) throws IOException
{
appendRawCommands( formatDecimal.format( g/255d ) );
appendRawCommands( SPACE );
appendRawCommands( G_NON_STROKING );
}
/**
* Set the non stroking color, specified as Grayscale 0.0-1.0.
*
* @param g The gray value.
* @throws IOException If an IO error occurs while writing to the stream.
*/
public void setNonStrokingColor( double g ) throws IOException
{
appendRawCommands( formatDecimal.format( g ) );
appendRawCommands( SPACE );
appendRawCommands( G_NON_STROKING );
}
/**
* Draw a rectangle on the page using the current non stroking color.
*
* @param x The lower left x coordinate.
* @param y The lower left y coordinate.
* @param width The width of the rectangle.
* @param height The height of the rectangle.
* @throws IOException If there is an error while drawing on the screen.
*/
public void fillRect( float x, float y, float width, float height ) throws IOException
{
appendRawCommands( formatDecimal.format( x ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( y ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( width ) );
appendRawCommands( SPACE );
appendRawCommands( formatDecimal.format( height ) );
appendRawCommands( SPACE );
appendRawCommands( APPEND_RECTANGLE );
appendRawCommands( FILL );
}
/**
* This will append raw commands to the content stream.
*
* @param commands The commands to append to the stream.
* @throws IOException If an error occurs while writing to the stream.
*/
public void appendRawCommands( String commands ) throws IOException
{
appendRawCommands( commands.getBytes( "ISO-8859-1" ) );
}
/**
* This will append raw commands to the content stream.
*
* @param commands The commands to append to the stream.
* @throws IOException If an error occurs while writing to the stream.
*/
public void appendRawCommands( byte[] commands ) throws IOException
{
output.write( commands );
}
/**
* This will append raw commands to the content stream.
*
* @param data Append a raw byte to the stream.
*
* @throws IOException If an error occurs while writing to the stream.
*/
public void appendRawCommands( int data ) throws IOException
{
output.write( data );
}
/**
* Close the content stream. This must be called when you are done with this
* object.
* @throws IOException If the underlying stream has a problem being written to.
*/
public void close() throws IOException
{
output.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -