Package org.apache.pdfbox.pdmodel
Class PDAbstractContentStream
- java.lang.Object
-
- org.apache.pdfbox.pdmodel.PDAbstractContentStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
PDAppearanceContentStream
,PDFormContentStream
,PDPatternContentStream
abstract class PDAbstractContentStream extends java.lang.Object implements java.io.Closeable
Provides the ability to write to a content stream.
-
-
Field Summary
Fields Modifier and Type Field Description protected PDDocument
document
protected java.util.Deque<PDFont>
fontStack
private byte[]
formatBuffer
private java.text.NumberFormat
formatDecimal
protected boolean
inTextMode
private static org.apache.commons.logging.Log
LOG
protected java.util.Deque<PDColorSpace>
nonStrokingColorSpaceStack
protected java.io.OutputStream
outputStream
protected PDResources
resources
protected java.util.Deque<PDColorSpace>
strokingColorSpaceStack
-
Constructor Summary
Constructors Constructor Description PDAbstractContentStream(PDDocument document, java.io.OutputStream outputStream, PDResources resources)
Create a new appearance stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addComment(java.lang.String comment)
Write a comment line.void
addRect(float x, float y, float width, float height)
Add a rectangle to the current path.void
beginMarkedContent(COSName tag)
Begin a marked content sequence.void
beginMarkedContent(COSName tag, PDPropertyList propertyList)
Begin a marked content sequence with a reference to an entry in the page resources' Properties dictionary.void
beginText()
Begin some text operations.void
clip()
Intersects the current clipping path with the current path, using the nonzero rule.void
clipEvenOdd()
Intersects the current clipping path with the current path, using the even-odd rule.void
close()
Close the content stream.void
closeAndFillAndStroke()
Close, fill, and then stroke the path, using the nonzero winding number rule to determine the region to fill.void
closeAndFillAndStrokeEvenOdd()
Close, fill, and then stroke the path, using the even-odd rule to determine the region to fill.void
closeAndStroke()
Close and stroke the path.void
closePath()
Closes the current subpath.void
curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
Append a cubic Bézier curve to the current path.void
curveTo1(float x1, float y1, float x3, float y3)
Append a cubic Bézier curve to the current path.void
curveTo2(float x2, float y2, float x3, float y3)
Append a cubic Bézier curve to the current path.void
drawForm(PDFormXObject form)
Draws the given Form XObject at the current location.void
drawImage(PDImageXObject image, float x, float y)
Draw an image at the x,y coordinates, with the default size of the image.void
drawImage(PDImageXObject image, float x, float y, float width, float height)
Draw an image at the x,y coordinates, with the given size.void
drawImage(PDImageXObject image, Matrix matrix)
Draw an image at the origin with the given transformation matrix.void
drawImage(PDInlineImage inlineImage, float x, float y)
Draw an inline image at the x,y coordinates, with the default size of the image.void
drawImage(PDInlineImage inlineImage, float x, float y, float width, float height)
Draw an inline image at the x,y coordinates and a certain width and height.void
endMarkedContent()
End a marked content sequence.void
endText()
End some text operations.void
fill()
Fills the path using the nonzero winding number rule.void
fillAndStroke()
Fill and then stroke the path, using the nonzero winding number rule to determine the region to fill.void
fillAndStrokeEvenOdd()
Fill and then stroke the path, using the even-odd rule to determine the region to fill.void
fillEvenOdd()
Fills the path using the even-odd winding rule.protected COSName
getName(PDColorSpace colorSpace)
protected boolean
isOutside255Interval(int val)
private boolean
isOutsideOneInterval(double val)
void
lineTo(float x, float y)
Draw a line from the current position to the given coordinates.void
moveTo(float x, float y)
Move the current position to the given coordinates.void
newLine()
Move to the start of the next line of text.void
newLineAtOffset(float tx, float ty)
The Td operator.void
restoreGraphicsState()
Q operator.void
saveGraphicsState()
q operator.void
setCharacterSpacing(float spacing)
Set the character spacing.void
setFont(PDFont font, float fontSize)
Set the font and font size to draw text with.void
setGraphicsStateParameters(PDExtendedGraphicsState state)
Set an extended graphics state.void
setHorizontalScaling(float scale)
Set the horizontal scaling to scale / 100.void
setLeading(float leading)
Sets the text leading.void
setLineCapStyle(int lineCapStyle)
Set the line cap style.void
setLineDashPattern(float[] pattern, float phase)
Set the line dash pattern.void
setLineJoinStyle(int lineJoinStyle)
Set the line join style.void
setLineWidth(float lineWidth)
Set line width to the given value.protected void
setMaximumFractionDigits(int fractionDigitsNumber)
Sets the maximum number of digits allowed for fractional numbers.void
setMiterLimit(float miterLimit)
Set the miter limit.void
setNonStrokingColor(float g)
Set the non-stroking color in the DeviceGray color space.void
setNonStrokingColor(float r, float g, float b)
Set the non-stroking color in the DeviceRGB color space.void
setNonStrokingColor(float c, float m, float y, float k)
Set the non-stroking color in the DeviceCMYK color space.void
setNonStrokingColor(int g)
Deprecated.void
setNonStrokingColor(int r, int g, int b)
Deprecated.void
setNonStrokingColor(int c, int m, int y, int k)
Set the non-stroking color in the DeviceCMYK color space.void
setNonStrokingColor(java.awt.Color color)
Set the non-stroking color using an AWT color.void
setNonStrokingColor(PDColor color)
Sets the non-stroking color and, if necessary, the non-stroking color space.protected void
setNonStrokingColorSpaceStack(PDColorSpace colorSpace)
void
setRenderingMode(RenderingMode rm)
Set the text rendering mode.void
setStrokingColor(float g)
Set the stroking color in the DeviceGray color space.void
setStrokingColor(float r, float g, float b)
Set the stroking color in the DeviceRGB color space.void
setStrokingColor(float c, float m, float y, float k)
Set the stroking color in the DeviceCMYK color space.void
setStrokingColor(int r, int g, int b)
Deprecated.void
setStrokingColor(java.awt.Color color)
Set the stroking color using an AWT color.void
setStrokingColor(PDColor color)
Sets the stroking color and, if necessary, the stroking color space.protected void
setStrokingColorSpaceStack(PDColorSpace colorSpace)
void
setTextMatrix(Matrix matrix)
The Tm operator.void
setTextRise(float rise)
Set the text rise value, i.e.void
setWordSpacing(float spacing)
Set the word spacing.void
shadingFill(PDShading shading)
Fills the clipping area with the given shading.void
showText(java.lang.String text)
Shows the given text at the location specified by the current text matrix.protected void
showTextInternal(java.lang.String text)
Outputs a string using the correct encoding and subsetting as required.void
showTextWithPositioning(java.lang.Object[] textWithPositioningArray)
Shows the given text at the location specified by the current text matrix with the given interspersed positioning.void
stroke()
Stroke the path.void
transform(Matrix matrix)
The cm operator.protected void
write(byte[] data)
Writes a byte[] to the content stream.protected void
write(java.lang.String text)
Writes a string to the content stream as ASCII.private void
writeAffineTransform(java.awt.geom.AffineTransform transform)
Writes an AffineTransform to the content stream as an array.protected void
writeBytes(byte[] data)
Writes binary data to the content stream.protected void
writeLine()
Writes a newline to the content stream as ASCII.protected void
writeOperand(float real)
Writes a real number to the content stream.protected void
writeOperand(int integer)
Writes an integer number to the content stream.protected void
writeOperand(COSName name)
Writes a COSName to the content stream.protected void
writeOperator(java.lang.String text)
Writes a string to the content stream as ASCII.
-
-
-
Field Detail
-
LOG
private static final org.apache.commons.logging.Log LOG
-
document
protected final PDDocument document
-
outputStream
protected final java.io.OutputStream outputStream
-
resources
protected final PDResources resources
-
inTextMode
protected boolean inTextMode
-
fontStack
protected final java.util.Deque<PDFont> fontStack
-
nonStrokingColorSpaceStack
protected final java.util.Deque<PDColorSpace> nonStrokingColorSpaceStack
-
strokingColorSpaceStack
protected final java.util.Deque<PDColorSpace> strokingColorSpaceStack
-
formatDecimal
private final java.text.NumberFormat formatDecimal
-
formatBuffer
private final byte[] formatBuffer
-
-
Constructor Detail
-
PDAbstractContentStream
PDAbstractContentStream(PDDocument document, java.io.OutputStream outputStream, PDResources resources)
Create a new appearance stream.- Parameters:
document
- may be nulloutputStream
- The appearances output stream to write to.resources
- The resources to use
-
-
Method Detail
-
setMaximumFractionDigits
protected void setMaximumFractionDigits(int fractionDigitsNumber)
Sets the maximum number of digits allowed for fractional numbers.- Parameters:
fractionDigitsNumber
-- See Also:
NumberFormat.setMaximumFractionDigits(int)
-
beginText
public void beginText() throws java.io.IOException
Begin some text operations.- Throws:
java.io.IOException
- If there is an error writing to the stream or if you attempt to nest beginText calls.java.lang.IllegalStateException
- If the method was not allowed to be called at this time.
-
endText
public void endText() throws java.io.IOException
End some text operations.- Throws:
java.io.IOException
- If there is an error writing to the stream or if you attempt to nest endText calls.java.lang.IllegalStateException
- If the method was not allowed to be called at this time.
-
setFont
public void setFont(PDFont font, float fontSize) throws java.io.IOException
Set the font and font size to draw text with.- Parameters:
font
- The font to use.fontSize
- The font size to draw the text.- Throws:
java.io.IOException
- If there is an error writing the font information.
-
showTextWithPositioning
public void showTextWithPositioning(java.lang.Object[] textWithPositioningArray) throws java.io.IOException
Shows the given text at the location specified by the current text matrix with the given interspersed positioning. This allows the user to efficiently position each glyph or sequence of glyphs.- Parameters:
textWithPositioningArray
- An array consisting of String and Float types. Each String is output to the page using the current text matrix. Using the default coordinate system, each interspersed number adjusts the current text matrix by translating to the left or down for horizontal and vertical text respectively. The number is expressed in thousands of a text space unit, and may be negative.- Throws:
java.io.IOException
- if an io exception occurs.
-
showText
public void showText(java.lang.String text) throws java.io.IOException
Shows the given text at the location specified by the current text matrix.- Parameters:
text
- The Unicode text to show.- Throws:
java.io.IOException
- If an io exception occurs.java.lang.IllegalArgumentException
- if a character isn't supported by the current font
-
showTextInternal
protected void showTextInternal(java.lang.String text) throws java.io.IOException
Outputs a string using the correct encoding and subsetting as required.- Parameters:
text
- The Unicode text to show.- Throws:
java.io.IOException
- If an io exception occurs.
-
setLeading
public void setLeading(float leading) throws java.io.IOException
Sets the text leading.- Parameters:
leading
- The leading in unscaled text units.- Throws:
java.io.IOException
- If there is an error writing to the stream.
-
newLine
public void newLine() throws java.io.IOException
Move to the start of the next line of text. Requires the leading (seesetLeading(float)
) to have been set.- Throws:
java.io.IOException
- If there is an error writing to the stream.
-
newLineAtOffset
public void newLineAtOffset(float tx, float ty) throws java.io.IOException
The Td operator. Move to the start of the next line, offset from the start of the current line by (tx, ty).- Parameters:
tx
- The x translation.ty
- The y translation.- Throws:
java.io.IOException
- If there is an error writing to the stream.java.lang.IllegalStateException
- If the method was not allowed to be called at this time.
-
setTextMatrix
public void setTextMatrix(Matrix matrix) throws java.io.IOException
The Tm operator. Sets the text matrix to the given values. A current text matrix will be replaced with the new one.- Parameters:
matrix
- the transformation matrix- Throws:
java.io.IOException
- If there is an error writing to the stream.java.lang.IllegalStateException
- If the method was not allowed to be called at this time.
-
drawImage
public void drawImage(PDImageXObject image, float x, float y) throws java.io.IOException
Draw an image at the x,y coordinates, with the default size of the image.- Parameters:
image
- The image to draw.x
- The x-coordinate to draw the image.y
- The y-coordinate to draw the image.- Throws:
java.io.IOException
- If there is an error writing to the stream.
-
drawImage
public void drawImage(PDImageXObject image, float x, float y, float width, float height) throws java.io.IOException
Draw an image at the x,y coordinates, with the given size.- Parameters:
image
- The image to draw.x
- The x-coordinate to draw the image.y
- The y-coordinate to draw the image.width
- The width to draw the image.height
- The height to draw the image.- Throws:
java.io.IOException
- If there is an error writing to the stream.java.lang.IllegalStateException
- If the method was called within a text block.
-
drawImage
public void drawImage(PDImageXObject image, Matrix matrix) throws java.io.IOException
Draw an image at the origin with the given transformation matrix.- Parameters:
image
- The image to draw.matrix
- The transformation matrix to apply to the image.- Throws:
java.io.IOException
- If there is an error writing to the stream.java.lang.IllegalStateException
- If the method was called within a text block.
-
drawImage
public void drawImage(PDInlineImage inlineImage, float x, float y) throws java.io.IOException
Draw an inline image at the x,y coordinates, with the default size of the image.- Parameters:
inlineImage
- The inline image to draw.x
- The x-coordinate to draw the inline image.y
- The y-coordinate to draw the inline image.- Throws:
java.io.IOException
- If there is an error writing to the stream.
-
drawImage
public void drawImage(PDInlineImage inlineImage, float x, float y, float width, float height) throws java.io.IOException
Draw an inline image at the x,y coordinates and a certain width and height.- Parameters:
inlineImage
- The inline image to draw.x
- The x-coordinate to draw the inline image.y
- The y-coordinate to draw the inline image.width
- The width of the inline image to draw.height
- The height of the inline image to draw.- Throws:
java.io.IOException
- If there is an error writing to the stream.java.lang.IllegalStateException
- If the method was called within a text block.
-
drawForm
public void drawForm(PDFormXObject form) throws java.io.IOException
Draws the given Form XObject at the current location.- Parameters:
form
- Form XObject- Throws:
java.io.IOException
- if the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
transform
public void transform(Matrix matrix) throws java.io.IOException
The cm operator. Concatenates the given matrix with the current transformation matrix (CTM), which maps user space coordinates used within a PDF content stream into output device coordinates. More details on coordinates can be found in the PDF 32000 specification, 8.3.2 Coordinate Spaces.- Parameters:
matrix
- the transformation matrix- Throws:
java.io.IOException
- If there is an error writing to the stream.
-
saveGraphicsState
public void saveGraphicsState() throws java.io.IOException
q operator. Saves the current graphics state.- Throws:
java.io.IOException
- If an error occurs while writing to the stream.
-
restoreGraphicsState
public void restoreGraphicsState() throws java.io.IOException
Q operator. Restores the current graphics state.- Throws:
java.io.IOException
- If an error occurs while writing to the stream.
-
getName
protected COSName getName(PDColorSpace colorSpace)
-
setStrokingColor
public void setStrokingColor(PDColor color) throws java.io.IOException
Sets the stroking color and, if necessary, the stroking color space.- Parameters:
color
- Color in a specific color space.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.
-
setStrokingColor
public void setStrokingColor(java.awt.Color color) throws java.io.IOException
Set the stroking color using an AWT color. Conversion uses the default sRGB color space.- Parameters:
color
- The color to set.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.
-
setStrokingColor
public void setStrokingColor(float r, float g, float b) throws java.io.IOException
Set the stroking color in the DeviceRGB color space. Range is 0..1.- Parameters:
r
- The red valueg
- The green value.b
- The blue value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameters are invalid.
-
setStrokingColor
@Deprecated public void setStrokingColor(int r, int g, int b) throws java.io.IOException
Deprecated.Set the stroking color in the DeviceRGB color space. Range is 0..255.- Parameters:
r
- The red valueg
- The green value.b
- The blue value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameters are invalid.
-
setStrokingColor
public void setStrokingColor(float c, float m, float y, float k) throws java.io.IOException
Set the stroking color in the DeviceCMYK color space. Range is 0..1- Parameters:
c
- The cyan value.m
- The magenta value.y
- The yellow value.k
- The black value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameters are invalid.
-
setStrokingColor
public void setStrokingColor(float g) throws java.io.IOException
Set the stroking color in the DeviceGray color space. Range is 0..1.- Parameters:
g
- The gray value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameter is invalid.
-
setNonStrokingColor
public void setNonStrokingColor(PDColor color) throws java.io.IOException
Sets the non-stroking color and, if necessary, the non-stroking color space.- Parameters:
color
- Color in a specific color space.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.
-
setNonStrokingColor
public void setNonStrokingColor(java.awt.Color color) throws java.io.IOException
Set the non-stroking color using an AWT color. Conversion uses the default sRGB color space.- Parameters:
color
- The color to set.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.
-
setNonStrokingColor
public void setNonStrokingColor(float r, float g, float b) throws java.io.IOException
Set the non-stroking color in the DeviceRGB color space. Range is 0..255.- Parameters:
r
- The red value.g
- The green value.b
- The blue value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameters are invalid.
-
setNonStrokingColor
@Deprecated public void setNonStrokingColor(int r, int g, int b) throws java.io.IOException
Deprecated.Set the non stroking color in the DeviceRGB color space. Range is 0..255.- Parameters:
r
- The red valueg
- The green value.b
- The blue value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameters are invalid.
-
setNonStrokingColor
public void setNonStrokingColor(int c, int m, int y, int k) throws java.io.IOException
Set the non-stroking color in the DeviceCMYK color space. Range is 0..255.- Parameters:
c
- The cyan value.m
- The magenta value.y
- The yellow value.k
- The black value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameters are invalid.
-
setNonStrokingColor
public void setNonStrokingColor(float c, float m, float y, float k) throws java.io.IOException
Set the non-stroking color in the DeviceCMYK color space. Range is 0..1.- Parameters:
c
- The cyan value.m
- The magenta value.y
- The yellow value.k
- The black value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.
-
setNonStrokingColor
public void setNonStrokingColor(int g) throws java.io.IOException
Deprecated.Set the non-stroking color in the DeviceGray color space. Range is 0..255.- Parameters:
g
- The gray value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameter is invalid.
-
setNonStrokingColor
public void setNonStrokingColor(float g) throws java.io.IOException
Set the non-stroking color in the DeviceGray color space. Range is 0..1.- Parameters:
g
- The gray value.- Throws:
java.io.IOException
- If an IO error occurs while writing to the stream.java.lang.IllegalArgumentException
- If the parameter is invalid.
-
addRect
public void addRect(float x, float y, float width, float height) throws java.io.IOException
Add a rectangle to the current path.- Parameters:
x
- The lower left x coordinate.y
- The lower left y coordinate.width
- The width of the rectangle.height
- The height of the rectangle.- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.
-
curveTo
public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3) throws java.io.IOException
Append a cubic Bézier curve to the current path. The curve extends from the current point to the point (x3, y3), using (x1, y1) and (x2, y2) as the Bézier control points.- Parameters:
x1
- x coordinate of the point 1y1
- y coordinate of the point 1x2
- x coordinate of the point 2y2
- y coordinate of the point 2x3
- x coordinate of the point 3y3
- y coordinate of the point 3- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.
-
curveTo2
public void curveTo2(float x2, float y2, float x3, float y3) throws java.io.IOException
Append a cubic Bézier curve to the current path. The curve extends from the current point to the point (x3, y3), using the current point and (x2, y2) as the Bézier control points.- Parameters:
x2
- x coordinate of the point 2y2
- y coordinate of the point 2x3
- x coordinate of the point 3y3
- y coordinate of the point 3- Throws:
java.lang.IllegalStateException
- If the method was called within a text block.java.io.IOException
- If the content stream could not be written.
-
curveTo1
public void curveTo1(float x1, float y1, float x3, float y3) throws java.io.IOException
Append a cubic Bézier curve to the current path. The curve extends from the current point to the point (x3, y3), using (x1, y1) and (x3, y3) as the Bézier control points.- Parameters:
x1
- x coordinate of the point 1y1
- y coordinate of the point 1x3
- x coordinate of the point 3y3
- y coordinate of the point 3- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.
-
moveTo
public void moveTo(float x, float y) throws java.io.IOException
Move the current position to the given coordinates.- Parameters:
x
- The x coordinate.y
- The y coordinate.- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.
-
lineTo
public void lineTo(float x, float y) throws java.io.IOException
Draw a line from the current position to the given coordinates.- Parameters:
x
- The x coordinate.y
- The y coordinate.- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.
-
stroke
public void stroke() throws java.io.IOException
Stroke the path.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
closeAndStroke
public void closeAndStroke() throws java.io.IOException
Close and stroke the path.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
fill
public void fill() throws java.io.IOException
Fills the path using the nonzero winding number rule.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
fillEvenOdd
public void fillEvenOdd() throws java.io.IOException
Fills the path using the even-odd winding rule.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
fillAndStroke
public void fillAndStroke() throws java.io.IOException
Fill and then stroke the path, using the nonzero winding number rule to determine the region to fill. This shall produce the same result as constructing two identical path objects, painting the first withfill()
and the second withstroke()
.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
fillAndStrokeEvenOdd
public void fillAndStrokeEvenOdd() throws java.io.IOException
Fill and then stroke the path, using the even-odd rule to determine the region to fill. This shall produce the same result as constructing two identical path objects, painting the first withfillEvenOdd()
and the second withstroke()
.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
closeAndFillAndStroke
public void closeAndFillAndStroke() throws java.io.IOException
Close, fill, and then stroke the path, using the nonzero winding number rule to determine the region to fill. This shall have the same effect as the sequenceclosePath()
and thenfillAndStroke()
.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
closeAndFillAndStrokeEvenOdd
public void closeAndFillAndStrokeEvenOdd() throws java.io.IOException
Close, fill, and then stroke the path, using the even-odd rule to determine the region to fill. This shall have the same effect as the sequenceclosePath()
and thenfillAndStrokeEvenOdd()
.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
shadingFill
public void shadingFill(PDShading shading) throws java.io.IOException
Fills the clipping area with the given shading.- Parameters:
shading
- Shading resource- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
closePath
public void closePath() throws java.io.IOException
Closes the current subpath.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
clip
public void clip() throws java.io.IOException
Intersects the current clipping path with the current path, using the nonzero rule.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
clipEvenOdd
public void clipEvenOdd() throws java.io.IOException
Intersects the current clipping path with the current path, using the even-odd rule.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
setLineWidth
public void setLineWidth(float lineWidth) throws java.io.IOException
Set line width to the given value.- Parameters:
lineWidth
- The width which is used for drawing.- Throws:
java.io.IOException
- If the content stream could not be writtenjava.lang.IllegalStateException
- If the method was called within a text block.
-
setLineJoinStyle
public void setLineJoinStyle(int lineJoinStyle) throws java.io.IOException
Set the line join style.- Parameters:
lineJoinStyle
- 0 for miter join, 1 for round join, and 2 for bevel join.- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.java.lang.IllegalArgumentException
- If the parameter is not a valid line join style.
-
setLineCapStyle
public void setLineCapStyle(int lineCapStyle) throws java.io.IOException
Set the line cap style.- Parameters:
lineCapStyle
- 0 for butt cap, 1 for round cap, and 2 for projecting square cap.- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.java.lang.IllegalArgumentException
- If the parameter is not a valid line cap style.
-
setLineDashPattern
public void setLineDashPattern(float[] pattern, float phase) throws java.io.IOException
Set the line dash pattern.- Parameters:
pattern
- The pattern arrayphase
- The phase of the pattern- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalStateException
- If the method was called within a text block.
-
setMiterLimit
public void setMiterLimit(float miterLimit) throws java.io.IOException
Set the miter limit.- Parameters:
miterLimit
- the new miter limit.- Throws:
java.io.IOException
- If the content stream could not be written.
-
beginMarkedContent
public void beginMarkedContent(COSName tag) throws java.io.IOException
Begin a marked content sequence.- Parameters:
tag
- the tag- Throws:
java.io.IOException
- If the content stream could not be written
-
beginMarkedContent
public void beginMarkedContent(COSName tag, PDPropertyList propertyList) throws java.io.IOException
Begin a marked content sequence with a reference to an entry in the page resources' Properties dictionary.- Parameters:
tag
- the tagpropertyList
- property list- Throws:
java.io.IOException
- If the content stream could not be written
-
endMarkedContent
public void endMarkedContent() throws java.io.IOException
End a marked content sequence.- Throws:
java.io.IOException
- If the content stream could not be written
-
setGraphicsStateParameters
public void setGraphicsStateParameters(PDExtendedGraphicsState state) throws java.io.IOException
Set an extended graphics state.- Parameters:
state
- The extended graphics state.- Throws:
java.io.IOException
- If the content stream could not be written.
-
addComment
public void addComment(java.lang.String comment) throws java.io.IOException
Write a comment line.- Parameters:
comment
-- Throws:
java.io.IOException
- If the content stream could not be written.java.lang.IllegalArgumentException
- If the comment contains a newline. This is not allowed, because the next line could be ordinary PDF content.
-
writeOperand
protected void writeOperand(float real) throws java.io.IOException
Writes a real number to the content stream.- Parameters:
real
-- Throws:
java.io.IOException
java.lang.IllegalArgumentException
- if the parameter is not a finite number
-
writeOperand
protected void writeOperand(int integer) throws java.io.IOException
Writes an integer number to the content stream.- Parameters:
integer
-- Throws:
java.io.IOException
-
writeOperand
protected void writeOperand(COSName name) throws java.io.IOException
Writes a COSName to the content stream.- Parameters:
name
-- Throws:
java.io.IOException
-
writeOperator
protected void writeOperator(java.lang.String text) throws java.io.IOException
Writes a string to the content stream as ASCII.- Parameters:
text
-- Throws:
java.io.IOException
-
write
protected void write(java.lang.String text) throws java.io.IOException
Writes a string to the content stream as ASCII.- Parameters:
text
-- Throws:
java.io.IOException
-
write
protected void write(byte[] data) throws java.io.IOException
Writes a byte[] to the content stream.- Parameters:
data
-- Throws:
java.io.IOException
-
writeLine
protected void writeLine() throws java.io.IOException
Writes a newline to the content stream as ASCII.- Throws:
java.io.IOException
-
writeBytes
protected void writeBytes(byte[] data) throws java.io.IOException
Writes binary data to the content stream.- Parameters:
data
-- Throws:
java.io.IOException
-
writeAffineTransform
private void writeAffineTransform(java.awt.geom.AffineTransform transform) throws java.io.IOException
Writes an AffineTransform to the content stream as an array.- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
Close the content stream. This must be called when you are done with this object.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
java.io.IOException
- If the underlying stream has a problem being written to.
-
isOutside255Interval
protected boolean isOutside255Interval(int val)
-
isOutsideOneInterval
private boolean isOutsideOneInterval(double val)
-
setStrokingColorSpaceStack
protected void setStrokingColorSpaceStack(PDColorSpace colorSpace)
-
setNonStrokingColorSpaceStack
protected void setNonStrokingColorSpaceStack(PDColorSpace colorSpace)
-
setCharacterSpacing
public void setCharacterSpacing(float spacing) throws java.io.IOException
Set the character spacing. The value shall be added to the horizontal or vertical component of the glyph's displacement, depending on the writing mode.- Parameters:
spacing
- character spacing- Throws:
java.io.IOException
- If the content stream could not be written.
-
setWordSpacing
public void setWordSpacing(float spacing) throws java.io.IOException
Set the word spacing. The value shall be added to the horizontal or vertical component of the ASCII SPACE character, depending on the writing mode.This will have an effect only with Type1 and TrueType fonts, not with Type0 fonts. The PDF specification tells why: "Word spacing shall be applied to every occurrence of the single-byte character code 32 in a string when using a simple font or a composite font that defines code 32 as a single-byte code. It shall not apply to occurrences of the byte value 32 in multiple-byte codes."
- Parameters:
spacing
- word spacing- Throws:
java.io.IOException
- If the content stream could not be written.
-
setHorizontalScaling
public void setHorizontalScaling(float scale) throws java.io.IOException
Set the horizontal scaling to scale / 100.- Parameters:
scale
- number specifying the percentage of the normal width. Default value: 100 (normal width).- Throws:
java.io.IOException
- If the content stream could not be written.
-
setRenderingMode
public void setRenderingMode(RenderingMode rm) throws java.io.IOException
Set the text rendering mode. This determines whether showing text shall cause glyph outlines to be stroked, filled, used as a clipping boundary, or some combination of the three.- Parameters:
rm
- The text rendering mode.- Throws:
java.io.IOException
- If the content stream could not be written.
-
setTextRise
public void setTextRise(float rise) throws java.io.IOException
Set the text rise value, i.e. move the baseline up or down. This is useful for drawing superscripts or subscripts.- Parameters:
rise
- Specifies the distance, in unscaled text space units, to move the baseline up or down from its default location. 0 restores the default location.- Throws:
java.io.IOException
-
-