Kevin Deldycke - Gimlihttps://kevin.deldycke.com/2012-01-31T19:06:29+01:00 â đŠŹđȘđđł yak-shaving the rabbit holesHow-to generate PDF from Markdown2012-01-31T19:06:29+01:002012-01-31T19:06:29+01:00Kevin Deldycketag:kevin.deldycke.com,2012-01-31:/2012/01/how-to-generate-pdf-markdown/<h2 id="pandoc">Pandoc<a class="headerlink" href="#pandoc" title="Permanent link">¶</a></h2>
<p>The first tool you can use to convert a <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> file to <span class="caps">PDF</span> is <a href="https://johnmacfarlane.net/pandoc/">Pandoc</a>.</p>
<p>To install Pandoc and all its dependencies on my Ubuntu 11.04, I used the following command:</p>
<div class="highlight"><pre><span></span><code><span class="linenos" data-linenos="1 "></span><span class="gp">$ </span>aptitude<span class="w"> </span>install<span class="w"> </span>pandoc<span class="w"> </span>texlive
</code></pre></div>
<p>Then I applied the <span class="caps">PDF</span> transformation on the <a href="https://github.com/kdeldycke/openerp.buildout/blob/master/README.md"><span class="caps">README</span>.md</a> file from my âŠ</p><h2 id="pandoc">Pandoc<a class="headerlink" href="#pandoc" title="Permanent link">¶</a></h2>
<p>The first tool you can use to convert a <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> file to <span class="caps">PDF</span> is <a href="https://johnmacfarlane.net/pandoc/">Pandoc</a>.</p>
<p>To install Pandoc and all its dependencies on my Ubuntu 11.04, I used the following command:</p>
<div class="highlight"><pre><span></span><code><span class="linenos" data-linenos="1 "></span><span class="gp">$ </span>aptitude<span class="w"> </span>install<span class="w"> </span>pandoc<span class="w"> </span>texlive
</code></pre></div>
<p>Then I applied the <span class="caps">PDF</span> transformation on the <a href="https://github.com/kdeldycke/openerp.buildout/blob/master/README.md"><span class="caps">README</span>.md</a> file from my <a href="https://github.com/kdeldycke/openerp.buildout">openerp.buildout GitHub project</a>:</p>
<div class="highlight"><pre><span></span><code><span class="linenos" data-linenos="1 "></span><span class="gp">$ </span>wget<span class="w"> </span>https://raw.github.com/kdeldycke/openerp.buildout/master/README.md
<span class="linenos" data-linenos="2 "></span><span class="gp">$ </span>pandoc<span class="w"> </span>README.md<span class="w"> </span>-o<span class="w"> </span>readme-pandoc.pdf
</code></pre></div>
<p><a href="/uploads/2012/readme-pandoc.pdf">The result</a> is good, but not perfect. For example code blocks with long lines donât break at the end of the page:</p>
<p><img alt="" src="/uploads/2012/pandoc-non-wraping-code-blocks.png"/></p>
<p>While trying to solve this issue, I stumble upon another toolâŠ</p>
<h2 id="gimli">Gimli<a class="headerlink" href="#gimli" title="Permanent link">¶</a></h2>
<p><a href="https://github.com/walle/gimli">Gimli</a> is an utility that was explicitly written with GitHub in mind.</p>
<p>Gimli is written in Ruby, so letâs install it the Ruby way:</p>
<div class="highlight"><pre><span></span><code><span class="linenos" data-linenos="1 "></span><span class="gp">$ </span>aptitude<span class="w"> </span>install<span class="w"> </span>rubygems<span class="w"> </span>wkhtmltopdf
<span class="linenos" data-linenos="2 "></span><span class="gp">$ </span>gem<span class="w"> </span>install<span class="w"> </span>gimli
</code></pre></div>
<p>Then we can convert our Markdown file to a <span class="caps">PDF</span>. The following will generate a <span class="caps">README</span>.pdf file in the current folder:</p>
<div class="highlight"><pre><span></span><code><span class="linenos" data-linenos="1 "></span><span class="gp">$ </span>/var/lib/gems/1.8/bin/gimli<span class="w"> </span>-f<span class="w"> </span>./README.md
</code></pre></div>
<p>The <a href="/uploads/2012/readme-gimli.pdf">resulting <span class="caps">PDF</span></a> is really close to how GitHub renders Markdown content on its website. And it solve the bad code block style of Pandoc:</p>
<p><img alt="" src="/uploads/2012/gimli-wraping-code-blocks.png"/></p>