Package com.helger.pdflayout.pdfbox
Class PDPageContentStreamExt
java.lang.Object
com.helger.pdflayout.pdfbox.PDPageContentStreamExt
- All Implemented Interfaces:
Closeable,AutoCloseable
@CodingStyleguideUnaware
@NotThreadSafe
public final class PDPageContentStreamExt
extends Object
implements Closeable
Provides the ability to write to a page content stream.
Extensions/changes for this project:
Extensions/changes for this project:
- Speed up in text drawing
- Removed all deprecated methods
- Allowing to prepend content
- Author:
- Ben Litchfield
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionPDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument doc, org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream appearance) Create a new appearance stream.PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument aDoc, org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream appearance, OutputStream outputStream) Create a new appearance stream.PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument document, org.apache.pdfbox.pdmodel.PDPage sourcePage) Create a new PDPage content stream.PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument document, org.apache.pdfbox.pdmodel.PDPage sourcePage, org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode appendContent, boolean compress) Create a new PDPage content stream.PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument aDoc, org.apache.pdfbox.pdmodel.PDPage sourcePage, org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode appendContent, boolean compress, boolean resetContext) Create a new PDPage content stream. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddRect(float x, float y, float width, float height) Add a rectangle to the current path.voidbeginMarkedContent(org.apache.pdfbox.cos.COSName tag) Begin a marked content sequence.voidbeginMarkedContent(org.apache.pdfbox.cos.COSName tag, org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList propertyList) Begin a marked content sequence with a reference to an entry in the page resources' Properties dictionary.voidBegin some text operations.voidclip()Intersects the current clipping path with the current path, using the nonzero rule.voidIntersects the current clipping path with the current path, using the even-odd rule.voidclose()Close the content stream.voidClose and stroke the path.voidCloses the current subpath.voidcurveTo(float x1, float y1, float x2, float y2, float x3, float y3) Append a cubic Bézier curve to the current path.voidcurveTo1(float x1, float y1, float x3, float y3) Append a cubic Bézier curve to the current path.voidcurveTo2(float x2, float y2, float x3, float y3) Append a cubic Bézier curve to the current path.voiddrawForm(org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject form) Draws the given Form XObject at the current location.voiddrawImage(org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject image, float x, float y) Draw an image at the x,y coordinates, with the default size of the image.voiddrawImage(org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject image, float x, float y, float width, float height) Draw an image at the x,y coordinates, with the given size.voiddrawImage(org.apache.pdfbox.pdmodel.graphics.image.PDInlineImage inlineImage, float x, float y) Draw an inline image at the x,y coordinates, with the default size of the image.voiddrawImage(org.apache.pdfbox.pdmodel.graphics.image.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.voidEnd a marked content sequence.voidendText()End some text operations.voidfill()Fills the path using the nonzero winding rule.voidFills the path using the even-odd winding rule.voidlineTo(float x, float y) Draw a line from the current position to the given coordinates.voidmoveTo(float x, float y) Move the current position to the given coordinates.voidnewLine()Move to the start of the next line of text.voidnewLineAtOffset(float tx, float ty) The Td operator.voidQ operator.voidq operator.voidsetCharacterSpacing(float spacing) Set the character spacing.voidsetFont(org.apache.pdfbox.pdmodel.font.PDFont font, float fontSize) Set the font and font size to draw text with.voidsetGraphicsStateParameters(org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState state) Set an extended graphics state.voidsetLeading(double leading) Sets the text leading.voidsetLineCapStyle(int lineCapStyle) Set the line cap style.voidsetLineDashPattern(float[] pattern, float phase) Set the line dash pattern.voidsetLineJoinStyle(int lineJoinStyle) Set the line join style.voidsetLineWidth(float lineWidth) Set line width to the given value.voidsetNonStrokingColor(double g) Set the non-stroking color in the DeviceGray color space.voidsetNonStrokingColor(double c, double m, double y, double k) Set the non-stroking color in the DeviceRGB color space.voidsetNonStrokingColor(int g) Set the non-stroking color in the DeviceGray color space.voidsetNonStrokingColor(int r, int g, int b) Set the non-stroking color in the DeviceRGB color space.voidsetNonStrokingColor(int c, int m, int y, int k) Set the non-stroking color in the DeviceCMYK color space.voidsetNonStrokingColor(PLColor aColor) Set the non-stroking color using an AWT color.voidsetNonStrokingColor(org.apache.pdfbox.pdmodel.graphics.color.PDColor color) Sets the non-stroking color and, if necessary, the non-stroking color space.voidsetStrokingColor(double g) Set the stroking color in the DeviceGray color space.voidsetStrokingColor(float c, float m, float y, float k) Set the stroking color in the DeviceCMYK color space.voidsetStrokingColor(int r, int g, int b) Set the stroking color in the DeviceRGB color space.voidsetStrokingColor(PLColor aColor) Set the stroking color using an AWT color.voidsetStrokingColor(org.apache.pdfbox.pdmodel.graphics.color.PDColor color) Sets the stroking color and, if necessary, the stroking color space.voidsetTextMatrix(org.apache.pdfbox.util.Matrix matrix) The Tm operator.voidshadingFill(org.apache.pdfbox.pdmodel.graphics.shading.PDShading shading) Fills the clipping area with the given shading.voidShows the given text at the location specified by the current text matrix.voidstroke()Stroke the path.voidtransform(org.apache.pdfbox.util.Matrix matrix) The cm operator.protected voidwrite(byte... text) Writes a string to the content stream as ASCII.protected voidwriteBytes(byte[] data) Writes binary data to the content stream.protected voidWrites a string to the content stream as ASCII.protected voidwriteOperand(float real) Writes a real real to the content stream.protected voidwriteOperand(int integer) Writes a real number to the content stream.protected voidwriteOperand(org.apache.pdfbox.cos.COSName name) Writes a COSName to the content stream.protected final voidwriteOperator(byte... text) Writes a string to the content stream as ASCII.
-
Field Details
-
m_aOS
-
-
Constructor Details
-
PDPageContentStreamExt
public PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument document, org.apache.pdfbox.pdmodel.PDPage sourcePage) throws IOException Create a new PDPage content stream.- Parameters:
document- The document the page is part of.sourcePage- The page to write the contents to.- Throws:
IOException- If there is an error writing to the page contents.
-
PDPageContentStreamExt
public PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument document, org.apache.pdfbox.pdmodel.PDPage sourcePage, org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode appendContent, boolean compress) throws IOException Create a new PDPage content stream.- Parameters:
document- The document the page is part of.sourcePage- The page to write the contents to.appendContent- Indicates whether content will be overwritten. If false all previous content is deleted.compress- Tell if the content stream should compress the page contents.- Throws:
IOException- If there is an error writing to the page contents.
-
PDPageContentStreamExt
public PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument aDoc, org.apache.pdfbox.pdmodel.PDPage sourcePage, org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode appendContent, boolean compress, boolean resetContext) throws IOException Create a new PDPage content stream.- Parameters:
aDoc- The document the page is part of.sourcePage- The page to write the contents to.appendContent- Indicates whether content will be overwritten. If false all previous content is deleted.compress- Tell if the content stream should compress the page contents.resetContext- Tell if the graphic context should be reseted.- Throws:
IOException- If there is an error writing to the page contents.
-
PDPageContentStreamExt
public PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument doc, org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream appearance) throws IOException Create a new appearance stream. Note that this is not actually a "page" content stream.- Parameters:
doc- The document the page is part of.appearance- The appearance stream to write to.- Throws:
IOException- If there is an error writing to the page contents.
-
PDPageContentStreamExt
public PDPageContentStreamExt(org.apache.pdfbox.pdmodel.PDDocument aDoc, org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream appearance, OutputStream outputStream) Create a new appearance stream. Note that this is not actually a "page" content stream.- Parameters:
aDoc- The document the appearance is part of.appearance- The appearance stream to add to.outputStream- The appearances output stream to write to.
-
-
Method Details
-
beginText
Begin some text operations.- Throws:
IOException- If there is an error writing to the stream or if you attempt to nest beginText calls.IllegalStateException- If the method was not allowed to be called at this time.
-
endText
End some text operations.- Throws:
IOException- If there is an error writing to the stream or if you attempt to nest endText calls.IllegalStateException- If the method was not allowed to be called at this time.
-
setFont
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:
IOException- If there is an error writing the font information.
-
setCharacterSpacing
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:
IOException- If the content stream could not be written.
-
showText
Shows the given text at the location specified by the current text matrix.- Parameters:
text- The Unicode text to show.- Throws:
IOException- If an io exception occurs.
-
setLeading
Sets the text leading.- Parameters:
leading- The leading in unscaled text units.- Throws:
IOException- If there is an error writing to the stream.
-
newLine
Move to the start of the next line of text. Requires the leading (seesetLeading(double)) to have been set.- Throws:
IOException- If there is an error writing to the stream.
-
newLineAtOffset
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:
IOException- If there is an error writing to the stream.IllegalStateException- If the method was not allowed to be called at this time.
-
setTextMatrix
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:
IOException- If there is an error writing to the stream.IllegalStateException- If the method was not allowed to be called at this time.
-
drawImage
public void drawImage(org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject image, float x, float y) throws 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:
IOException- If there is an error writing to the stream.
-
drawImage
public void drawImage(org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject image, float x, float y, float width, float height) throws 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:
IOException- If there is an error writing to the stream.IllegalStateException- If the method was called within a text block.
-
drawImage
public void drawImage(org.apache.pdfbox.pdmodel.graphics.image.PDInlineImage inlineImage, float x, float y) throws 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:
IOException- If there is an error writing to the stream.
-
drawImage
public void drawImage(org.apache.pdfbox.pdmodel.graphics.image.PDInlineImage inlineImage, float x, float y, float width, float height) throws 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:
IOException- If there is an error writing to the stream.IllegalStateException- If the method was called within a text block.
-
drawForm
Draws the given Form XObject at the current location.- Parameters:
form- Form XObject- Throws:
IOException- if the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
transform
The cm operator. Concatenates the given matrix with the CTM.- Parameters:
matrix- the transformation matrix- Throws:
IOException- If there is an error writing to the stream.
-
saveGraphicsState
q operator. Saves the current graphics state.- Throws:
IOException- If an error occurs while writing to the stream.
-
restoreGraphicsState
Q operator. Restores the current graphics state.- Throws:
IOException- If an error occurs while writing to the stream.
-
setStrokingColor
public void setStrokingColor(@Nonnull org.apache.pdfbox.pdmodel.graphics.color.PDColor color) throws IOException Sets the stroking color and, if necessary, the stroking color space.- Parameters:
color- Color in a specific color space.- Throws:
IOException- If an IO error occurs while writing to the stream.
-
setStrokingColor
Set the stroking color using an AWT color. Conversion uses the default sRGB color space.- Parameters:
aColor- The color to set.- Throws:
IOException- If an IO error occurs while writing to the stream.- Since:
- 7.2.0
-
setStrokingColor
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:
IOException- If an IO error occurs while writing to the stream.IllegalArgumentException- If the parameters are invalid.
-
setStrokingColor
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:
IOException- If an IO error occurs while writing to the stream.IllegalArgumentException- If the parameters are invalid.
-
setStrokingColor
Set the stroking color in the DeviceGray color space. Range is 0..1.- Parameters:
g- The gray value.- Throws:
IOException- If an IO error occurs while writing to the stream.IllegalArgumentException- If the parameter is invalid.
-
setNonStrokingColor
public void setNonStrokingColor(@Nonnull org.apache.pdfbox.pdmodel.graphics.color.PDColor color) throws IOException Sets the non-stroking color and, if necessary, the non-stroking color space.- Parameters:
color- Color in a specific color space.- Throws:
IOException- If an IO error occurs while writing to the stream.
-
setNonStrokingColor
Set the non-stroking color using an AWT color. Conversion uses the default sRGB color space.- Parameters:
aColor- The color to set.- Throws:
IOException- If an IO error occurs while writing to the stream.- Since:
- 7.2.0
-
setNonStrokingColor
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:
IOException- If an IO error occurs while writing to the stream.IllegalArgumentException- If the parameters are invalid.
-
setNonStrokingColor
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:
IOException- If an IO error occurs while writing to the stream.IllegalArgumentException- If the parameters are invalid.
-
setNonStrokingColor
Set the non-stroking color in the DeviceRGB color space. Range is 0..1.- Parameters:
c- The cyan value.m- The magenta value.y- The yellow value.k- The black value.- Throws:
IOException- If an IO error occurs while writing to the stream.
-
setNonStrokingColor
Set the non-stroking color in the DeviceGray color space. Range is 0..255.- Parameters:
g- The gray value.- Throws:
IOException- If an IO error occurs while writing to the stream.IllegalArgumentException- If the parameter is invalid.
-
setNonStrokingColor
Set the non-stroking color in the DeviceGray color space. Range is 0..1.- Parameters:
g- The gray value.- Throws:
IOException- If an IO error occurs while writing to the stream.IllegalArgumentException- If the parameter is invalid.
-
addRect
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:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.
-
curveTo
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:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.
-
curveTo2
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:
IllegalStateException- If the method was called within a text block.IOException- If the content stream could not be written.
-
curveTo1
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:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.
-
moveTo
Move the current position to the given coordinates.- Parameters:
x- The x coordinate.y- The y coordinate.- Throws:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.
-
lineTo
Draw a line from the current position to the given coordinates.- Parameters:
x- The x coordinate.y- The y coordinate.- Throws:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.
-
stroke
Stroke the path.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
closeAndStroke
Close and stroke the path.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
fill
Fills the path using the nonzero winding rule.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
fillEvenOdd
Fills the path using the even-odd winding rule.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
shadingFill
public void shadingFill(org.apache.pdfbox.pdmodel.graphics.shading.PDShading shading) throws IOException Fills the clipping area with the given shading.- Parameters:
shading- Shading resource- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
closePath
Closes the current subpath.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
clip
Intersects the current clipping path with the current path, using the nonzero rule.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
clipEvenOdd
Intersects the current clipping path with the current path, using the even-odd rule.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
setLineWidth
Set line width to the given value.- Parameters:
lineWidth- The width which is used for drawing.- Throws:
IOException- If the content stream could not be writtenIllegalStateException- If the method was called within a text block.
-
setLineJoinStyle
Set the line join style.- Parameters:
lineJoinStyle- 0 for miter join, 1 for round join, and 2 for bevel join.- Throws:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.IllegalArgumentException- If the parameter is not a valid line join style.
-
setLineCapStyle
Set the line cap style.- Parameters:
lineCapStyle- 0 for butt cap, 1 for round cap, and 2 for projecting square cap.- Throws:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.IllegalArgumentException- If the parameter is not a valid line cap style.
-
setLineDashPattern
Set the line dash pattern.- Parameters:
pattern- The pattern arrayphase- The phase of the pattern- Throws:
IOException- If the content stream could not be written.IllegalStateException- If the method was called within a text block.
-
beginMarkedContent
Begin a marked content sequence.- Parameters:
tag- the tag- Throws:
IOException- If the content stream could not be written
-
beginMarkedContent
public void beginMarkedContent(org.apache.pdfbox.cos.COSName tag, org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList propertyList) throws 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:
IOException- If the content stream could not be written
-
endMarkedContent
End a marked content sequence.- Throws:
IOException- If the content stream could not be written
-
setGraphicsStateParameters
public void setGraphicsStateParameters(org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState state) throws IOException Set an extended graphics state.- Parameters:
state- The extended graphics state.- Throws:
IOException- If the content stream could not be written.
-
writeOperand
Writes a real real to the content stream.- Parameters:
real- the value to be written- Throws:
IOException- In case of IO error
-
writeOperand
Writes a real number to the content stream.- Parameters:
integer- the value to be written- Throws:
IOException- In case of IO error
-
writeOperand
Writes a COSName to the content stream.- Parameters:
name- the value to be written- Throws:
IOException- In case of IO error
-
writeOperator
Writes a string to the content stream as ASCII.- Parameters:
text- the value to be written- Throws:
IOException- In case of IO error
-
write
Writes a string to the content stream as ASCII.- Parameters:
text- the value to be written- Throws:
IOException- In case of IO error
-
writeLine
Writes a string to the content stream as ASCII.- Throws:
IOException- In case of IO error
-
writeBytes
Writes binary data to the content stream.- Parameters:
data- the value to be written- Throws:
IOException- In case of IO error
-
close
Close the content stream. This must be called when you are done with this object.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException- If the underlying stream has a problem being written to.
-