The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Apache::AxKit::Language::Svg2AnyFormat - SVG Serializer

SYNOPSIS

ImageMagick

  AddHandler axkit .svg

  ## Fairly important to cache the output because
  ## transformation is highly CPU-Time and Memory consuming
  AxCacheDir /tmp/axkit_cache

  ## When using SvgCgiSerialize this is vital 
  ## because the cgi-parameters are not used
  ## by default to build the cache
  AxAddPlugin Apache::AxKit::Plugin::QueryStringCache

  <Files ~ *.svg>
    AxAddStyleMap application/svg2anyformat Apache::AxKit::Language::Svg2AnyFormat
    AxAddProcessor application/svg2anyformat NULL

    ## optional with this variable you can
    ## overwrite the default output format 
    ## PNG
    ## Supported Values:
    ##    image/jpeg
    ##    image/png
    ##    image/gif
    ##    application/pdf
    PerlSetVar SVGOutputMimeType image/jpeg
  
    ## optional module to pass the format using cgi-parameters
    ## to the module. For supported values see above
    ## and the man-page of the plugin
    AxAddPlugin Apache::AxKit::Plugin::SvgCgiSerialize   
  </Files>

LibRSVG

  AddHandler axkit .svg

  ## Fairly important to cache the output because
  ## transformation is highly CPU-Time and Memory consuming
  AxCacheDir /tmp/axkit_cache

  ## When using SvgCgiSerialize this is vital 
  ## because the cgi-parameters are not used
  ## by default to build the cache
  AxAddPlugin Apache::AxKit::Plugin::QueryStringCache

  <Files ~ *.svg>
    AxAddStyleMap application/svg2anyformat Apache::AxKit::Language::Svg2AnyFormat
    AxAddProcessor application/svg2anyformat NULL

    ## optional with this variable you can
    ## overwrite the default output format 
    ## PNG
    ## Supported Values(Native Formats):
    ##    image/png
    ## If you specify any other format:
    ##   svg->png is done by LibRSVG
    ##   png->chosen format Image::Magick
    PerlSetVar SVGOutputMimeType image/jpeg
    
    PerlSetVar SVGOutputSerializer LibRSVG
    
    ## only to be set if path differs from
    ## /usr/local/bin
    PerlSetVar SVGOutputLibRSVGBin /usr/bin/rsvg
    
    ## optional module to pass the format using cgi-parameters
    ## to the module. For supported values see above
    ## and the man-page of the plugin
    AxAddPlugin Apache::AxKit::Plugin::SvgCgiSerialize   
  </Files>

DESCRIPTION

Svg2AnyFormat is a serializer which can transform SVG to many different output formats(e.g. png, jpg, ... ). At the moment it uses Image::Magick or LibRSVG as conversion libraries which do not support the whole set of svg features. In one case the conversion could work in another not. You have to give it a try. Please note because Svg2AnyFormat to any format is a searializer it HAS TO BE LAST in the transformer chain!!!!

Please note when referencing external material (e.g. Images) you'll have to use an absolute path

Image::Magick

If no SVGOutputSerializer is set Image::Magick is used as default. The reason is simply because of backward compatility. You could also set Image::Magick explicitly with

Example:

  PerlSetVar SVGOutputSerializer ImageMagick

Advantges:

  • Nearly any format can be exported

  • known to work on many os

Disadvantages:

  • it's fairly big

  • it does not support as much of the SVG-Spec as LibRSVG

LibRSVG

LibRSVG is part of the gnome project. And could also be used as SVG-Serializer at the moment the only really supported output-format is PNG. As a matter of that if you want to use LibRSVG as your SVG-Serializer and the output format is an other than PNG, LibRSVG is used to transform the SVG to PNG and ImageMagick from PNG to the desired output format. At the moment no working PERL-Module for LibRSVG exists so we are using the commandline utility rsvg.

Example:

  PerlSetVar SVGOutputSerializer LibRSVG
  PerlSetVar SVGOutputLibRSVGBin /usr/bin/rsvg

Advantages

  • supports more of SVG-spec than Image::Magick

  • not that big

Disadvantages:

  • no Perl-Module for C-libary => command line used at the moment

  • only PNG supported as output format. This is solved by using Image::Magick in a second transformation step (LOW Performance!!!).

VERSION

0.02

SEE ALSO

Apache::AxKit::Plugin::SvgCgiSerialize

AUTHOR

Tom Schindl <tom.schindl@bestsolution.at>