Manual:$wgSVGConverters

From MediaWiki.org
Jump to: navigation, search
SVG: $wgSVGConverters
List of paths to Scalable Vector Graphics (SVG) converters.
Introduced in version: 1.4.0
Removed in version: still in use
Allowed values: array (see below)
Default value: (see below)

Other settings: Alphabetical | By Function


Details[edit | edit source]

Scalable Vector Graphics (SVG) may be uploaded as images. However, SVG support in browsers is patchy – in particular, Internet Explorer before version 9 could not understand the SVG format at all.

Therefore, it is necessary to convert SVG format images to PNG format as a fallback. An external program is required to perform this conversion.

This array contains a list of SVG conversion programs and the command line for each one. To select which one to use on your system, set $wgSVGConverter variable.

Default value[edit | edit source]

$wgSVGConverters = array(
	'ImageMagick' => '$path/convert -background white -thumbnail $widthx$height\! $input PNG:$output',
	'sodipodi' => '$path/sodipodi -z -w $width -f $input -e $output',
	'inkscape' => '$path/inkscape -z -w $width -f $input -e $output',
	'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d '
		. '$output $input',
	'rsvg' => '$path/rsvg -w $width -h $height $input $output',
	'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output',
	'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ),
);

Usage[edit | edit source]

The following variables can be specified in the command line:

  • $path - the value of $wgSVGConverterPath, if set; otherwise $path/ (note the slash) will be stripped
  • $input - the path to the input SVG file
  • $output - the path where MediaWiki will look for the output PNG file
  • $width - the desired width
  • $height - the desired height
The exclamation mark (!)' is a meta-character in Unix shells and must be escaped with a backslash. In the code sample above, this can be seen in the command for ImageMagick. On Windows-family operating systems, the exclamation mark (!) is not a meta-character in the shell and does not need to be escaped.

Example[edit | edit source]

A fictitious example, which assumes that an executable named mysvg2png is on the system path:

$wgSVGConverters = array(
	'mysvg2png' => '$path/mysvg2png -input $input -toFormat PNG -w $width -h $height -output $output'
);
$wgSVGConverter = 'mysvg2png';

Platform-specific notes[edit | edit source]

Windows[edit | edit source]

On Windows, where the executable path may contain spaces, you may need to quote the executable name. For example:

$wgSVGConverters = array(
    'Inkscape' => '"$path/Inkscape/inkscape" -z -w $width -f $input -e $output',
);

On Windows-family operating systems, the exclamation mark (!) is not a meta-character in the shell and does not need to be escaped.

Vista notes[edit | edit source]

Bug 20363 - cmd.exe not being executed correctly.

Inside file "GlobalFunctions.php" line 2207 delete the following lines

	elseif ( php_uname( 's' ) == 'Windows NT' ) {
		# This is a hack to work around PHP's flawed invocation of cmd.exe
		# http://news.php.net/php.internals/21796
		$cmd = '"' . $cmd . '"';
	}

Quotes were being used around "cmd.exe" to fix a bug in PHP. PHP's bug was fixed, so this hack is not needed. That is what is causing the SVG converters to not work correctly.

Also, Inkscape.exe does not accept command line arguments in the default release. You will need to download inkscapec.exe. Then set the $wgSVGConverters to the following.

$wgSVGConverters = array(
    'inkscape' => 'inkscapec.exe --file=$input --export-png=$output --export-width=$width --without-gui',
);

The inkscapec.exe handles both long and short versions of the commandline.

On Windows-family operating systems, the exclamation mark (!) is not a meta-character in the shell and does not need to be escaped.

Linux[edit | edit source]

On some Linux installations (e.g. OpenSuSE 10.3, Debian, Ubuntu) rsvg is renamed:

$wgSVGConverters = array( 'rsvg' => '/usr/bin/rsvg-convert -w $width -h $height -o $output $input');
$wgSVGConverter = 'rsvg' ;

If the Java executable is not in the path, it must be specified to use batik, or a "Thumbnail creation failed:" message will be displayed. For example:

$wgSVGConverters['batik'] = '/usr/local/bin/java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d $output $input';
Exclamation mark (!)' is a meta character in Unix shells and must be escaped with a backslash.

Debian Squeeze[edit | edit source]

If ImageMagick is used, then the following will be needed for SVG viewing:

apt-get install imagemagick libmagickcore3-extra php5-imagick

OpenBSD[edit | edit source]

On OpenBSD installations rsvg was renamed to rsvg-convert:

$wgSVGConverterPath = "/usr/local/bin";
$wgSVGConverters = array( 'rsvg' => '$path/rsvg-convert -w $width -h $height -o $output $input' );
$wgSVGConverter = 'rsvg' ;

See also[edit | edit source]

Language: English  • 日本語