Convert Markdown files to PDF with styles.
The easiest way to go is to use pip:
$ pip install md2pdfUsage:
md2pdf [options] INPUT.MD OUTPUT.PDF
Options:
--css=STYLE.CSS
For example, try to generate the project documentation with:
$ md2pdf README.md README.pdfOptionally, you may load an external style (restricted to CSS2):
$ md2pdf --css tests/resources/input.css README.md README.pdfYou 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 pathmd_content: input markdown raw string contentmd_file_path: input markdown file pathcss_file_path: input styles path (CSS)base_url: absolute base path for markdown linked content (as images)
Install Docker
Pull the image:
$ docker pull jmaupetit/md2pdfNow run your image:
$ docker run --rm -v $PWD:/app jmaupetit/md2pdf --css styles.css INPUT.MD OUTPUT.PDFEnsure, 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:
- Install XQuartz from: https://xquartz.macosforge.org
- Install all dependencies at once with homebrew and go grab a coffee (this may take a while):
$ brew install cairo pango gdk-pixbuf libxml2 libxslt libffiWeasyPrint 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.
Clone this project first:
$ git clone [email protected]:jmaupetit/md2pdf.gitInstall 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 developTo run the test suite with your active python version (virtual environment):
(venv) $ pytestLint the code via:
(venv) $ flake8Upload a new release to PyPI:
$ python setup.py sdist bdist_wheel
$ twine upload dist/* --username 'johndoe' --password 'secret'
md2pdf is released under the MIT License. See the bundled LICENSE file for
details.
