Skip to main content

Print PDFs from Markdown Files using Weasyprint

Project description

md2weasypdf

Print PDFs from Markdown Files and a HTML template/layout using Weasyprint.

Installation

pip install md2weasypdf

Usage

python -m md2weasypdf <input_folder_or_file> <output_path>

When a layout is not specified in the files frontmatter (see below), the --layout option has to be passed.

Watch Mode

The watch mode is intended for creation of layouts. The given layouts directory and input directory will be watched for changes.

For VSCode the extension vscode-pdf can be recommended, as it refreshes the displayed PDF automatically.

python -m md2weasypdf <input_folder_or_file> <output_path> --watch

Layout

The document layout must be given via the command option --layout or in the frontmatter of the single file. As layout a directory name inside the ./layouts directory (default, can be changed using --layouts-dir) is expected. In the layout directory, a index.html.j2 or index.html file is expected, which is loaded as entrypoint. The file is parsed using Jinja2.

Input

Input files are expected in markdown format with several markdown extensions. The markdown documents can utilize Jinja2 for templating inside the document (e. g. reusing texts).

Bundling

The bundling feature allows to bundle multiple documents into one PDF. This is useful when you want to create one PDF file from multiple source files. The bundling feature is enabled by adding the --bundle flag to the command. The specified input folder will be searched recursively for *.md files, files starting with an underscore will be ignored.

When using the bundle option, a layout has to be specified using --layout and a title for the whole document using --title.

Options

YAML Frontmatter can be used to customize the document layout or add other options which will be passed to the template. The following example shows how a document with frontmatter section could look like:

---
title: My Document Title
layout: doc1
---
Lorem ipsum...

Markdown Extensions

Table of Contents

Insert a table of contents using [TOC]. The table of contents will be generated automatically based on the headlines (lines starting with one or multiple #) in the document.

Table of Abbreviations

Insert a table of abbreviations using [TOA]. The table of abbreviations will be generated automatically based on defined abbreviations (using *[Abbreviation]: Explanation) in the document.

Footnotes

Footnotes let you reference relevant information without disrupting the flow of what you're trying to say:

Here's a simple footnote,[^1] and here's a longer one.[^bignote]

[^1]: This is the first footnote.

[^bignote]: Here's one with multiple paragraphs and code.

    Indent paragraphs to include them in the footnote.

    `{ my code }`

    Add as many paragraphs as you like.

It is possible to reference to the same footnote by using the same footnote label.

Subscript

Use tildes ~ around text to create a subscript formatting.

Checkboxes

Use [ ] to create a checkbox. Use [x] to mark a checkbox as checked.

Fields

Use [>input_id] to create a text input. To create a textarea, add |textarea after the input id. To create a date field, add |YYYY-MM-DD after the input id.

To add a placeholder, append the placeholder text within parens to the end of the input id: [>input_id] (placeholder text).

Mermaid.js

Mermaid.js can be used in code blocks with the language mermaid. To convert the mermaid code into an image, mermaid-cli is required to be installed on the system.

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

md2weasypdf-0.0.13.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

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

md2weasypdf-0.0.13-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file md2weasypdf-0.0.13.tar.gz.

File metadata

  • Download URL: md2weasypdf-0.0.13.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for md2weasypdf-0.0.13.tar.gz
Algorithm Hash digest
SHA256 ac2709e2dfa4ebf3bf6bc9d335cb0628a38d6a6d655f56ba2a5c4f833f549545
MD5 3640088b827fef3e25105d9f1ecb5a1d
BLAKE2b-256 401b9b418faf0a1fae9b5da954d1c9b474f1bd86267b7b40cb89d0a5b04ddf35

See more details on using hashes here.

File details

Details for the file md2weasypdf-0.0.13-py3-none-any.whl.

File metadata

  • Download URL: md2weasypdf-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for md2weasypdf-0.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 3c72ea9b0178c24bddc7e2d1488bd3f511483726e237b4a4172a645eec6f9507
MD5 f0f19cc2d7d2c97bbf1ebed547c13e4f
BLAKE2b-256 42e68cbeddba43994695bd1e33fa8cbc7976776bcc3916dcda4d12bc45008569

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