Generate a PDF file for each MkDocs page
Project description
Mkdocs Page to PDF
An Mkdocs plugin to generate a PDF file for each MkDocs page using pyppeteer
(chrome headless)
and add a download button.
How to use
Install the package with pip:
pip install mkdocs-page-pdf
Enable the plugin in your mkdocs.yml:
plugins:
# - ...
- page-to-pdf # should be last
Options
To set different options use the following syntax.
plugins:
# - ...
- page-to-pdf :
# Options here
disable
(bool): Disable pdf rendering useful to quickly disable it without removing the plugin config. Defaults toFalse
.disableOnServe
(bool): Disable pdf rendering when usingmkdocs serve
. Defaults toFalse
.
The following options are directly induced from pyppeteer options :
scale
(float): Scale of the webpage rendering, defaults to1.0
.displayHeaderFooter
(bool): Display header and footer. Defaults toFalse
.headerTemplate
(str): HTML template for the print header. Should be valid HTML markup with following classes.date
: formatted print datetitle
: document titleurl
: document locationpageNumber
: current page numbertotalPages
: total pages in the document
footerTemplate
(str): HTML template for the print footer. Should be valid HTML markup with the same classes asheaderTemplate
.printBackground
(bool): Print background graphics. Defaults toFalse
.landscape
(bool): Paper orientation. Defaults toFalse
.pageRanges
(string): Paper ranges to print, e.g., '1-5,8,11-13'. Defaults to empty string, which means all pages.format
(str): Paper format. Defaults toA4
.margin
(dict): Paper margins.top
(str): Top margin, accepts values labeled with units, defaults to20px
.right
(str): Right margin, accepts values labeled with units, defaults to20px
.bottom
(str): Bottom margin, accepts values labeled with units, defaults to20px
.left
(str): Left margin, accepts values labeled with units, defaults to20px
.
pageLoadOptions
(dict): Page load options (see this).timeout
(int): Maximum time in milliseconds, defaults to30000
.waitUntil
(str): When to consider navigation succeeded, defaults toload
.
exclude
(list) : List of glob pattern to exclude
Troubleshooting
Running in a docker container (ci/cd)
Depending on what image you are using you may encounter some issue running pyppeteer
: Browser closed unexpectedly
This is due to some missing shared librairies used by Chrome Headless.
Related issue : https://github.com/pyppeteer/pyppeteer/issues/194
See this article
and this guide
Ready-to-use docker image : https://github.com/brospars/docker-mkdocs
Slow build on serve
You can use disable
or disableOnServe
options to disable the pdf rendering (entirely or on serve) but you can also
use the mkdocs serve --dirtyreload
flag to only rebuild modified files on the fly.
Blank page at the end
Due to a chrome bug a blank page can appear at the end of the PDF you can remove it by addin the following to you extra.css :
body {
contain: strict;
}
Special thanks
This plugin was inspired by mkdocs-with-pdf
and mkdocs-pdf-export-plugin
but without using weasyprint
and instead pyppeteer
(chrome headless) to have a render
closer to what you have in your chrome browser.
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
Built Distribution
File details
Details for the file mkdocs-page-pdf-0.1.1.tar.gz
.
File metadata
- Download URL: mkdocs-page-pdf-0.1.1.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aeff98f5c629e64f2ca1b43e876479a65ee67dcc6e81b9e89813fa7443b21f49 |
|
MD5 | ebf547b549d99b5fb5c9cc97829b87fa |
|
BLAKE2b-256 | bbe9bc88172275abe0cb573daf6b95123d16a4e2820cf9dbad8d9e0065cf0184 |
File details
Details for the file mkdocs_page_pdf-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: mkdocs_page_pdf-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7ba66baa32db9f05626fa57a496f5fc3b7492de5e8b222154953399c77c44d1 |
|
MD5 | 538b71c379a15de7070103ae5701fa62 |
|
BLAKE2b-256 | cea478e3e7ff7686651aa7a79c8048ccad2c66deba39abd8017a6569e5c1cfaf |