Under Linux there aren’t many freely available vector graphics editors and as far as I know there are none that can edit EPS (encapsulated postscript) and PDF (portable document format) files. I produce lots of these files in my day-to-day work and I would like to be able to edit them. The best vector graphics editor I have found so far is Inkscape but it only reads SVG files… (Edit: recent versions can import PDFs but I’m not entirely happy with how text is imported; in particular, that fonts are not imported from the PDF.)

To overcome this problem I have written a very small utility to convert PDF files to SVG files using Poppler and Cairo. Version 0.2.3 is available here (with modifications by Matthew Flaschen and Ed Grace). This appears to work on any PDF document that Poppler can read (try them in XPDF or Evince since they both use Poppler).

So now it is possible to easily edit PDF documents with your favourite SVG editor! One other alternative would be to use pstoedit but the commercial SVG module costs (unsurprisingly!) and the free SVG module is not very good at handling text… To install

      tar -zxf pdf2svg-0.2.3.tar.gz
      cd pdf2svg-0.2.3
      ./configure --prefix=/usr/local
      make install

To use

pdf2svg <input.pdf> <output.svg> [<pdf page no. or "all" >]

Note: if you specify all the pages you must give a filename with %d in it (which will automatically be replaced by the appropriate page number). E.g.

pdf2svg input.pdf output_page%d.svg all

Source code

A Git repository is also available on GitHub.


pdf2svg is packaged for various Linux distributions (including Ubuntu and Fedora) and is available via the different package managers.

Windows binaries are available from GitHub; both 32 bit and 64 bit versions are available.

To cross compile for Windows under Linux, simply install the relevant cross-compiler packages (for Fedora this is mingw32-cairo and mingw32-poppler and their dependencies) and then replace “./configure” in the compilation instructions above with “mingw32-configure”.


  • 2015-06-16 (v0.2.3): Minor updates.
  • 2013-07-18 (v0.2.2): Updated to use the correct renderer call — bitmaps should now appear at full resolution.


Copyright © 2007-2015 David Barton
Copyright © 2007 Matthew Flaschen; Updated to allow conversion of all pages at once.
Copyright © 2008 Ed Grace; Added GNU Autotools commands.

6 thoughts on “pdf2svg”

    1. Unfortunately I haven’t had much success in producing a statically compiled version yet. The normal options for doing it don’t seem to work for some reason.

  1. Hi,

    Installing pdf2svg required installation of poppler, cario & pixman.

    It order to fix the dynamic problem, I decide to install it locally on another RedHat 6.4 machine. I set all environment variable as I did in my successfully installation, but when
    I run in Poppler:
    ./configure –enable-poppler-glib
    I get :
    checking for CAIRO… no
    configure: error: “Cairo output is required to build glib frontend”

    1. You need to have installed Cairo before installing Poppler and make sure that “pkg-config –modversion cairo” returns a sensible version of Cairo (it gives 1.14.2 on my machine). Note: pkg-config is the mechanism by which other packages can work out what the correct compilation flags are to link against that library.

Leave a Reply

Your email address will not be published. Required fields are marked *

Homepage of Dr David Barton