How to convert Markdown to PDF (with word wrapping)
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)?
52 Answers
Markdown to PDF
With Pandoc
On my Ubuntu 16.04:
pandoc Manual.md --latex-engine=xelatex -o Manual.pdfIf you get the error
pandoc: xelatex not found. xelatex is needed for pdf output.
install the huge (~600 MB) package
sudo apt install texlive-xetexMarkdown 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.