itext.svg
This is the main container class for static methods that do high-level
conversion operations from input to PDF, either by drawing on a canvas or by
returning an XObject, which can then be used by the calling class for further
processing and drawing operations.
Draws a String containing valid SVG to a document, on a given page
number at the origin of the page.
the String value containing valid SVG content
the
instance to draw on
the page to draw on
Draws a String containing valid SVG to a document, on a given page
number on the provided x and y coordinate.
the String value containing valid SVG content
the
instance to draw on
the page to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
Draws a String containing valid SVG to a document, on a given page
number on the provided x and y coordinate.
the Stream object containing valid SVG content
the
instance to draw on
the page to draw on
a container for extra properties that customize the behavior
Draws a String containing valid SVG to a document, on a given page
number on the provided x and y coordinate.
the Stream object containing valid SVG content
the
instance to draw on
the page to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
a container for extra properties that customize the behavior
Draws a Stream containing valid SVG to a document, on a given page
number ate the origni of the page.
the Stream object containing valid SVG content
the
instance to draw on
the page to draw on
Draws a Stream containing valid SVG to a document, on a given page
number on the provided x and y coordinate.
the Stream object containing valid SVG content
the
instance to draw on
the page to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
Draws a Stream containing valid SVG to a document, on a given page
number on the provided x and y coordinate.
the Stream object containing valid SVG content
the
instance to draw on
the page to draw on
a container for extra properties that customize the behavior
Draws a Stream containing valid SVG to a document, on a given page
number on the provided x and y coordinate.
the Stream object containing valid SVG content
the
instance to draw on
the page to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
a container for extra properties that customize the behavior
Draws a String containing valid SVG to a given page at the origin of the page.
the String value containing valid SVG content
the
instance to draw on
Draws a String containing valid SVG to a given page on the provided x and y coordinate.
the String value containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
Draws a String containing valid SVG to a given page on the provided x and y coordinate.
the String value containing valid SVG content
the
instance to draw on
a container for extra properties that customize the behavior
Draws a String containing valid SVG to a given page on the provided x and y coordinate.
the String value containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
a container for extra properties that customize the behavior
Draws a Stream containing valid SVG to a given page at coordinate 0,0.
the
Stream
object containing valid SVG content
the
instance to draw on
Draws a Stream containing valid SVG to a given page, at a given location.
the
Stream
object containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
Draws a Stream containing valid SVG to a given page at a given location.
the
Stream
object containing valid SVG content
the
instance to draw on
a container for extra properties that customize the behavior
Draws a Stream containing valid SVG to a given page at a given location.
the
Stream
object containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
a container for extra properties that customize the behavior
Draws a String containing valid SVG to a pre-made canvas object.
the String value containing valid SVG content
the
instance to draw on
Draws a String containing valid SVG to a pre-made canvas object.
the String value containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
Draws a String containing valid SVG to a pre-made canvas object.
the String value containing valid SVG content
the
instance to draw on
a container for extra properties that customize the behavior
draws a String containing valid SVG to a pre-made canvas object, at a specified location.
the String value containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
a container for extra properties that customize the behavior
Draws a Stream containing valid SVG to a pre-made canvas object.
the
Stream
object containing valid SVG content
the
instance to draw on
Draws a Stream containing valid SVG to a pre-made canvas object, to a specified location.
the
Stream
object containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
Draws a Stream containing valid SVG to a pre-made canvas object.
the
Stream
object containing valid SVG content
the
instance to draw on
a container for extra properties that customize the behavior
Draws a String containing valid SVG to a pre-made canvas object, at a specified position on the canvas.
the
Stream
object containing valid SVG content
the
instance to draw on
x-coordinate of the location to draw at
y-coordinate of the location to draw at
a container for extra properties that customize the behavior
Converts SVG stored in a
to a PDF
.
the
containing the source SVG
the
containing the resulting PDF
Converts SVG stored in a
to a PDF
,
using specific
.
the
containing the source SVG
the
containing the resulting PDF
a
instance
Converts SVG stored in a
to a PDF
,
using
the
containing the source SVG
the
containing the resulting PDF
the
for the pdf document
Converts SVG stored in a
to a PDF
,
using specific
and
.
the
containing the source SVG
the
containing the resulting PDF
a
instance
a
for the pdf document
Copies properties from custom ISvgConverterProperties into new SvgConverterProperties.
Copies properties from custom ISvgConverterProperties into new SvgConverterProperties.
Since ISvgConverterProperties itself is immutable we have to do it.
Create a single page pdf containing the SVG on its page using the default processing and drawing logic
Stream
containing the SVG
PDF destination outputStream
Create a single page pdf containing the SVG on its page using the default processing and drawing logic
Stream
containing the SVG
PDF destination outputStream
writerproperties for the pdf document
Create a single page pdf containing the SVG on its page using the default processing and drawing logic
Stream
containing the SVG
PDF destination outputStream
Svg
to change default behaviour
Create a single page pdf containing the SVG on its page using the default processing and drawing logic
Stream
containing the SVG
to change default behaviour
PDF destination outputStream
for the pdf document
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
.
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
. This method does NOT manipulate the
in any way.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
, or look into
using
.
the String value containing valid SVG content
the
instance to draw on
a
XObject
containing the PDF instructions
corresponding to the passed SVG content
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
.
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
. This method does NOT manipulate the
in any way.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
, or look into
using
.
the String value containing valid SVG content
the
instance to draw on
to customize the behavior
a
XObject
containing the PDF instructions
corresponding to the passed SVG content
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
.
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
. This method does NOT manipulate the
in any way.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
, or look into
using
.
the
Stream
object containing valid SVG content
the
instance to draw on
to customize the behavior
a
XObject
containing the PDF instructions
corresponding to the passed SVG content
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
.
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
. This method does NOT manipulate the
in any way.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
, or look into
using
.
the
Stream
object containing valid SVG content
the
instance to draw on
a
XObject
containing the PDF instructions
corresponding to the passed SVG content
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
.
Converts a String containing valid SVG content to an
XObject
that can then be used on the passed
. This method does NOT manipulate the
in any way.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
, or look into
using
.
the Stream object containing valid SVG content
the
instance to draw on
a
Image
containing the PDF instructions
corresponding to the passed SVG content
Converts a String containing valid SVG content to an
image
that can then be used on the passed
.
Converts a String containing valid SVG content to an
image
that can then be used on the passed
. This method does NOT manipulate the
in any way.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
, or look into
using
.
the
Stream
object containing valid SVG content
the
instance to draw on
to customize the behavior
a
Image
containing the PDF instructions
corresponding to the passed SVG content
This method draws a NodeRenderer tree to a canvas that is tied to the
passed document.
This method draws a NodeRenderer tree to a canvas that is tied to the
passed document.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
this method, or look into
using
.
the
instance that contains
the renderer tree
the document that the returned
XObject
can be drawn on (on any given page
coordinates)
an
XObject
containing the PDF instructions
corresponding to the passed node renderer tree.
This method draws a NodeRenderer tree to a canvas that is tied to the
passed document.
This method draws a NodeRenderer tree to a canvas that is tied to the
passed document.
This method (or its overloads) is the best method to use if you want to
reuse the same SVG image multiple times on the same
.
If you want to reuse this object on other
instances,
please either use any of the
overloads in this same
class and convert its result to an XObject with
this method, or look into
using
.
the
instance that contains
the renderer tree
the document that the returned
the SvgDrawContext
an
XObject
containing the PDF instructions
corresponding to the passed node renderer tree.
Parse and process an Inputstream containing an SVG, using the default Svg processor (
)
The parsing of the stream is done using UTF-8 as the default charset.
Parse and process an Inputstream containing an SVG, using the default Svg processor (
)
The parsing of the stream is done using UTF-8 as the default charset.
The properties used by the processor are the
Input stream containing the SVG to parse and process
containing the root renderer and metadata of the svg
Parse and process an Inputstream containing an SVG, using the default Svg processor (
)
Stream
containing the SVG to parse and process
used by the processor
containing the root renderer and metadata of the svg
Use the default implementation of
to convert an XML
DOM tree to a node renderer tree.
the XML DOM tree
a node renderer tree corresponding to the passed XML DOM tree
Use the default implementation of
to convert an XML
DOM tree to a node renderer tree.
Use the default implementation of
to convert an XML
DOM tree to a node renderer tree. The passed properties can modify the default behaviour
the XML DOM tree
to customize the behavior
a node renderer tree corresponding to the passed XML DOM tree
Parse a String containing valid SVG into an XML DOM node, using the
default JSoup XML parser.
the String value containing valid SVG content
an XML DOM tree corresponding to the passed String input
Parse a Stream containing valid SVG into an XML DOM node, using the
default JSoup XML parser.
Parse a Stream containing valid SVG into an XML DOM node, using the
default JSoup XML parser. This method will assume that the encoding of
the Stream is
UTF-8.
the
Stream
object containing valid SVG content
an XML DOM tree corresponding to the passed String input
Parse a Stream containing valid SVG into an XML DOM node, using the
default JSoup XML parser.
Parse a Stream containing valid SVG into an XML DOM node, using the
default JSoup XML parser. This method will assume that the encoding of
the Stream is
UTF-8
, unless specified otherwise by the method
of the
parameter.
the
Stream
object containing valid SVG content
to customize the behavior
an XML DOM tree corresponding to the passed String input
Extract width and height of the passed SVGNodeRenderer,
defaulting to respective viewbox values if either one is not present or
to browser default if viewbox is missing as well
float[2], width is in position 0, height in position 1
Tries to extract charset from
.
converter properties
charset | null
Tries to extract baseUri from
.
converter properties
baseUrl | null
Utility class for resolving parent-inheritance of style and attribute declarations
List to store the properties whose value can depend on parent or element font-size
Merge parent style declarations for passed styleProperty into passed style map
the styles map
the style property
the parent properties value
the parent font-size for resolving relative, font-dependent attributes
Check all inheritance rule-sets to see if the passed property is inheritable
property identifier to check
True if the property is inheritable by one of the rule-sets,
false if it is not marked as inheritable in all rule-sets
Check to see if the passed value is a measurement of the type based on the passed measurement symbol string
string containing value to check
measurement symbol (e.g. % for relative, px for pixels)
True if the value is numerical and ends with the measurement symbol, false otherwise
Helper class that allows you to check if a property is inheritable.
Set of inheritable SVG style attributes
in accordance with "http://www.w3schools.com/cssref/"
and "https://developer.mozilla.org/en-US/docs/Web/CSS/Reference"
Style and attribute inheritance resolver for
objects
Apply style and attribute inheritance to the tree formed by the root and the subTree
Renderer to consider as the root of the substree
tree of
s
Default implementation of SVG`s styles and attribute resolver .
The device description.
The list of fonts.
The style-resolver util responsible for resolving inheritance rules
The resource resolver
Creates a
with a given default CSS.
the default CSS
Creates a SvgStyleResolver.
Creates a SvgStyleResolver.
Creates a SvgStyleResolver. This constructor will instantiate its internal style sheet and it
will collect the css declarations from the provided node.
node to collect css from
the processor context
Resolves the full path of Link href attribute,
thanks to the resource resolver.
attribute to process
Checks if string starts with #.
test string
Gets the list of fonts.
the list of
instances
Collects fonts from the style sheet.
Collects fonts from a
.
the CSS statement
Context necessary for evaluating certain Css statements whose final values depends on other statements
e.g. relative font-size statements.
Class that holds the logging and exception messages.
Message in case the font provider doesn't know about any fonts.
Exception thrown by
when it cannot process an SVG
Creates a new SvgProcessingException instance.
the message
Creates a new SvgProcessingException instance.
the message
the nested exception
Default implementation of
.
Default implementation of
.
This implementation traverses the
tree depth-first,
using a stack to recreate a tree of
with the same structure.
Instantiates a DefaultSvgProcessor object.
Load in configuration, set initial processorState and create/fill-in context of the processor
that contains configuration properties and operations
Start the depth-first traversal of the INode tree, pushing the results on the stack
node to start on
Extract result from internal processorState and clean up afterwards
Root renderer of the processed SVG
Recursive visit of the object tree, depth-first, processing the visited node and calling visit on its children.
Recursive visit of the object tree, depth-first, processing the visited node and calling visit on its children.
Visit responsibilities for element nodes:
- Assign styles(CSS and attributes) to element
- Create Renderer based on element
- push and pop renderer to stack
Visit responsibilities for text nodes
- add text to parent object
INode to visit
Create renderer based on the passed SVG tag and assign its parent
SVG tag with all style attributes already assigned
renderer of the parent tag
Configured renderer for the tag
Check if this node is a text node that needs to be processed by the parent
node to check
true if the node should be processed as text, false otherwise
Process the text contained in the text-node
node containing text to process
Find the first element in the node-tree that corresponds with the passed tag-name.
Find the first element in the node-tree that corresponds with the passed tag-name. Search is performed depth-first
root-node to start with
name of the tag that needs to be fonund
IElementNode
Class that will examine the font as described in the CSS, and store it
in a form that the font provider will understand.
Name that will be used as the alias of the font.
A list of font face sources.
Create a
instance from a list of
CSS font attributes ("font-family" or "src").
the font properties
the
instance
Processes and splits a string sequence containing a url/uri
a string representing css src attribute
Gets the font-family.
Gets the font-family.
Actually font-family is an alias.
the font family (or alias)
Gets the font face sources.
the sources
Instantiates a new font face.
the font-family (or alias)
the sources
Class that defines a font face source.
The UrlPattern used to compose a source path.
The Constant TypeGroup.
The Constant UrlGroup.
The Constant FormatGroup.
The font format.
The source path.
Indicates if the font is local.
Creates a
object by parsing a
trying to match patterns that reveal the font name, whether that font is local,
and which format the font is in.
a string containing information about a font
the font in the form of a
object
Parses a
to a font format.
a string
a font format
Removes single and double quotes at the start and the end of a
.
a
that might be between quotes
the
without the quotes
Instantiates a new
instance.
a source path
indicates if the font is local
the font format (true type, open type, woff,...)
The Enum FontFormat.
"truetype"
"opentype"
"woff"
"woff2"
"embedded-opentype"
"svg"
Class that processes and add resolved css fonts to the FontProvider
Adds @font-face fonts to the FontProvider.
the css styles resolver
Creates a font and adds it to the context.
the font family
the source of the font
true, if successful
Checks whether in general we support requested font format.
true, if supported or unrecognized.
Internal ProcessorState representation for
Instantiates the processor state.
Returns the amount of ISvgNodeRenderers being processed.
amount of ISvgNodeRenderers
Adds an ISvgNodeRenderer to the processor's state.
renderer to be added to the state
Removes and returns the first renderer of the processor state.
the removed ISvgNodeRenderer object
Returns the first ISvgNodeRenderer object without removing it.
the first ISvgNodeRenderer
Returns true when the processorstate is empty, false when there is at least one ISvgNodeRenderer in the state.
true if empty, false if not empty
Default and fallback implementation of
for
The media device description.
The font provider.
The base URI.
Creates a SvgConverterProperties object.
Creates a SvgConverterProperties object. Instantiates its members, ICssResolver and ISvgNodeRenderer, to its default implementations.
Gets the base URI.
the base URI
Gets the font provider.
the font provider
Gets the media device description.
the media device description
Sets the media device description.
the media device description
the ConverterProperties instance
Sets the base URI.
the base URI
the ConverterProperties instance
Context class with accessors to properties/objects used in processing Svg documents
The font provider.
Temporary set of fonts used in the PDF.
The device description.
Instantiates a new
instance.
a
instance
Gets the font provider.
the font provider
Gets the resource resolver.
the resource resolver
Gets the device description.
the device description
Gets the temporary set of fonts.
the set of fonts
Add temporary font from @font-face.
the font program
the encoding
the alias
Add temporary font from @font-face.
the font info
the alias
A wrapper class that encapsulates processing results of
objects.
Interface for the configuration classes used by
Retrieve the factory responsible for creating
A
implementation
Gets the font provider.
the font provider
Get the name of the Charset to be used when decoding an InputStream.
Get the name of the Charset to be used when decoding an InputStream. This
method is allowed to return null, in which case
UTF-8
will
be used (by JSoup).
Please be aware that this method is NOT used when handling a
String
variable in the
.
the String name of the
used for decoding
Gets the base URI.
the base URI
Gets the media device description.
the media device description
Interface for SVG processors.
Interface for SVG processors.
Processors take the root
that corresponds to a Svg element
and return a
that serves as the root for the same SVG
Process an SVG, returning the root of a renderer-tree and a list
of named objects wrapped in a processor result object
Root of the INode representation of the SVG
configuration properties
root of the renderer-tree representing the SVG wrapped in {link
}
Interface for SVG processors results.
Obtains a map of named-objects with their id's as keys and the objects as values
Map of Strings as keys and
as values
Obtains the wrapped
root renderer.
ISvgNodeRenderer
Obtains the
.
FontProvider
Obtains the list of temporary fonts
FontSet
The default implementation of
that will be
used by default by the entry points defined by this project.
Default constructor which uses the default
implementation.
Constructor which allows injecting a custom
implementation.
the custom mapper implementation - if null, then we fall
back to the
The implementation of
that will be used by
default in the
.
The implementation of
that will be used by
default in the
. It contains the mapping
of the default implementations, provided by this project for the standard SVG
tags as defined in the SVG Specification.
Interface for the factory used by
.
Interface for the factory used by
.
Pass along using
.
Create a configured renderer based on the passed Svg tag and set its parent.
Representation of the Svg tag, with all style attributes set
renderer of the parent tag
Configured ISvgNodeRenderer
Checks whether the provided tag is an ignored tag of this factory or not.
Checks whether the provided tag is an ignored tag of this factory or not. If ignored, the factory won't process this IElementNode into an ISvgNodeRenderer.
the IElementNode
true if ignored
Interface that will provide a mapping from SVG tag names to Renderers that
will be able to draw them.
Interface that will provide a mapping from SVG tag names to Renderers that
will be able to draw them. It's used in
to allow customizability in client code, and dependency injection in tests.
Gets the map from tag names to Renderer classes.
a
with Strings as keys and {link @ISvgNodeRenderer}
implementations as values
Get the list of tags that do not map to any Renderer and should be ignored
a collection of ignored tags
Interface that defines branches in the NodeRenderer structure.
Interface that defines branches in the NodeRenderer structure. Differs from a leaf renderer
in that a branch has children and as such methods that can add or retrieve those children.
Adds a renderer as the last element of the list of children.
any renderer
Gets all child renderers of this object.
the list of child renderers (in the order that they were added)
Abstract class that will be the superclass for any element that can function
as a parent.
Method that will set properties to be inherited by this branch renderer's
children and will iterate over all children in order to draw them.
the object that knows the place to draw this element and
maintains its state
Applies a transformation based on a viewBox for a given branch node.
current svg draw context
Applies a clipping operation based on the view port.
the svg draw context
If present, process the preserveAspectRatio position.
the svg draw context
the four values depicting the viewbox [min-x min-y width height]
alignment method to use
the multiplier for scaling width
the multiplier for scaling height
the transformation based on the preserveAspectRatio value
Cleans up the SvgDrawContext by removing the current viewport and by popping the current canvas.
context to clean
Create a deep copy of every child renderer and add them to the passed
renderer to add copies of children to
abstract implementation.
Map that contains attributes and styles used for drawing operations
Applies transformations set to this object, if any, and delegates the drawing of this element and its children
to the
doDraw
method.
the object that knows the place to draw this element and maintains its state
Method to see if a certain renderer can use fill.
true if the renderer can use fill
Method to see if the renderer can create a viewport
true if the renderer can construct a viewport
Make a deep copy of the styles and attributes of this renderer
Helper method for deep copying logic
renderer to insert the deep copied attributes into
Draws this element to a canvas-like object maintained in the context.
the object that knows the place to draw this element and maintains its state
Calculate the transformation for the viewport based on the context.
Calculate the transformation for the viewport based on the context. Only used by elements that can create viewports
the SVG draw context
the transformation that needs to be applied to this renderer
Operations to be performed after drawing the element.
Operations to be performed after drawing the element.
This includes filling, stroking.
the svg draw context
Operations to perform before drawing an element.
Operations to perform before drawing an element.
This includes setting stroke color and width, fill color.
the svg draw context
implementation for the <circle> tag.
This renderer represents a collection of elements (simple shapes and paths).
This renderer represents a collection of elements (simple shapes and paths).
The elements are not drawn visibly, but the union of their shapes will be used
to only show the parts of the drawn objects that fall within the clipping path.
In PDF, the clipping path operators use the intersection of all its elements, not the union (as in SVG);
thus, we need to draw the clipped elements multiple times if the clipping path consists of multiple elements.
implementation for the <circle> tag.
Fetches a map of String values by calling getAttribute(Strng s) method
and maps it's values to arc parmateter cx, cy , rx, ry respectively
boolean values to indicate whether all values exit or not
This renderer represents a branch in an SVG tree.
This renderer represents a branch in an SVG tree. It doesn't do anything aside from calling the superclass doDraw.
Responsible for drawing Images to the canvas.
Responsible for drawing Images to the canvas.
Referenced SVG images aren't supported yet. TODO RND-984
implementation for the <line> tag.
Tags mapped onto this renderer won't be drawn and will be excluded from the renderer tree when processed.
Tags mapped onto this renderer won't be drawn and will be excluded from the renderer tree when processed.
Different from being added to the ignored list as this Renderer will allow its children to be processed.
implementation for the <path> tag.
The regular expression to find invalid operators in the PathData attribute of the <path> element
The regular expression to find invalid operators in the PathData attribute of the <path> element
Find any occurrence of a letter that is not an operator
The regular expression to split the PathData attribute of the <path> element
The regular expression to split the PathData attribute of the <path> element
Since
is called before the use of this expression in
the attribute to be split is valid.
SVG defines 6 types of path commands, for a total of 20 commands:
MoveTo: M, m
LineTo: L, l, H, h, V, v
Cubic Bezier Curve: C, c, S, s
Quadratic Bezier Curve: Q, q, T, t
Elliptical Arc Curve: A, a
ClosePath: Z, z
The
representing the current point in the path to be used for relative pathing operations.
The
representing the current point in the path to be used for relative pathing operations.
The original value is the origin, and should be set via a
operation before it may be referenced.
The
shape keeping track of the initial point set by a
operation.
The
shape keeping track of the initial point set by a
operation.
The original value is
, and must be set via a
operation before it may be drawn.
Gets the coordinates that shall be passed to
for the current shape.
The current shape.
The previous shape which can affect the coordinates of the current shape.
The operator and all arguments as an array of
String
s
a
array of coordinates that shall be passed to
Processes an individual pathing operator and all of its arguments, converting into one or more
objects.
The property operator and all arguments as an array of
s
The previous shape which can affect the positioning of the current shape. If no previous
shape exists
is passed.
a
of each
that should be drawn to represent the operator.
Processes the
and converts them
into one or more
objects to be drawn on the canvas.
Processes the
and converts them
into one or more
objects to be drawn on the canvas.
Each individual operator is passed to
to be processed individually.
a
of each
that should be drawn to represent the path.
Iterate over the input string and separate numbers from each other with space chars
Gets an array of strings representing operators with their arguments, e.g. {"M 100 100", "L 300 100", "L200, 300", "z"}
Root renderer responsible for applying the initial axis-flipping transform
Creates a
instance.
root of the subtree
implementation for the <polygon> tag.
Calls setPoints(String) to set
Then calls
to create a path between the first and last point if it doesn't already exist
Appends the starting point to the end of
if it is not already there.
implementation for the <polyline> tag.
A List of
objects representing the path to be drawn by the polyline tag
Parses a string of space separated x,y pairs into individual
objects and appends them to
.
Parses a string of space separated x,y pairs into individual
objects and appends them to
.
Throws an
if pointsAttribute does not have a valid list of numerical x,y pairs.
A string of space separated x,y value pairs
Draws this element to a canvas-like object maintained in the context.
the object that knows the place to draw this element and maintains its state
implementation for the <rect> tag.
Constructs a RectangleSvgNodeRenderer.
a radius must be positive, and cannot be more than half the distance in
the dimension it is for.
a radius must be positive, and cannot be more than half the distance in
the dimension it is for.
e.g. rx <= width / 2
In case of a circular radius, the calculation in
isn't enough: the radius cannot be more than half of the smallest
dimension.
In case of a circular radius, the calculation in
isn't enough: the radius cannot be more than half of the smallest
dimension.
This method assumes that
has already run, and it is
silently assumed (though not necessary for this method) that either
or
is zero.
implementation for the <svg> tag.
Calculate the viewport based on the context.
the SVG draw context
the viewport that applies to this renderer
implementation for drawing text to a canvas.
implementation for the <text> and <tspan> tag.
Top level transformation to flip the y-axis results in the character glyphs being mirrored, this tf corrects for this behaviour
Placeholder default font-size until DEVSIX-2607 is resolved
Method that will set properties to be inherited by this branch renderer's
children and will iterate over all children in order to draw them.
the object that knows the place to draw this element and
maintains its state
Renderer implementing the use tag.
Renderer implementing the use tag. This tag allows you to reuse previously defined elements.
The reference value will contain a hashtag character.
The reference value will contain a hashtag character. This method will filter that value.
value to be filtered
filtered value
Interface for SvgNodeRenderer, the renderer draws the SVG to its Pdf-canvas
passed in
, applying styling
(CSS and attributes).
Sets the parent of this renderer.
Sets the parent of this renderer. The parent may be the source of
inherited properties and default values.
the parent renderer
Gets the parent of this renderer.
Gets the parent of this renderer. The parent may be the source of
inherited properties and default values.
the parent renderer; null in case of a root node
Draws this element to a canvas-like object maintained in the context.
the object that knows the place to draw this element and
maintains its state
Sets the map of XML node attributes and CSS style properties that this
renderer needs.
the mapping from key names to values
Retrieves the property value for a given key name.
the name of the property to search for
the value for this key, or
Sets a property key and value pairs for a given attribute
the name of the attribute
the value of the attribute
Get a modifiable copy of the style and attribute map
copy of the attributes and styles-map
Creates a deep copy of this renderer, including it's subtree of children
deep copy of this renderer
This class handles common behaviour in IPathShape implementations
The properties of this shape.
Whether this is a relative operator or not.
Implements closePath(Z) attribute of SVG's path element
Implements curveTo(C) attribute of SVG's path element
Implements elliptical curveTo (A) segment of SVG's path element.
Implements elliptical curveTo (A) segment of SVG's path element. Implemented in PDF as Bézier curves.
Edge cases & value correction below always refer to https://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
For some calculations we need double precision floating point math, so we have forced all calculations to use double.
However, float comparison is used instead of double comparison, because close coordinates can be considered equal.
Creates an absolute Elliptical curveTo.
Creates a Elliptical curveTo.
Creates a Elliptical curveTo. Set argument to true to create a relative EllipticalCurveTo.
whether this is a relative EllipticalCurveTo or not
This convenience method rotates a given set of points around a given point
the input list
the rotation angle, in radians
the point to rotate around
the list of rotated points
Converts between two types of definitions of an arc:
The input is an arc defined by two points and the two semi-axes of the ellipse.
Converts between two types of definitions of an arc:
The input is an arc defined by two points and the two semi-axes of the ellipse.
The output is an arc defined by a bounding rectangle, the starting angle,
and the angular extent of the ellipse that is to be drawn.
The output is an intermediate step to calculating the Bézier curve(s) that approximate(s) the elliptical arc,
which happens in
.
Implements lineTo(H) attribute of SVG's path element
Creates an absolute Horizontal LineTo.
Creates a Horizontal LineTo.
Creates a Horizontal LineTo. Set argument to true to create a relative HorizontalLineTo.
whether this is a relative HorizontalLineTo or not
Interface that describes a Path object which is defined by control points.
Interface that describes a Path object which is defined by control points. In practice this only means Bézier curves,
both quadratic (one control point) and cubic (two control points). This interface is relevant in the context of
Smooth (Shorthand) Bézier curves, which omit a control point from their arguments list because it can be calculated
from the last control point of the previous curve. Therefore, the last control point of a curve must be exposed to
the
algorithm.
Returns coordinates of the last control point (the one closest to the ending point)
in the Bezier curve, in SVG space coordinates
coordinates of the last control point in SVG space coordinates
A locally used strategy for converting relative coordinates to absolute coordinates (in the current SVG coordinate
space).
A locally used strategy for converting relative coordinates to absolute coordinates (in the current SVG coordinate
space). Its implementation differs between Smooth (Shorthand) Bézier curves and all other path commands.
Convert an array of relative coordinates to an array with the same size containing absolute coordinates.
the initial set of coordinates
an array representing the point relative to which the relativeCoordinates are defined
a String array of absolute coordinates, with the same length as the input array
Implementation of
specifically for smooth curves.
Implementation of
specifically for smooth curves. It will convert all operators from
relative to absolute coordinates except the first coordinate pair.
This implementation is used by the Smooth (Shorthand) Bézier curve commands, because the conversion of the first
coordinate pair is calculated in
.
Default implementation of
used by the regular (not-smooth) curves and other path commands.
Default implementation of
used by the regular (not-smooth) curves and other path commands.
It will convert all operators from relative to absolute coordinates.
Implements lineTo(L) attribute of SVG's path element
Implements moveTo(M) attribute of SVG's path element
The implementation of
that will be used by
sub classes of
To map the path-data
instructions(moveto, lineto, corveto ...) to their respective implementations.
Implements quadratic Bezier curveTo(Q) attribute of SVG's path element
Draws a quadratic Bezier curve from the current point to (x,y) using (x1,y1) as the control point
Implements shorthand/smooth quadraticCurveTo (T) attribute of SVG's path element
Implements shorthand/smooth curveTo (S) attribute of SVG's path element
Implements lineTo(V) attribute of SVG's path element
Creates an absolute Vertical LineTo.
Creates a Vertical LineTo.
Creates a Vertical LineTo. Set argument to true to create a relative VerticalLineTo.
whether this is a relative VerticalLineTo or not
Interface for IPathShape, which draws the Path-data's d element instructions.
Draws this instruction to a canvas object.
to which this instruction is drawn
This method sets the coordinates for the path painting operator and does internal
preprocessing, if necessary
an array containing point values for path coordinates
the ending point of the previous operator, or, in broader terms,
the point that the coordinates should be absolutized against, for relative operators
Gets the ending point on the canvas after the path shape has been drawn
via the
method, in SVG space coordinates.
The
representing the final point in the drawn path.
If the point does not exist or does not change
may be returned.
Returns true when this shape is a relative operator.
Returns true when this shape is a relative operator. False if it is an absolute operator.
true if relative, false if absolute
Interface that will provide a mapping from path element-data instruction names to
.
Provides a mapping of Path-data instructions' names to path shape classes.
a
with Strings as keys and {link @
implementations as values
A factory for creating
objects.
Creates a configured
object based on the passed Svg path data instruction tag.
svg path element's path-data instruction name.
IPathShape implementation
Finds the appropriate number of arguments for a path command, based on the passed Svg path data instruction tag.
svg path element's path-data instruction name.
an integer value with the required number of arguments or null if there is no mapping for the given value
The SvgDrawContext keeps a stack of
instances, which
represent all levels of XObjects that are added to the root canvas.
Retrieves the current top of the stack, without modifying the stack.
the current canvas that can be used for drawing operations.
Retrieves the current top of the stack, thereby taking the current item
off the stack.
the current canvas that can be used for drawing operations.
Adds a
to the stack (by definition its top), for use in
drawing operations.
the new top of the stack
Get the current size of the stack, signifying the nesting level of the
XObjects.
the current size of the stack.
Adds a viewbox to the context.
rectangle representing the current viewbox
Get the current viewbox.
the viewbox as it is currently set
Remove the currently set view box.
Adds a named object to the draw context.
Adds a named object to the draw context. These objects can then be referenced from a different tag.
name of the object
object to be referenced
Get a named object based on its name.
Get a named object based on its name. If the name isn't listed, this method will return null.
name of the object you want to reference
the referenced object
Gets the ResourceResolver to be used during the drawing operations.
resource resolver instance
* Adds a number of named object to the draw context.
* Adds a number of named object to the draw context. These objects can then be referenced from a different tag.
Map containing the named objects keyed to their ID strings
Gets the FontProvider to be used during the drawing operations.
font provider instance
Gets list of temporary fonts from @font-face.
font set instance
Sets the FontSet.
font set to be used during drawing operations
Returns true when this id has been used before
element id to check
true if id has been encountered before through a use element
Adds an ID that has been referenced by a use element.
referenced element ID
Removes an ID that has been referenced by a use element.
referenced element ID
Get the text transformation that was last applied
representing the last text transformation
Set the last text transformation
last text transformation
Get the stored current text move
[horizontal text move, vertical text move]
Reset the stored text move to [0f,0f]
Increment the stored text move
horizontal value to add
vertical value to add
A class containing constant values signifying the proeprty names of tags, attribute, CSS-style
and certain values in SVG XML.
Class containing the constant property names for the tags in the SVG spec
Tag defining a Hyperlink.
Alternate glyphs to be used instead of regular grlyphs, e.g. ligatures, Asian scripts, ...
Defines a set of glyph substitions.
Defines a candidate set of glyph substitutions.
Not supported in PDF.
Not supported in PDF.
Not supported in PDF.
Not supported in PDF.
Tag defining a
circle.
7.1.2
Tag defining a clipping path.
Tag defining a clipping path. A clipping path defines the region where can be drawn. Anything outside the path won't be drawn.
Tag defining the color profile to be used.
Not supported in PDF
Tag defining objects that can be reused from another context
Tag defining the description of its parent element
Tag defining an
ellipse.
7.1.2
Tag defining how to blend two objects together.
Tag defining the color matrix transformations that can be performed.
Tag defining color component remapping.
Tag defining the combination of two input images.
Tag defining a matrix convolution filter
Tag defining the lighting map.
Tag defining the values to displace an image.
Tag defining a distant light source.
Tag defining the fill of a subregion.
Tag defining the transfer function for the Alpha component.
Tag defining the transfer function for the Blue component.
Tag defining the transfer function for the Green component.
Tag defining the transfer function for the Red component.
Tag defining the blur values.
Tag defining a image data from a source.
Tag defining that filters will be applied concurrently instead of sequentially.
Tag defining a node in a merge.
Tag defining the erosion or dilation of an image.
Tag defining the offset of an image.
Tag defining a point light effect.
Tag defining a lighting map.
Tag defining a spotlight.
Tag defining a fill that can be repeated.
Tag defining a fill that can be repeated. Similar to PATTERN.
Tag defining values for the perlin turbulence function.
Tag defining a collection of filter operations.
Tag defining a font.
Tag defining a font-face.
Tag defining the formats of the font.
Tag defining the name of the font.
Tag defining the source file of the font.
Tag defining the URI of a font.
Tag definign a foreign XML standard to be inserted.
Tag definign a foreign XML standard to be inserted. E.g. MathML
Tag defining a group of elements.
Tag defining a single glyph.
Tag defining a sigle glyph for altGlyph.
Tag defining the horizontal kerning values in between two glyphs.
Tag defining an image.
Tag defining a
line.
7.1.2
Tag defining a linear gradient
Tag defining a link
Tag defining the graphics (arrowheads or polymarkers) to be drawn at the end of paths, lines, etc.
Tag defining a mask.
Tag defining metadata.
Tag defining content to be rendered if a glyph is missing from the font.
Not supported in PDF
Tag defining a
path.
7.1.2
Tag defining a graphical object that can be repeated.
Tag defining a
polygon
shape.
7.1.2
Tag defining a
polyline
shape.
7.1.2
Tag defining a radial gradient
Tag defining a
rectangle.
7.1.2
Not supported in PDF.
Not supported in PDF.
Tag defining the ramp of colors in a gradient.
Tag defining the style to be.
Tag defining an
SVG
element.
7.1.2
Tag defining a switch element.
Tag defining graphical templates that can be reused by the use tag.
Tag defining text to be drawn on a page/screen.
7.1.2
Tag defining a path on which text can be drawn.
Tag defining the description of an element.
Tag defining the description of an element. Is not rendered.
Deprecated in SVG.
Deprecated in SVG. Tag defining text that was defined in an SVG document.
Tag defining a span within a text element.
Tag defining the use of a named object.
Tag defining how to view the image.
Tag defining the vertical kerning values in between two glyphs.
Class containing the constant property names for the attributes of tags in the SVG spec
Attribute defining the clipping path to be applied to a specific shape or group of shapes.
Attribute defining the clipping rule in a clipping path (or element thereof).
Attribute defining the x value of the center of a circle or ellipse.
Attribute defining the y value of the center of a circle or ellipse.
Attribute defining the outline of a shape.
Attribute defining the relative x-translation of a text-element
Attribute defining the relative y-translation of a text-element
Attribute defining the fill color.
Attribute defining the fill opacity.
Attribute defining the fill rule.
Attribute defining the font family.
Attribute defining the font weight.
Attribute defining the font style.
Attribute defining the font size.
The Constant ITALIC.
The Constant BOLD.
Attribute defining the height.
Attribute defining the height. Used in several elements.
Attribute defining the href value.
Attribute defining the unique id of an element.
Attribute defining the radius of a circle.
Attribute defining the x-axis of an ellipse or the x-axis radius of rounded rectangles.
Attribute defining the y-axis of an ellipse or the y-axis radius of rounded rectangles.
Attribute defining the opacity of a group or graphic element.
Close Path Operator.
CurveTo Path Operator.
Relative CurveTo Path Operator.
Attribute defining Elliptical arc path operator.
Attribute defining Elliptical arc path operator.
Smooth CurveTo Path Operator.
Relative Smooth CurveTo Path Operator.
Absolute LineTo Path Operator.
Absolute hrizontal LineTo Path Operator.
Relative horizontal LineTo Path Operator.
Absolute vertical LineTo Path operator.
Relative vertical LineTo Path operator.
Relative LineTo Path Operator.
MoveTo Path Operator.
Relative MoveTo Path Operator.
Shorthand/smooth quadratic Bézier curveto.
Relative Shorthand/smooth quadratic Bézier curveto.
Catmull-Rom curve command.
Relative Catmull-Rom curve command.
Bearing command.
Relative Bearing command.
Quadratic CurveTo Path Operator.
Relative Quadratic CurveTo Path Operator.
Attribute defining the points of a polyline or polygon.
Attribute defining how to preserve the aspect ratio when scaling.
Attribute defining the stroke color.
Attribute defining the stroke dash offset.
Attribute defining the stroke dash offset.
Attribute defining the stroke linecap.
Attribute defining the stroke miterlimit.
Attribute defingin the stroke opacity.
Attribute defining the stroke width.
Attribute defining the style of an element.
Attribute defining the text content of a text node.
Attribute defining the text anchor used by the text
Attribute defining a transformation that needs to be applied.
Attribute defining the viewbox of an element.
Attribute defining the width of an element.
Attribute defining the x value of an element.
Attribute defining the first x coordinate value of a line.
Attribute defining the second x coordinate value of a line.
Attribute defining image source.
Attribute defining XML namespace
Attribute defining the y value of an element.
Attribute defining the first y coordinate value of a line.
Attribute defining the second y coordinate value of a line.
Attribute defining version
Class containing the constants for values appearing in SVG tags and attributes
Value representing the default value for the stroke linecap.
Value representing the default aspect ratio: xmidymid.
Value representing how to preserve the aspect ratio when dealing with images.
Value representing the fill rule "even odd".
Value representing the fill rule "nonzero".
Value representing the meet for preserve aspect ratio calculations.
Value representing the "none" value".
The value representing slice for the preserve aspect ratio calculations;
The value corresponding with the namespace url for SVG.
The value corresponding with the namespace url for SVG. Will be removed since version 7.2.
Value representing the text-alignment end for text objects
Value representing the text-alignment middle for text objects
Value representing the text-alignment start for text objects
Value representing how to align when scaling.
Value representing how to align when scaling.
Value representing how to align when scaling.
Value representing how to align when scaling.
Value representing how to align when scaling.
Value representing how to align when scaling.
Value representing how to align when scaling.
Value representing how to align when scaling.
Value representing how to align when scaling.
Utility class for drowing shapes on
Draw an arc on the passed canvas,
enclosed by the rectangle for which two opposite corners are specified.
Draw an arc on the passed canvas,
enclosed by the rectangle for which two opposite corners are specified.
The arc starts at the passed starting angle and extends to the starting angle + extent
corner-coordinate of the enclosing rectangle, first corner
corner-coordinate of the enclosing rectangle, first corner
corner-coordinate of the enclosing rectangle, second corner
corner-coordinate of the enclosing rectangle, second corner
starting angle in degrees
extent of the arc
canvas to paint on
Converts relative coordinates to absolute ones.
Converts relative coordinates to absolute ones. Assumes that relative coordinates are represented by
an array of coordinates with length proportional to the length of current coordinates array,
so that current coordinates array is applied in segments to the relative coordinates array
the initial set of coordinates
an array representing the point relative to which the relativeCoordinates are defined
a String array of absolute coordinates, with the same length as the input array
Utility class that facilitates parsing values from CSS.
Splits a given String into a list of substrings.
Splits a given String into a list of substrings.
The string is split up by commas and whitespace characters (\t, \n, \r, \f).
the string to be split
a list containing the split strings, an empty list if the value is null or empty
Converts a float pts values to pixels
the value to be converted pixels
float converted value pts*0.75f
Converts a float to a String.
to be converted float value
the value in a String representation
Converts a double to a String.
to be converted double value
the value in a String representation
Checks if an
represents a style sheet link.
the head child element
true, if the element node represents a style sheet link
This file is a helper class for internal usage only.
Be aware that its API and functionality may be changed in future.
Use the passed pattern to check if there's at least one match in the passed string
regex pattern that describes the match
string to search matches in
True if there's at least one match in the string, false otherwise
Class containing utility methods for text operations in the context of SVG processing
Trim all the leading whitespace characters from the passed string
string to trim
string with all leading whitespace characters removed
Trim all the trailing whitespace characters from the passed string
string to trim
string with al trailing whitespace characters removed
Process the whitespace inside the Text Tree.
Process the whitespace inside the Text Tree.
Whitespace is collapsed and new lines are handled
A leading element in each subtree is handled different: the preceding whitespace is trimmed instead of kept
root of the text-renderer subtree
true if this element is a leading element(either the first child or the first element after an absolute position change)
Check if the String is only composed of whitespace characters
string to check
true if the string only contains whitespace characters, false otherwise
Resolve the font size stored inside the passed renderer
renderer containing the font size declaration
parent font size to fall back on if the renderer does not contain a font size declarations or if the stored declaration is invalid
float containing the font-size, or the parent font size if the renderer's declaration cannot be resolved
Utility class responsible for converting Strings containing transformation declarations
into AffineTransform objects.
Utility class responsible for converting Strings containing transformation declarations
into AffineTransform objects.
This class only supports the transformations as described in the SVG specification:
- matrix
- rotate
- scale
- skewX
- skewY
- translate
Keyword for matrix transformations.
Keyword for matrix transformations. Accepts 6 values.
matrix(0 1 2 3 4 5)
Keyword for rotation transformation.
Keyword for rotation transformation. Accepts either 1 or 3 values.
In the case of 1 value, x and y are assumed to be the origin of the user space.
rotate(angle x y)
rotate(angle)
Keyword for scale transformation.
Keyword for scale transformation. Accepts either 1 or 2 values.
In the case of 1 value, the second value is assumed to be the same as the first one.
scale(x y)
scale(x)
Keyword for skewX transformation.
Keyword for skewX transformation. Accepts 1 value.
skewX(angle)
Keyword for skewY transformation.
Keyword for skewY transformation. Accepts 1 value.
skewY(angle)
Keyword for translate transformation.
Keyword for translate transformation. Accepts either 1 or 2 values.
In the case of 1 value, the y value is assumed to be 0.
translate(x y)
translate(x)
Converts a string containing a transform declaration into an AffineTransform object.
Converts a string containing a transform declaration into an AffineTransform object.
This class only supports the transformations as described in the SVG specification:
- matrix
- translate
- skewx
- skewy
- rotate
- scale
value to be parsed
the AffineTransform object
A transformation attribute can encompass multiple transformation operation (e.g. "translate(10,20) scale(30,40)".
A transformation attribute can encompass multiple transformation operation (e.g. "translate(10,20) scale(30,40)".
This method splits the original transformation string into multiple strings so that they can be handled separately.
the transformation value
a list containing strings describing a single transformation operation
This method decides which transformation operation the given transformation strings maps onto.
string containing a transformation operation
the mapped AffineTransform object
Creates a skewY transformation.
values of the transformation
AffineTransform for the skew operation
Creates a skewX transformation.
values of the transformation
AffineTransform for the skew operation
Creates a rotate transformation.
values of the transformation
AffineTransform for the rotate operation
Creates a scale transformation.
values of the transformation
AffineTransform for the scale operation
Creates a translate transformation.
values of the transformation
AffineTransform for the translate operation
Creates a matrix transformation.
values of the transformation
AffineTransform for the matrix keyword
This method extracts the transformation name given a transformation.
the transformation
the name of the transformation
This method extracts the values from a transformation.
the transformation
values of the transformation