M HYPE SPLASH
// general

How to convert Markdown to PDF (with word wrapping)

By John Peck

Using pandoc like:

pandoc -o output.pdf input.md 

does not give me a result with word-wrapping.

For instance, three liner input.md looks like the following:

# Introduction
Lorem ipsum dolor sit amet, scelerisque natoque, in etiam erat nibh lacus, porta quam penatibus, at metus, purus leo est. Sed faucibus odio in amet, in sapien ut sapien eu, vehicula pede vel pellentesque, ut hac lacinia mauris ridiculus rhoncus ligula. Sit congue, ac montes, lorem ligula etiam ac fusce ipsum, lacus dolor in suscipit aliquet vitae. Blandit neque aliquam, amet vel, ante nullam neque. Adipiscing nullam, neque elit, nunc non mauris libero vivamus tortor.

running the above command yields a pdf document with some content as the following:

Introduction Lorem ipsum dolor sit amet, scelerisque natoque, in etiam erat nibh lacus,

Is there a fast way of converting a markdown(.md) file to pdf with word-wrapping (similar to the way done in here)?

5

2 Answers

Markdown to PDF

With Pandoc

On my Ubuntu 16.04:

pandoc Manual.md --latex-engine=xelatex -o Manual.pdf

If you get the error

pandoc: xelatex not found. xelatex is needed for pdf output.

install the huge (~600 MB) package

sudo apt install texlive-xetex

Markdown to HTML from/to clipboard

You can also: thisOutputMarkdown | pandoc -s -f markdown -t html | xclip -selection clipboard -t text/html to get formatted HTML to clipboard.
If you have the Markdown text on clipboard replace thisOutputMarkdown with xsel -b.

With markdown-pdf NodeJS package

npm install -g markdown-pdf
markdown-pdf /path/to/markdown

I just convert from HTML instead. This works for my needs:

I found that in general Markdown is not a good format to convert to PDF, as it doesnt have native CSS support. Here is the script I use:

<?php
require 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->getOptions()->setIsFontSubsettingEnabled(true);
$s_in = file_get_contents('index.html');
$dompdf->loadHtml($s_in);
$dompdf->render();
$s_out = $dompdf->output();
file_put_contents('index.pdf', $s_out);

This solution just needs PHP (25 MB) and DomPdf (4 MB), so quite lightweight compared to other options.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy