BC-SECURITY / md2pdf

Markdown to PDF conversion tool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

md2pdf logo

Convert Markdown files to PDF with styles.

Build Status Coverage Status

Installation

The easiest way to go is to use pip:

$ pip install md2pdf

Usage

As a CLI

Usage:
    md2pdf [options] INPUT.MD OUTPUT.PDF

Options:
    --css=STYLE.CSS

For example, try to generate the project documentation with:

$ md2pdf README.md README.pdf

Optionally, you may load an external style (restricted to CSS2):

$ md2pdf --css tests/resources/input.css README.md README.pdf

As a library

You can use md2pdf in your python code, like:

from md2pdf.core import md2pdf

md2pdf(pdf_file_path,
       md_content=None,
       md_file_path=None,
       css_file_path=None,
       base_url=None)

Function arguments:

  • pdf_file_path: output PDF file path
  • md_content: input markdown raw string content
  • md_file_path: input markdown file path
  • css_file_path: input styles path (CSS)
  • base_url: absolute base path for markdown linked content (as images)

With Docker

Install Docker

Pull the image:

$ docker pull jmaupetit/md2pdf

Now run your image:

$ docker run --rm -v $PWD:/app jmaupetit/md2pdf --css styles.css INPUT.MD OUTPUT.PDF

Troubleshooting on MacOSX

Ensure, Weasyprint is fully functional before using md2pdf. You will find installation instructions in the project documentation: https://weasyprint.readthedocs.io/en/latest/install.html

In a few words, here are the few steps you will need to follow:

$ brew install cairo pango gdk-pixbuf libxml2 libxslt libffi

Misc

Using custom fonts in styles

WeasyPrint does not support the @font-face property yet (see project issue 28). If you use want to use custom fonts, you should use system fonts and define them with the font-family CSS property, like:

font-family: 'Neutraface Condensed';

Note that you should only define one single custom font, not a substitution list.

Contributing

Hacking

Clone this project first:

$ git clone git@github.com:jmaupetit/md2pdf.git

Install it with its dependencies (ideally in a virtual environment):

$ cd md2pdf
$ python -m venv venv
$ source venv/bin/activate
(venv) $ pip install -r requirements-dev.txt
(venv) $ python setup.py develop

Running the test suite

To run the test suite with your active python version (virtual environment):

(venv) $ pytest

Lint the code via:

(venv) $ flake8

Release a new version

Upload a new release to PyPI:

$ python setup.py sdist bdist_wheel
$ twine upload dist/* --username 'johndoe' --password 'secret'

License

md2pdf is released under the MIT License. See the bundled LICENSE file for details.

About

Markdown to PDF conversion tool

License:MIT License


Languages

Language:Python 77.4%Language:CSS 17.0%Language:Dockerfile 5.6%