May 28 2022 · Aleksandra Płońska, Piotr Płoński

The 4 ways to export Jupyter Notebook as PDF

Export Jupyter Notebook as PDF bannerHave you ever wanted to export your Jupyter Notebook to PDF file? The PDF is an abbreviation for Portable Document Format. It can be displayed on any operating system. That makes it format of choice for many who wants to share their results. In this post I will show you 4 different ways how to export Jupyter Notebook as PDF file.

1. Print Jupyter Notebook to PDF

The most straightforward way is just to use web browser feature of print to PDF. There is no need to install any additional packages.

Print Jupyter Notebook to PDF

The big advantage of this approach is that we don't need to install additional libraries to make it works! However, it is manual approach - hard to automate. What is more, we can't control the process of export (for example, we can't hide code in the exported file).

2. Download Jupyter Notebook as PDF

The Jupyter Notebook has an option to export the notebook to many formats. It can be accessed by clicking File -> Download as -> PDF via LaTeX (or PDF via HTML - not visible in the screenshot).

Print Jupyter Notebook to PDF

This approach requires you to install some additional packages. For me, the option that exports with LaTeX is difficult. It requires you to install much more packages than option of export via HTML. If you don't have required packages you will get the error message:

nbconvert failed: xelatex not found on PATH, if you have not installed xelatex you may need to do so. Find further instructions at https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex.
Jupyter Notebook error when exporting to pdf

This is scary, isn't it? The option to export via HTML requires you to download Chromium (headless browser).

I rarely use this approach to be honest. It requires additional installation (that is not trivial) and is manual. This approach under the hood is using nbconvert tool.

3. Export to PDF with nbconvert

That's one of my favourite approaches. Why? Because it is a command line tool that can be used in the scripts :)

Still you need to install additional packages to make it work. The same as in Jupyter Notebook GUI there are two options:

  • export to PDF via LaTex,
  • export to PDF via HTML.

The latter is my choice. It requires pyppeteer and Chromium to be download. This can be easily achieved by running:

pip install nbconvert[webpdf]

and adding a flag --allow-chromium-download when converting a notebook:

jupyter nbconvert --to webpdf --allow-chromium-download your-notebook-file.ipynb

The flag should be added only one time. It is not necessary after Chromium installation. The nbconvert has many optional arguments that control the export. For example, you can easily hide the code with --no-input flag:

jupyter nbconvert --to webpdf --no-input your-notebook-file.ipynb

Additionally, you can apply more options to the export like removing selected cells or change the templates.

4. Share Notebook with Mercury

There is an open-source framework Mercury that makes Python notebooks sharing painless. It converts notebooks to interactive documents (web apps, reports, slides, dashboards). You can share a notebook with interactive widgets. Your end-users can tweak widgets values and execute the notebook with new values (without changing the code). The Mercury allows to export the executed notebook into standalone HTML or PDF file. The end-user just need to clik the Download button.

Jupyter Notebook error when exporting to pdf

Summary

Saving notebooks to PDF is a great way to persist results in a shareble format. PDFs can be easily published online or send in the email. There are several ways to convert Jupyter Notebook as PDF. The automatic conversion can be easily achieved with nbconvert tool. Notebooks shared with Mercury framework can be easily converted to PDF. The PDF notebook can be manually downloaded from the website.