Skip to main content

Tool for generating outlines for PDF files generated by mdbook-pdf.

Project description

mdbook-pdf

last-commit release-date Crate mdbook-pdf build mdbook-pdf test Python package

Followers watchers stars forks

Open Source Love GPL Licence Repo-Size

中文

Blog

A backend for mdBook written in Rust for generating PDF based on headless chrome and Chrome DevTools Protocol.

Installation & Usage

Since it's a plugin (backend) for mdBook, first of all you should ensure that mdbook is available.

If your machine's architecture is x86_64, or you are using Linux for ARM64, check the successful build GitHub Actions workflows/release, click into the latest one, and then you can get a binary from the Artifacts (including Windows, Linux, macOS).

Otherwise, make sure the rust compiling environment is available, execute cargo install mdbook-pdf to compile and install.

If you want to compile the latest version, make sure the Rust build environment is available (cargo build). Then run git clone https://github.com/HollowMan6/mdbook-pdf.git, in the cloned folder, run cargo build --release , get the executable in target/release/, and put it in PATH.

For running, please have Google Chrome / Chromium / Microsoft Edge already available (installed at the default location, in PATH or binary location configured). If not, and mdbook-pdf has the fetch feature enabled (It is not enabled by default, you need to use cargo install mdbook-pdf --features fetch to recompile for enabling), the program will try to automatically download the Chromium browser and run it (Note: if you are on Linux, there may be problems if chromium dependencies are not satisfied / using non-x86_64 architectures).

  • On Windows 10 and above, the program can generate PDF normally without installing any additional software, because Microsoft Edge is the browser provided with Windows system. Of course, considering the support for the older versions of Windows without Edge, you can install Google Chrome on your computer.
  • In MacOS, you need to install Google Chrome / Microsoft Edge or Chromium.
  • In Linux, you can choose to install any of the Google Chrome / Chromium / Microsoft Edge browsers. It is recommended to install Chromium. The name of this software package in your Linux distribution is commonly chromium or chromium-browser (Note: for Ubuntu later than 18.04, you have to install chromium-browser through snap).

Make sure the following exists in your book.toml:

[output.html]

[output.pdf]

And also [output.html.print] is not disabled (it should be enabled by default, so don't worry if the following lines doesn't occur in you book.toml).

[output.html.print]
enable = true

A simplest book.toml is as follows:

[book]
title = "An Example"

[output.html]

[output.pdf]

Finally you can build your book and get the PDF file with mdbook build command, your PDF file will be available at book/pdf/output.pdf.

Run with Docker

You can also use this docker image.

docker run --rm -v /path/to/book:/book hollowman6/mdbook-pdf

If your book have other Rust dependencies, you can install them on your local machine (if using Linux), or if you are not using Linux, download the Linux executables of corresponding architecture to a dir, replace ~/.cargo/bin with your path.

docker run --rm -v /path/to/book:/book -v ~/.cargo/bin:/mdbook hollowman6/mdbook-pdf

Configuration

Support customize PDF paper orientation, scale of the webpage rendering, paper width and height, page margins, generated PDF page ranges, whether to display header and footer as well as customize their formats, and more.

Check book.toml and comments for details for the available configurations of [output.pdf].

Common Issues

  1. Support for Firefox in mdbook-pdf!

Currently, according to Puppeteer's documentation, Chrome DevTools Protocol Page.printToPDF is only supported in Chrome headless. An issue has already been filed for this here.

  1. Broken links!

I've already submitted a PR for mdBook to fix this by making print page (print.html) links link to anchors on the print page, but it's not merged yet. You can try my PR fork for this to work.

If you have relative links that link outside the book, please provide the static hosting site URL for it to get fixed.

  1. Can you add the bookmark to the PDF reflecting the Table of Contents, just like what wkhtmltopdf supported?

This should be realized by Chromium, and an issue has already been filed for this here.

Initial support for the bookmark/outline of the PDF file has already been available (mdbook-pdf-outline). It is written in Python and is another backend for mdbook and should be used with mdbook-pdf and the mdbook version mentioned in Common Issues 2 (by cargo install --git https://github.com/HollowMan6/mdBook mdbook instead) for fixing the broken links in print.html.

You can install this backend by pip install mdbook-pdf-outline.

Remember to put the following to the end of your book.toml, after [output.pdf]:

[output.pdf-outline]

If you want to use the table of content just like the one shown in the print.html page for PDF file, you can leave the book.toml as it is.

If you prefer to use the table of content just like the one generated by wkhtmltopdf (generate entries based on the headings), you can turn on the like-wkhtmltopdf option by using the following to your book.toml:

[output.pdf-outline]
like-wkhtmltopdf = true

Finally, you can find the outlined version at book/pdf-outline/output.pdf.

  1. Failed to render my book for PDF in mdbook-pdf!

Will appreciate if you can report it to the issue tracker providing all the traces for mdbook-pdf rendering as well as your book.toml. You can also provide the link to your book's repository if it's open source.

RUST_BACKTRACE=full RUST_LOG=trace mdbook build

Credits

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

mdbook-pdf-outline-0.1.4.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

mdbook_pdf_outline-0.1.4-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file mdbook-pdf-outline-0.1.4.tar.gz.

File metadata

  • Download URL: mdbook-pdf-outline-0.1.4.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for mdbook-pdf-outline-0.1.4.tar.gz
Algorithm Hash digest
SHA256 4938bee78893fb9f978b4233197bf6771552f75f93e9f8e0df199b2637a4a4f1
MD5 97fb4b75258421770ceebc314fa752f5
BLAKE2b-256 95d0713fac0559039bb0f48095e9d04bfc51b5cb57530696047e08ccb5da2385

See more details on using hashes here.

File details

Details for the file mdbook_pdf_outline-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for mdbook_pdf_outline-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a38c3a14ceb69f1690329bc8af4d8558c19fe056d0ae6f150c6a9509c167b3a1
MD5 0d7d6197b50cd3a704f6d2c968aa3a08
BLAKE2b-256 3a5d7291c26742d29703a6237772b0e2f61e4a1e8763b6026bd0fa4cd6340b47

See more details on using hashes here.

Supported by

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