SVG renderer for Prawn Ruby PDF library
Clone or download
Pull request Compare This branch is 2 commits ahead, 226 commits behind mogest:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


An SVG renderer for the Prawn PDF library.

This will take an SVG file as input and render it into your PDF.  Find out more about the Prawn PDF library at:

Using prawn-svg:

  Prawn::Document.generate("svg.pdf") do
    svg svg_data, :at => [x, y], :width => w
:at must be specified.  :width, :height, or neither may be specified; if neither is present,
the resolution specified in the SVG will be used.

prawn-svg is in its infancy and does not support the full SVG specifications.  It currently supports:

- line tag
- polyline tag
- polygon tag
- circle tag
- ellipse tag (although this seems to be buggy)

- rect tag
  supports rounded rects, but only one radius is applied to all corners

- path tag
  supports moveto, closepath, lineto, horiz lineto, vert lineto, curveto, smooth curveto, quad curveto, smooth quad curveto
  does not support elliptical arc

- text and tspan tags
  attributes: size, text-anchor, font-family, font-weight, dx, dy
- svg, g and symbol tags
- use tag
- style tag, if css_parser gem is installed on the system [1]
- attributes/styles: fill, stroke, stroke-width, opacity, fill-opacity, stroke-opacity, transform

- transform methods: translate, rotate, scale, matrix

- colors: html standard names, #xxx, #xxxxxx, rgb(1, 2, 3), rgb(1%, 2%, 3%)

- measurements specified in pt, cm, dm, ft, in, m, mm, yd, %

- fonts: generic CSS fonts, built in PDF fonts, and any TTF fonts in your fonts path

By default, prawn-svg has a fonts path of ["/Library/Fonts", "/usr/share/fonts/truetype/**"] to catch
Mac OS X and Debian Linux users.  You can add to the font path:

  Prawn::Svg.font_path << "/my/font/directory"

prawn-svg does NOT support external references, gradients/patterns or markers.

[1] If the css_parser gem is installed, it will handle CSS style definitions, but only simple tag, class or id definitions.