Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SVG to PDF on a shared linux server

I have a website which uses SVG for an interactive client side thingamabob. I would like to provide the option to download a PDF of the finished output. I can pass the final SVG output back to the server, where I want to convert to PDF, then return it to the client for download.

This would need to work on a headless shared linux server, where installation or compilation is either an enormous pain, or impossible. The website is PHP, so the ideal solution would be PHP, or use software that's easily installed on a shared webserver. Python, perl and ruby are available, along with the usual things you might expect on a linux box. Solutions that involve cairo, scripting inkscape, or installation more complex than 'FTP it up' are probably out. Spending large amounts of money are also out, naturally. As this is a shared server, memory and/or CPU hungry solutions are also out, as they will tend to get killed; this more or less rules out Batik.

The nearest that I've got so far is this XSL transform which I can drive from PHP and then squirt the resulting postscript through ps2pdf (which is already installed). The only problem with this is that it doesn't support SVG paths - if it did, it would be perfect.

There are a bunch or related questions on StackOverflow, all of which I've read through, but they all assume that you can either install stuff, spend money, or both.

Does anyone have an off-the-shelf solution to this, or should I just spend some downtime trying to add paths support to that XSL transform?

Thanks, Dunc

like image 336
Duncan Lock Avatar asked Jan 27 '10 01:01

Duncan Lock


3 Answers

I stumbled across TCPDF today which would have been perfect for this, had I known about it at the time. It's just a collection of pure PHP classes, no external dependencies for most things.

It can build PDF's from scratch and you can include pretty much anything you want in there, including SVG (amongst many, many other things), as shown in these examples:

http://www.tcpdf.org/examples.php

Main project page is here:

http://www.tcpdf.org/

Sourceforge page is here:

http://sourceforge.net/projects/tcpdf/

like image 71
Duncan Lock Avatar answered Oct 13 '22 16:10

Duncan Lock


have you looked at imagemagick? I suspect you also need ghostscript to complete the loop, which might make installation difficulty and performance a problem.

like image 22
Alex Brown Avatar answered Oct 13 '22 16:10

Alex Brown


I'd suggest giving princexml a try, they provide various addons (including one for PHP) and can output PDF from SVG/HTML/XML.

like image 42
Erik Dahlström Avatar answered Oct 13 '22 15:10

Erik Dahlström