Table of Contents

Pandoc is a command-line tool for converting from one markup format to another: Markdown, HTML, LaTeX, DOCX, etc.

Installation

pandoc is likely installed on your system, but if it’s not, you can easily install it with your operating system’s package manager.

Basic usage

Pandoc syntax is simple:

pandoc [<options>] <input file>
  • If no input files are specified, pandoc reads from standard input (‘stdin’).
  • Output goes to stdout by default.
  • Format of the input and output files are guessed based on files’ extensions, unless explicitly specified.

Options

  • -o <file>: specify an output file.
  • -f <format>: specify a format for the input file.
  • -t <format>: specify a format for the output file.
  • -s: produce a ‘standalone’ document (e.g.: a valid HTML file with the <head> and <body> tags) instead of a document fragment.

Run pandoc --list-input-formats and pandoc --list-output-formats to print a list of supported formats.

Examples

You can do a lot of markup and file conversions with pandoc. Check its man page for more info (man pandoc). These are some examples with Markdown:

Markdown to HTML

pandoc -s -o output.html markdown.md

HTML to Markdown

pandoc -o web.md index.html

Markdown to manual page

  • Check the result before saving
pandoc -s -t man mycommand.md | man -l -
  • Save the manpage
pandoc -s -t man mycommand.md -o mycommand

Markdown file must follow this syntax:

% COMMAND(1)
% John Doe
% January 2023

# NAME

command - my new command

# SYNOPSIS

`command [-t <type>] <file>`

# DESCRIPTION

My awesome command can do a lot of things.

# OPTIONS

`-t <type>` : specify a type

Markdown to PDF

pandoc -o output.pdf markdown.md
  • Pandoc cannot convert from PDF to other format.
  • Change geometry or papersize:
    pandoc -V geometry:landscape -V papersize:a4 -o output.pdf markdown.md

More

Convert between CSV-JSON, TXT-ODT/DOCX, Markdown-EPUB, HTML-PDF and much more, with the same syntax. Check pandoc manual page and the website (https://pandoc.org/).

If you have any suggestion, feel free to contact me via social media or email.