Class SVGConverter


  • public class SVGConverter
    extends java.lang.Object
    This application can be used to convert SVG images to raster images.
    Possible result raster image formats are PNG, JPEG, TIFF, and PDF. The Batik Transcoder API is used to execute the conversion. FOP is needed to be able to transcode to the PDF format
    The source has to be list of files or URL (set by the setSources method).
    The destination can be:
    • unspecified. In that case, only file sources can be converted and a file in the same directory as the source will be created.
    • a directory, set by the setDst method. In that case, the output files are created in that destination directory
    • a file. In case there is a single source, the destination can be a single named file (set with the setDst method.)

    There are a number of options which control the way the image is converted to the destination format:
    • destinationType: controls the type of conversion which should be done. see the DestinationType documentation.
    • width/height: they control the desired width and height, in user space, for the output image.
    • maxWidth/maxHeight: control the maximum width and height, in user space, of the output image.
    • area: controls the specific sub-area of the image which should be rendered.
    • backgroundColor: controls the color which is used to fill the background before rendering the image
    • quality: relevant only for JPEG destinations, this controls the encoding quality.
    • indexed: relevant only for PNG, controls the number of bits used in writting of a palletized files.
    • mediaType: controls the CSS media, or list of media, for which the image should be rendered.
    • alternate: controls the alternate CSS stylesheet to activate, if any.
    • language: controls the user language with which the SVG document should be converted.
    • userStylesheet: defines the user stylesheet to apply to SVG documents in addition to other stylesheets referenced by or embedded in the SVG documents.
    • pixelUnitToMillimeter: defines the size of a pixel in millimeters to use when processing the SVG documents.
    • Field Detail

      • ERROR_NO_SOURCES_SPECIFIED

        public static final java.lang.String ERROR_NO_SOURCES_SPECIFIED
        See Also:
        Constant Field Values
      • ERROR_CANNOT_COMPUTE_DESTINATION

        public static final java.lang.String ERROR_CANNOT_COMPUTE_DESTINATION
        See Also:
        Constant Field Values
      • ERROR_CANNOT_USE_DST_FILE

        public static final java.lang.String ERROR_CANNOT_USE_DST_FILE
        See Also:
        Constant Field Values
      • ERROR_CANNOT_ACCESS_TRANSCODER

        public static final java.lang.String ERROR_CANNOT_ACCESS_TRANSCODER
        See Also:
        Constant Field Values
      • ERROR_SOURCE_SAME_AS_DESTINATION

        public static final java.lang.String ERROR_SOURCE_SAME_AS_DESTINATION
        See Also:
        Constant Field Values
      • ERROR_CANNOT_READ_SOURCE

        public static final java.lang.String ERROR_CANNOT_READ_SOURCE
        See Also:
        Constant Field Values
      • ERROR_CANNOT_OPEN_SOURCE

        public static final java.lang.String ERROR_CANNOT_OPEN_SOURCE
        See Also:
        Constant Field Values
      • ERROR_OUTPUT_NOT_WRITEABLE

        public static final java.lang.String ERROR_OUTPUT_NOT_WRITEABLE
        See Also:
        Constant Field Values
      • ERROR_CANNOT_OPEN_OUTPUT_FILE

        public static final java.lang.String ERROR_CANNOT_OPEN_OUTPUT_FILE
        See Also:
        Constant Field Values
      • ERROR_UNABLE_TO_CREATE_OUTPUT_DIR

        public static final java.lang.String ERROR_UNABLE_TO_CREATE_OUTPUT_DIR
        See Also:
        Constant Field Values
      • ERROR_WHILE_RASTERIZING_FILE

        public static final java.lang.String ERROR_WHILE_RASTERIZING_FILE
        See Also:
        Constant Field Values
      • SVG_EXTENSION

        protected static final java.lang.String SVG_EXTENSION
        SVG file extension
        See Also:
        Constant Field Values
      • DEFAULT_QUALITY

        protected static final float DEFAULT_QUALITY
        Default quality value. A value of -1 means disabled.
        See Also:
        Constant Field Values
      • MAXIMUM_QUALITY

        protected static final float MAXIMUM_QUALITY
        Maximum quality value
        See Also:
        Constant Field Values
      • DEFAULT_RESULT_TYPE

        protected static final DestinationType DEFAULT_RESULT_TYPE
        Default result type
      • DEFAULT_WIDTH

        protected static final float DEFAULT_WIDTH
        Default width
        See Also:
        Constant Field Values
      • DEFAULT_HEIGHT

        protected static final float DEFAULT_HEIGHT
        Default height
        See Also:
        Constant Field Values
      • height

        protected float height
        Output image height.
      • width

        protected float width
        Output image width.
      • maxHeight

        protected float maxHeight
        Maximum output image height.
      • maxWidth

        protected float maxWidth
        Maximum output image width.
      • quality

        protected float quality
        Output image quality.
      • indexed

        protected int indexed
        Should output Image be indexed .
      • area

        protected java.awt.geom.Rectangle2D area
        Output AOI area.
      • language

        protected java.lang.String language
        Language
      • userStylesheet

        protected java.lang.String userStylesheet
        User stylesheet
      • pixelUnitToMillimeter

        protected float pixelUnitToMillimeter
        Millimeters Per Pixel
      • validate

        protected boolean validate
        Validation flag
      • executeOnload

        protected boolean executeOnload
        Execute the 'onload' scripts flag
      • snapshotTime

        protected float snapshotTime
        Document time to seek to.
      • allowedScriptTypes

        protected java.lang.String allowedScriptTypes
        Set of allowed script types.
      • constrainScriptOrigin

        protected boolean constrainScriptOrigin
        Controls whether scripts can only have the same origin as the document which references them.
      • allowExternalResources

        protected boolean allowExternalResources
      • securityOff

        protected boolean securityOff
        Controls whether scripts should be run securely or not
      • sources

        protected java.util.List sources
        Sources files or URLs
      • dst

        protected java.io.File dst
        Destination image path. Can be a file (for single source) or a directory
      • backgroundColor

        protected java.awt.Color backgroundColor
        Background color for the output images.
      • mediaType

        protected java.lang.String mediaType
        Media type for which the SVG image should be rendered
      • defaultFontFamily

        protected java.lang.String defaultFontFamily
        Default value for the font-family when it is unspecified
      • alternateStylesheet

        protected java.lang.String alternateStylesheet
        Alternate stylesheet for which should be applied to the SVG
      • files

        protected java.util.List files
        Contents of fileset elements.
    • Constructor Detail

      • SVGConverter

        public SVGConverter()
    • Method Detail

      • setDestinationType

        public void setDestinationType​(DestinationType destinationType)
        Sets the destinationType attribute value. Should not be null.
      • setHeight

        public void setHeight​(float height)
        In less than or equal to zero, the height is not constrained on the output image. The height is in user space.
      • getHeight

        public float getHeight()
      • setWidth

        public void setWidth​(float width)
        In less than or equal to zero, the width is not constrained on the output image. The width is in user space.
      • getWidth

        public float getWidth()
      • setMaxHeight

        public void setMaxHeight​(float height)
        If less than or equal to zero, the maximum height does not have any effect on the output image. The maximum height is in user space.
      • getMaxHeight

        public float getMaxHeight()
      • setMaxWidth

        public void setMaxWidth​(float width)
        If less than or equal to zero, the maximum width does not have any effect on the output image. The maximum width is in user space.
      • getMaxWidth

        public float getMaxWidth()
      • setQuality

        public void setQuality​(float quality)
                        throws java.lang.IllegalArgumentException
        Sets the JPEG encoding quality. The value should be strictly less than 1. If the value is less than zero, then the maximum encoding quality is used.
        Throws:
        java.lang.IllegalArgumentException
      • getQuality

        public float getQuality()
      • setIndexed

        public void setIndexed​(int bits)
                        throws java.lang.IllegalArgumentException
        Tells the PNG encoder to reduce the image to 256 colors, so the PNG file is indexed.
        Throws:
        java.lang.IllegalArgumentException
      • getIndexed

        public int getIndexed()
      • setLanguage

        public void setLanguage​(java.lang.String language)
        Sets the user language. If the value is null, then the default (see UserAgent.getLanguages()) is used.
      • getLanguage

        public java.lang.String getLanguage()
      • setUserStylesheet

        public void setUserStylesheet​(java.lang.String userStylesheet)
        Sets the user stylesheet. May be null.
      • getUserStylesheet

        public java.lang.String getUserStylesheet()
      • setPixelUnitToMillimeter

        public void setPixelUnitToMillimeter​(float pixelUnitToMillimeter)
        Sets the millimeters per pixel constant. A negative value will cause the default value (see UserAgent.getPixelUnitToMillimeter()) to be used.
      • getPixelUnitToMillimeter

        public float getPixelUnitToMillimeter()
      • setArea

        public void setArea​(java.awt.geom.Rectangle2D area)
        Sets the area as a Rectangle. This value can be null in which case the whole image will be rendered. If the area is not null, then only the portion of the image it defines will be rendered.
      • getArea

        public java.awt.geom.Rectangle2D getArea()
      • setSources

        public void setSources​(java.lang.String[] sources)
        Sets the list of individual SVG sources. The strings can be either URLs or file names. Note that invalid sources (e.g., read-protected files or invalid URLs) will cause SVGConverterExceptions to be thrown during the transcoding process (see execute());
      • getSources

        public java.util.List getSources()
      • setDst

        public void setDst​(java.io.File dst)
        When converting a single source, dst can be a file. Othewise, it should be a directory.
      • getDst

        public java.io.File getDst()
      • setBackgroundColor

        public void setBackgroundColor​(java.awt.Color backgroundColor)
        Sets the backgroundColor value. This can be null in which case no color will be used to fill the background before rendering this SVG image.
      • getBackgroundColor

        public java.awt.Color getBackgroundColor()
      • setMediaType

        public void setMediaType​(java.lang.String mediaType)
        Sets the mediaType value. This value controls the CSS media for which the image should be rendered. It can be null, in which case no specific media selectors will apply. If it is not null, it can contain space separated values of the medias for which the image should be rendered. For example, "screen", "print" or "scree projection" are valid values.
      • getMediaType

        public java.lang.String getMediaType()
      • setDefaultFontFamily

        public void setDefaultFontFamily​(java.lang.String defaultFontFamily)
        Sets the defaultFontFamily value. This value controls the default value for the font-family CSS property when that property is unspecified.
      • getDefaultFontFamily

        public java.lang.String getDefaultFontFamily()
      • setAlternateStylesheet

        public void setAlternateStylesheet​(java.lang.String alternateStylesheet)
        Sets the alternateStyleSheet value. This value controls the CSS alternate stylesheet to select in the rendered SVG file(s). It may be null, in which case no alternate stylesheet will be selected.
      • getAlternateStylesheet

        public java.lang.String getAlternateStylesheet()
      • setValidate

        public void setValidate​(boolean validate)
        Defines whether or not input sources should be validated in the conversion process
      • getValidate

        public boolean getValidate()
      • setExecuteOnload

        public void setExecuteOnload​(boolean b)
        Sets whether or not scripts attached to the DOM using 'onload' event attribute must be executed before rasterizing.
        Parameters:
        b - true means scripts will be executed
      • getExecuteOnload

        public boolean getExecuteOnload()
        Returns true if the scripts attached to the DOM using 'onload' event attribute is going to be executed before rasterizing, false otherwise.
      • setSnapshotTime

        public void setSnapshotTime​(float t)
        Sets the document time to seek to before rasterizing.
        Parameters:
        t - the document time, in seconds
      • getSnapshotTime

        public float getSnapshotTime()
        Returns the document to to seek to before rasterizing.
      • setAllowedScriptTypes

        public void setAllowedScriptTypes​(java.lang.String allowedScriptTypes)
        Sets the set of allowed script types (i.e., the set of possible values for the type attribute in the <script> element), as a comma separated list of allowed values.
      • setConstrainScriptOrigin

        public void setConstrainScriptOrigin​(boolean constrainScriptOrigin)
        Sets whether scripts should only be loaded from the same location as the documents referencing them.
      • getConstrainScriptOrigin

        public boolean getConstrainScriptOrigin()
        Returns whether scripts can only be loaded from the same origin as the documents referencing them.
      • setSecurityOff

        public void setSecurityOff​(boolean securityOff)
        Sets whether or not scripts should be run securely
      • getSecurityOff

        public boolean getSecurityOff()
        Returns whether or not scripts will be run securely
      • isFile

        protected boolean isFile​(java.io.File f)
        Returns true if f is a File. f is found to be a file if it exists and is a file. If it does not exist, it is declared to be a file if it has the same extension as the DestinationType.
      • computeDstFiles

        protected java.util.List computeDstFiles​(java.util.List sources)
                                          throws SVGConverterException
        Populates a vector with destination files names computed from the names of the files in the sources vector and the value of the dst property
        Throws:
        SVGConverterException
      • computeSources

        protected java.util.List computeSources()
                                         throws SVGConverterException
        Populates a vector with the set of SVG files from the srcDir if it is not null and with the sources (files or URLs) if any.
        Throws:
        SVGConverterException
      • getFileNRef

        public java.lang.String[] getFileNRef​(java.lang.String fileName)
      • computeTranscodingHints

        protected java.util.Map computeTranscodingHints()
        Computes the set of transcoding hints to use for the operation
      • transcode

        protected void transcode​(SVGConverterSource inputFile,
                                 java.io.File outputFile,
                                 Transcoder transcoder)
                          throws SVGConverterException
        Converts the input image to the result image. with the given transcoder. If a failure happens, the controller is notified and decides whether to proceed or not. If it decides to proceed, the converter will continue processing other files. Otherwise, it will throw an exception.
        Throws:
        SVGConverterException
      • getDestinationFile

        protected java.lang.String getDestinationFile​(java.lang.String file)
        Get the name of the result image file.

        This method modifies the result filename, it changes the existing suffix to correspong the result file type. It also adds the suffix if the file doesn't have one.

        Parameters:
        file - Result file name as a String object.
        Returns:
        Name of the file. The directory of the file is not returned. The returned string is empty if the parameter is not a file.
      • createOutputDir

        protected void createOutputDir​(java.io.File output)
                                throws SVGConverterException
        Creates directories for output files if needed.
        Parameters:
        output - Output file with path.
        Throws:
        SVGConverterException - Output directory doesn't exist and it can't be created.
      • isWriteable

        protected boolean isWriteable​(java.io.File file)
        Checks if the application is allowed to write to the file.
        Parameters:
        file - File to be checked.
        Returns:
        true if the file is writeable and false otherwise.