---
name: "Image::Info::SVG"
section: "3pm"
platform: "linux"
package: "perl-image-info"
version: "1.45-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Image::Info::SVG"
---

# Image::Info::SVG(3pm)

SVG support for Image::Info

## NAME

Image::Info::SVG - SVG support for Image::Info

## SYNOPSIS

```
 use Image::Info qw(image_info dim);
 my $info = image_info("image.svg");
 if (my $error = $info->{error}) {
     die "Can't parse image info: $error\n";
 }
 my $title = $info->{SVG_Title};
 my($w, $h) = dim($info);
```

## DESCRIPTION

This modules supplies the standard key names except for BitsPerSample, Compression, Gamma, Interlace, LastModificationTime, as well as:

- ImageDescription

  The image description, corresponds to \<desc\>.

- SVG\_Image

  A scalar or reference to an array of scalars containing the URI's of embedded images (JPG or PNG) that are embedded in the image.

- SVG\_StandAlone

  Whether or not the image is standalone.

- SVG\_Title

  The image title, corresponds to \<title\>

- SVG\_Version

  The URI of the DTD the image conforms to.

## METHODS

### process\_file()

```
        $info->process_file($source, $options);
```

Processes one file and sets the found info fields in the `$info` object.

## FILES

This module requires either XML::LibXML::Reader or XML::Simple.

## COMPATIBILITY

Previous versions (until Image-Info-1.28) used XML::Simple as the underlying parser. Since Image-Info-1.29 the default parser is XML::LibXML::Reader which is much more faster, memory-efficient, and does not rely on regular expressions for some aspects of XML parsing. If for some reason you need the old parser, you can force it by setting the variable `@Image::Info::SVG::PREFER_MODULE` as early as possible:

```
    use Image::Info;
    @Image::Info::SVG::PREFER_MODULE = qw(Image::Info::SVG::XMLSimple Image::Info::SVG::XMLLibXMLReader);
```

The variable `$Image::Info::SVG::USING_MODULE` can be queried to see which parser is in use (after **Image::Info::SVG** is required).

Since 1.38\_50 processing of XML external entities (XXE) is not done anymore for security reasons in both backends (**Image::Info::SVG::XMLLibXMLReader** and **Image::Info::SVG::XMLSimple**). Controlling XXE processing behavior in **XML::Simple** is not really possible (see \<https://rt.cpan.org/Ticket/Display.html?id=83794\>), so as a workaround the underlying SAX parser is fixed to XML::SAX::PurePerl which is uncapable of processing external entities — but unfortunately it is also a slow parser.

## SEE ALSO

Image::Info, XML::LibXML::Reader, XML::Simple, XML::SAX::PurePerl

## NOTES

For more information about SVG see \<http://www.w3.org/Graphics/SVG/\>

Random notes:

```
  Colors
    # iterate over polygon,rect,circle,ellipse,line,polyline,text for style->stroke: style->fill:?
    #  and iterate over each of these within <g> too?! and recurse?!
    # append <color>'s
    # perhaps even deep recursion through <svg>'s?
  ColorProfile <color-profile>
  RenderingIntent ?
  requiredFeatures
  requiredExtensions
  systemLanguage
```

## AUTHOR

Jerrad Pierce \<belg4mit@mit.edu\>/\<webmaster@pthbb.org\> wrote the original code based on XML::Simple

Slaven Rezic \<srezic@cpan.org\> wrote the code using XML::LibXML::Reader

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
