Skip to main content

Thin wrapper for pandoc.

Project description

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

Installation

pypandoc uses pandoc, so it needs an available installation of pandoc. For some common cases (wheels, conda packages), pypandoc already includes pandoc (and pandoc_citeproc) in it’s prebuilt package.

If pandoc is already installed (pandoc is in the PATH), pypandoc uses the version with the higher version number and if both are the same, the already installed version. You can point to a specific version by setting the environment variable PYPANDOC_PANDOC to the full path to the pandoc binary (PYPANDOC_PANDOC=/home/x/whatever/pandoc or PYPANDOC_PANDOC=c:\pandoc\pandoc.exe). If this environment variabel is set, this is the only place where pandoc is searched for.

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

Installing via pip

Install via pip install pypandoc

Prebuilt wheels for Windows and Mac OS X include pandoc. If there is no prebuilt binary available, you have to install pandoc yourself.

If you use Linux and have your own wheelhouse, you can build a wheel which includes pandoc with python setup.py download_pandoc; python setup.py bdist_wheel. Be aware that this works only on 64bit intel systems, as we only download it from the oficial source.

Installing via conda

Install via conda install -c https://conda.anaconda.org/janschulz pypandoc.

You can also add the channel to your conda config via conda config --add channels https://conda.anaconda.org/janschulz. This makes it possible to use conda install pypandoc directly and also lets you update via conda update pypandoc.

Conda packages include pandoc and are available for py2.7, py3.4 and py3.5, for Windows (32bit and 64bit), Mac OS X (64bit) and Linux (64bit).

Installing pandoc

pandoc is available for many different platforms:

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.

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. pandoc itself is available under the GPL2 license.

Build Status PyPI version conda version

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.1.zip (24.4 kB view details)

Uploaded Source

Built Distributions

pypandoc-1.1.1-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.1-cp34-none-win_amd64.whl (20.1 MB view details)

Uploaded CPython 3.4 Windows x86-64

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

Uploaded CPython 3.4 Windows x86

pypandoc-1.1.1-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.1-cp27-none-win_amd64.whl (20.1 MB view details)

Uploaded CPython 2.7 Windows x86-64

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

Uploaded CPython 2.7 Windows x86

pypandoc-1.1.1-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.1.zip.

File metadata

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

File hashes

Hashes for pypandoc-1.1.1.zip
Algorithm Hash digest
SHA256 4b974bf3e6d38b00bb49c2c6f175931e96f382b531f8bae1d24cc2bd15727321
MD5 0f54c72a0e0866d7ead2c4d2dfa01569
BLAKE2b-256 b900e8a58ef2d3ef9278f299fab160f1dfea0757edc57164a2c74800d925545a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pypandoc-1.1.1-cp35-cp35m-macosx_10_5_x86_64.whl
Algorithm Hash digest
SHA256 e5fb460bf15b927d16723ff3525062d8472c26587f112dd69c0bcd252d157dc4
MD5 d21cdcfb150750bb68068dd5fd6864c8
BLAKE2b-256 72aa008c364fe7b906ec3dbc860ec22227e4a6e19645414d7db9913c57f7210b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pypandoc-1.1.1-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 c677e8004ae43806593924bbf1719291bc785e69f94109963797f36382ea24c8
MD5 d025a883d58eb81479adb8994dee9044
BLAKE2b-256 7d56c046a6fb5f0b7d035423858af0ea5ac2c8035b59589bc30a4c37f4d0af4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pypandoc-1.1.1-cp34-none-win32.whl
Algorithm Hash digest
SHA256 b90a5221e1012716134d01b7abde3749afed938c8e4af76f5d7ce61ee94d72c5
MD5 9a25680ab4de2c7da690cea83413c3ae
BLAKE2b-256 dc3df37749564788ad2662ebbdd473c6c803cc93048dc2d695ded2958e8aea45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pypandoc-1.1.1-cp34-cp34m-macosx_10_5_x86_64.whl
Algorithm Hash digest
SHA256 f5ec707240a05cb6613682bae10567b1856c63dac9d7d91b7287d207718ad697
MD5 2b88551abaa4d45311d6952cca9aef70
BLAKE2b-256 2e3876f0b714164de65aedfd373f1c1d0514c2b54b35bba5a2e92c0fe2a460d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pypandoc-1.1.1-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 6d029757ec6b9b25184388bd4bdb4db4c89839b2fec095d8dd1833992c5622a6
MD5 52b6a513941ddd52c9380983b892df62
BLAKE2b-256 81fd4cf2c05a15a1fee9c9ef8df40093fb5858ebe4c0ec8b372cda8312706911

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pypandoc-1.1.1-cp27-none-win32.whl
Algorithm Hash digest
SHA256 737e859dad0ea9b3784b916f56ed83f09897ba348472834e7d6e8d6acd0ae8bb
MD5 6d22e2b57407a083efe9a50539df0022
BLAKE2b-256 c189b6444f562499043b3a2453a731bf8a9723399f71450743a7e8dfcf88270e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pypandoc-1.1.1-cp27-none-macosx_10_5_x86_64.whl
Algorithm Hash digest
SHA256 5556d893666ff4afea36d6694069dcf52550220b26b7bc54d1a81b26e4961769
MD5 fea9f5608c9d1e618c91941a4d2b09b7
BLAKE2b-256 8985edab2e90a3326f7be378d791f5e439a3b51e71ab5228a3426d0686e1527c

See more details on using hashes here.

Supported by

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