Lately, I wrote a small text in markdown and felt the need to share it with someone (non-technical). I searched for solutions to convert markdown to PDF and was very surprised, that there were only so-so solutions. After some googling and coding I found an easy to use solution which comprises a markdown tool for converting markdown to html and phantomJS (a headless WebKit scriptable) for converting html to pdf. The cool things: hyperlinks and custom css work.
If you are on a mac, you can use homebrew for installing the dependencies (on linux distributions you should have a corresponding package manager):
brew install markdown phantomjs
Then create a new bash script markdown2pdf.sh
(and chmod 751
it, so that it is executable):
#!/bin/bash inputfile=$1 outputfile=$2 cssfile=$3 tmpfile=/tmp/markdown2pdf${outputfile##*/}.html echo "<html><head>" > $tmpfile echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$cssfile\">" >> $tmpfile echo "</head><body>" >> $tmpfile markdown $inputfile | iconv -f utf8 -t l1 >> $tmpfile echo "</body></html>" >> $tmpfile phantomjs $PHANTOMJS_HOME/share/phantomjs/examples/rasterize.js $tmpfile $outputfile A4 rm $tmpfile
You may call it via command line:
$ ./markdown2pdf.sh myfile.md myfile.pdf markdown2.css
I used markdown2 css, which is copied (and adapted a little bit) from jasonm23.
Of course, this script is not perfect, since all references to local images (or similar stuff) are interpreted relative to /tmp
. But I leave this as an exercise to the reader.
Exciting 😉
Update
Here is a cool tool (pandoc), that allows to convert from anything to anything including markdown to html and pdf. 🙂
And this is a cool open-source markdown editor for mac (macdown). 🤓