Once upon a time I used Corel Draw to edit vector graphics. Now I'm looking at using Sketch. I previously converted all my old CDR files to PDF but Sketch doesn't seem to like to open PDFs containing vector graphics. Is there a free command-line program I can use to convert PDF to SVG?
Turns out Inkscape has a command line mode. I added this to .bash_profile:
and now this command converts from PDF to SVG:
inkscape Logo.pdf --export-plain-svg=Logo.svg
Unfortunately, the current version of Sketch has very rudimentary SVG import capabilities and can't correctly read any of the files I've made even though they display fine in Opera and OmniWeb. The company says future versions will do better.
My own research has so far led me thus:
There is a command line tool called PDF2SVG, which would be ideal, but it requires you to build it yourself and install all the necessary dependencies, including two libraries, Cairo and Poppler. (I tried installing Cairo, but it wanted pkg-config, which in turn reported that some other library was missing....)
The only decent tool I've found is MuPDF, which contains a CLI utility called
mutool. You still have to build it yourself, but it is at least self-contained.
Download the source code;
unzip the package,
in the Terminal type
cd (followed by a space),
then drag the unzipped folder from the Finder into the Terminal window.
sudo make prefix=/usr/local install and enter your password.
You can then delete the source code.
Then you can convert PDFs to SVG using such commands as:
mutool convert -F svg -o filename.svg inputfile
If there are multiple pages, the page number will be appended to each filename. Either the -F flag or the -o flag is optional. But not both.
MuPDF is made by the people who make GhostScript, so should be reliable.
Answer for 2020 (an update was asked for):
PDF rendering is hard to do well. There are not a lot of tools for it.
- Inkscape remains a good, free option and is now available as a first-class Mac App for OS X 10.11-10.15 and it has a command-line interface
- There are various packages for NodeJS that can do it, most of which leverage PDF.js and are not well-maintained, but installing NodeJS just for this purpose would be overkill
- There are commercial packages like BuildVu if you can afford a 4-figure annual license fee
- There are lots of cloud-based converters (both free and paid) which have command line clients or which you could script with
curl, but that is not my idea of a command line program to do conversion
ImageMagick has a command line tool called
convert which does all sorts of things in addition to converting file formats. There are lots of options, but the simplest way would be to do
convert file.pdf file.svg
That might not give the best quality, so you may need some flags such as
-density - check the man pages. ImageMagick can likely be installed through fink/macports/homebrew.