Skip to main content

Thin wrapper for pandoc.

Project description

Latest Version Build Status

pypandoc provides a thin wrapper for pandoc, a universal document converter.

Installation

  • Install pandoc

  • Ubuntu/Debian: sudo apt-get install pandoc

  • Fedora/Red Hat: sudo yum install pandoc

  • Mac OS X with Homebrew: brew install pandoc

  • Machine with Haskell: cabal-install pandoc

  • Windows: There is an installer available here

  • FreeBSD port

  • Or see http://johnmacfarlane.net/pandoc/installing.html

  • pip install pypandoc

  • To use pandoc filters, you must have the relevant filter installed on your machine

Usage

The basic invocation looks like this: pypandoc.convert('input', 'output format'). pypandoc tries to infer the type of the input automatically. If it’s a file, it will load it. In case you pass a string, you can define the format using the parameter. The example below should clarify the usage:

import pypandoc

output = pypandoc.convert('somefile.md', 'rst')

# alternatively you could just pass some string to it and define its format
output = pypandoc.convert('#some title', 'rst', format='md')
# output == 'some title\r\n==========\r\n\r\n'

If you pass in a string (and not a filename), convert expects this string to be unicode or utf-8 encoded bytes. convert will always return a unicode string.

It’s also possible to directly let pandoc write the output to a file. This is the only way to convert to some output formats (e.g. odt, docx, epub, epub3, pdf). In that case convert() will return an empty string.

import pypandoc

output = pypandoc.convert('somefile.md', 'docx', outputfile="somefile.docx")
assert output == ""

In addition to format, it is possible to pass extra_args. That makes it possible to access various pandoc options easily.

output = pypandoc.convert(
    '<h1>Primary Heading</h1>',
    'md', format='html',
    extra_args=['--atx-headers'])
# output == '# Primary Heading\r\n'
output = pypandoc.convert(
    '# Primary Heading',
    'html', format='md',
    extra_args=['--base-header-level=2'])
# output == '<h2 id="primary-heading">Primary Heading</h2>\r\n'

pypandoc now supports easy addition of pandoc filters.

filters = ['pandoc-citeproc']
pdoc_args = ['--mathjax',
             '--smart']
output = pd.convert(source=filename,
                    to='html5',
                    format='md',
                    extra_args=pdoc_args,
                    filters=filters)

Please pass any filters in as a list and not a string.

Please refer to pandoc -h and the official documentation for further details.

Dealing with Formatting Arguments

Pandoc supports custom formatting though -V parameter. In order to use it through pypandoc, use code such as this:

output = pypandoc.convert('demo.md', 'pdf', outputfile='demo.pdf',
  extra_args=['-V', 'geometry:margin=1.5cm'])

Note that it’s important to separate -V and its argument within a list like that or else it won’t work. This gotcha has to do with the way subprocess.Popen works.

Getting Pandoc Version

As it can be useful sometimes to check what Pandoc version is available at your system, pypandoc provides an utility for this. Example:

version = pypandoc.get_pandoc_version()

Contributing

Contributions are welcome. When opening a PR, please keep the following guidelines in mind:

  1. Before implementing, please open an issue for discussion.

  2. Make sure you have tests for the new logic.

  3. Make sure your code passes flake8 pypandoc.py tests.py

  4. Add yourself to contributors at README.md unless you are already there. In that case tweak your contributions.

Note that for citeproc tests to pass you’ll need to have pandoc-citeproc installed.

IMPORTANT! Currently Travis build is a bit broken. If you have any idea on how to debug that, please see #55.

Contributors

  • Valentin Haenel - String conversion fix

  • Daniel Sanchez - Automatic parsing of input/output formats

  • Thomas G. - Python 3 support

  • Ben Jao Ming - Fail gracefully if pandoc is missing

  • Ross Crawford-d’Heureuse - Encode input in UTF-8 and add Django example

  • Michael Chow - Decode output in UTF-8

  • Janusz Skonieczny - Support Windows newlines and allow encoding to be specified.

  • gabeos - Fix help parsing

  • Marc Abramowitz - Make setup.py fail hard if pandoc is missing, Travis, Dockerfile, PyPI badge, Tox, PEP-8, improved documentation

  • Daniel L. - Add extra_args example to README

  • Amy Guy - Exception handling for unicode errors

  • Florian Eßer - Allow Markdown extensions in output format

  • Philipp Wendler - Allow Markdown extensions in input format

  • Jan Schulz - Handling output to a file, Travis to work on newer version of Pandoc, return code checking, get_pandoc_version. Helped to fix the Travis build.

  • Aaron Gonzales - Added better filter handling

  • David Lukes - Enabled input from non-plain-text files and made sure tests clean up template files correctly if they fail

  • valholl - Set up licensing information correctly and include examples to distribution version

  • Cyrille Rossant - Fixed bug by trimming out stars in the list of pandoc formats. Helped to fix the Travis build.

  • Paul Osborne - Don’t require pandoc to install pypandoc.

License

pypandoc is available under MIT license. See LICENSE for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypandoc-1.1.2.zip (26.8 kB view details)

Uploaded Source

Built Distributions

pypandoc-1.1.2-cp35-none-win_amd64.whl (20.1 MB view details)

Uploaded CPython 3.5 Windows x86-64

pypandoc-1.1.2-cp35-cp35m-macosx_10_5_x86_64.whl (29.2 MB view details)

Uploaded CPython 3.5m macOS 10.5+ x86-64

pypandoc-1.1.2-cp34-none-win_amd64.whl (20.1 MB view details)

Uploaded CPython 3.4 Windows x86-64

pypandoc-1.1.2-cp34-none-win32.whl (20.1 MB view details)

Uploaded CPython 3.4 Windows x86

pypandoc-1.1.2-cp34-cp34m-macosx_10_5_x86_64.whl (29.2 MB view details)

Uploaded CPython 3.4m macOS 10.5+ x86-64

pypandoc-1.1.2-cp27-none-win_amd64.whl (20.1 MB view details)

Uploaded CPython 2.7 Windows x86-64

pypandoc-1.1.2-cp27-none-win32.whl (20.1 MB view details)

Uploaded CPython 2.7 Windows x86

pypandoc-1.1.2-cp27-none-macosx_10_5_x86_64.whl (29.2 MB view details)

Uploaded CPython 2.7 macOS 10.5+ x86-64

File details

Details for the file pypandoc-1.1.2.zip.

File metadata

  • Download URL: pypandoc-1.1.2.zip
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pypandoc-1.1.2.zip
Algorithm Hash digest
SHA256 54f0b4d3be57d2f7f7ff7baff9ac9648e0de092f136d647a804fce0734d0b17c
MD5 b2392b684ce4aa944bf3ae6c7a648f37
BLAKE2b-256 ce2a4f64c1269842b0cf037cb07fc9a018e58328a981907e604a3be1733b8085

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp35-none-win_amd64.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp35-none-win_amd64.whl
Algorithm Hash digest
SHA256 72652a2029f164f7ca91429d7aee6a83a94636396164208fcfade98a643b884b
MD5 539e9505d07ed462ddce715bdefbc643
BLAKE2b-256 53138db2b76b0f4082e69cfeb73c4920c10b48a19529fa2634ed31ebddb9051f

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp35-cp35m-macosx_10_5_x86_64.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp35-cp35m-macosx_10_5_x86_64.whl
Algorithm Hash digest
SHA256 882a4f3b81ba4a1508000c39764ee2c44432afc888235d77d54cbbd1ce253f70
MD5 1a9803854eed8247f7dc5f217eeecf67
BLAKE2b-256 d5e0df107971bed75d61b23c07db8ddfc284ecd42f7d6efbdb453c8c726863c1

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp34-none-win_amd64.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 86a22a0205e66435553f9d1d0fb493ec699ff918e53067b483fa49ce053ea0a4
MD5 753dd05d23b4e1631c09b1e50c95d515
BLAKE2b-256 7bc08dbfc10c7224d544e3ce3d1815d872604675d069dbb10fb9c70cf7b0b2b5

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp34-none-win32.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp34-none-win32.whl
Algorithm Hash digest
SHA256 fc8b488312d63e10d906fa222b0d84feaf70cab1b687f1509b90a6f1671ce5f0
MD5 50db80744334634a57b7a4b907c0d728
BLAKE2b-256 accfa9e8632baf2f9e79f8bf224fc540756916a0190224067ddb35f7cb6d9ff7

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp34-cp34m-macosx_10_5_x86_64.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp34-cp34m-macosx_10_5_x86_64.whl
Algorithm Hash digest
SHA256 4552b322dc0defec897b3f3a10dc6877ce0ae095cde9908458e0390f488872c1
MD5 8b274a778872b62ee2d688640e952209
BLAKE2b-256 74a92fd38285ead2925f3a437b3067c0ffe858d0e49cbfef1a80e9c7fa6655b0

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp27-none-win_amd64.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 dc87e1000b4ae00ef3a6418ee2fb2e742976963bf9016eb9566d0f792930f551
MD5 4a71099d947727a08cc1d46e1bd1ac09
BLAKE2b-256 e644c463198cfc2c2f502357aebb3a7921e65eaf4b54bc86a6033d1d1d99f7cb

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp27-none-win32.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp27-none-win32.whl
Algorithm Hash digest
SHA256 cce2e77be1a67b4f4be674cc14256f2bb59b3b4ea4bd63f0c5fdda64555b2d62
MD5 ad112092c3741560b737dcbf790a1b0b
BLAKE2b-256 5c6bcdbba7df6dd4d117054db6fc039c38464d08144d467fe0f92f02e20bd575

See more details on using hashes here.

File details

Details for the file pypandoc-1.1.2-cp27-none-macosx_10_5_x86_64.whl.

File metadata

File hashes

Hashes for pypandoc-1.1.2-cp27-none-macosx_10_5_x86_64.whl
Algorithm Hash digest
SHA256 e403f16cac74dfa8dc2adc5d776041f65cbeec0f37edb75953439205c5157c92
MD5 8e13c9e5b1f69bd47f7d299a11069a2c
BLAKE2b-256 813c2879a41945194f1eac700bd03e467c7ea46b04d9d2e899ef820700b62f8c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page