Skip to main content

CLI tool to export markdown to pdf using jinja2 templates.

Project description

Description

Mdexport is CLI tool to publish Markdown files as PDF using Jinja2 templates. You can use Frontmatter metadata as custom values to be filled into your template.

Designed to work with Obsidian.

Video deomo

Installation

pip3 install mdexport

Usage

Setup an html templates directory

Create a directory where you will store your templates. Each template should be a subdirectory named with the desired template name.

templates/
├──invoice/
│   ├──template.html
│   └──(any files or images that template.html depends on)
└── thesis/
   ├──template.html
   └──(any files or images that template.html depends on)

Update the config of mdexport

Set the path of your template directory in the mdexport config.

mdexport options set template_dir /path/to/templates

Create your template

Create a template.html file with a Jinja2 template.

<html>
    <body>
        <section>
            <b>Date: {{date}}</b>
            <b>To: {{to}}</b>
        </section>
        <section>
            <p>{{body}}</p>
        </section>
</body>
</html>

Create your MD file

Write your Markdown file. Provide Frontmatter metadata(compatible with Obsidian properties) as the keys that shall be rendered in your template.

---
date: 14/10/2024
to: Bob
---

Body of my markdown file.

If you want to have mdexport generate an empty Markdown file with the metadata keys your template expects you can run the following:

mdexport emptymd test.md -t templatename

Generate pdf

mdexport publish file.md -o output.pdf -t invoice

Custom attachments folder

In case you are using Obsidian or some other tool that places images in a seperate folder you can set the name of this folder as:

mdexport options set attachments images_folder

Dependencies

Mdexport makes use of Weasyprint to generate PDF files. Installation of Weasyprint seems to be not straight forward on some systems. If you encounter issues please follow the steps in the link below.

[https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#installation]

Issue with weasyprint on Mac

echo 'export DYLD_LIBRARY_PATH=$(brew --prefix)/lib' >> ~/.bashrc

sudo ln -s /opt/homebrew/opt/glib/lib/libgobject-2.0.0.dylib /usr/local/lib/gobject-2.0
sudo ln -s /opt/homebrew/opt/pango/lib/libpango-1.0.dylib /usr/local/lib/pango-1.0
sudo ln -s /opt/homebrew/opt/harfbuzz/lib/libharfbuzz.dylib /usr/local/lib/harfbuzz
sudo ln -s /opt/homebrew/opt/fontconfig/lib/libfontconfig.1.dylib /usr/local/lib/fontconfig-1
sudo ln -s /opt/homebrew/opt/pango/lib/libpangoft2-1.0.dylib /usr/local/lib/pangoft2-1.0

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

mdexport-0.9.2.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mdexport-0.9.2-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file mdexport-0.9.2.tar.gz.

File metadata

  • Download URL: mdexport-0.9.2.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.1 Darwin/23.5.0

File hashes

Hashes for mdexport-0.9.2.tar.gz
Algorithm Hash digest
SHA256 cb48628a9791e89794d8afc23a2232d8ec42585cacaadcdc07009cc59b1c8fc2
MD5 8b2d7d58fa5ecd5356d5b756ada977d4
BLAKE2b-256 e9d3660e7792ccb3eabebbe3f585f14ad7b6b1973387c9d77e7ba11812b46ce8

See more details on using hashes here.

File details

Details for the file mdexport-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: mdexport-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.1 Darwin/23.5.0

File hashes

Hashes for mdexport-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f314d99c8dcd9f910fb29e6a2f788a3d6dcdf10f2fd5f5dda1fd69bee91eb19f
MD5 e0bf9871707de8fadb3e6a9b1c397c94
BLAKE2b-256 dcde7c60ad4dc8e8a24dbc0eb6ddc496c3e99d54afb3621df966eb469ee2615e

See more details on using hashes here.

Supported by

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