Printing & Exporting as PDF

Article Image
Screenshot of the Print preview functionality introduced in v0.103.0.

Trilium allows printing notes to a real printer, or generating a structured PDF for a single note or for multiple notes through Collections.

Note that not all note types are printable as of now. We do plan to increase the coverage of supported note types in the future.

Printing and exporting as PDF are not perfect. Due to technical limitations, and sometimes even browser or Electron glitches the text might appear cut off in some circumstances. 

Printing a note or exporting as PDF on the desktop#

On the desktop application of Trilium it is possible to export a note as PDF. To print a note:

This will trigger the print preview screen next.

Print preview & print options#

The print preview dialog allows the following printing options to be adjusted:

  • The printer to use

    • Save as PDF generates a PDF that is structured (maintains a table of contents, keeps the text selectable). Prefer this over other virtual PDF printers that ship with the operating system.
  • Page orientation: Portrait (default) or Landscape.

  • Page size

  • Scale the entire content from 10% to 200% to improve the fit within the page.

  • Margins, which can be removed completely or adjusted individually for all the four edges.

  • Print only a subset of pages. Individual page numbers are separated by colons and hyphen-based ranges are supported (e.g. 3-5 for pages 3 to 5).

Additional interaction:

  • Print using system dialog allows setting more options that are otherwise not available in Trilium.

Printing on the browser#

This feature allows printing of notes. It works on both the desktop client, but also on the web.

To print a note, select the Article Image button to the right of the note and select Print note. Depending on the size and type of the note, this can take up to a few seconds. Afterwards you will be redirected to the system/browser printing dialog.

On the server or PWA (mobile), the option is not available due to technical constraints and it will be hidden.

Reporting issues with the rendering#

Should you encounter any visual issues in the resulting PDF file (e.g. a table does not fit properly, there is cut off text, etc.) feel free to report the issue. In this case, it's best to offer a sample note (click on the Article Image button, select Export note → This note and all of its descendants → HTML in ZIP archive). Make sure not to accidentally leak any personal information.

Consider adjusting font sizes and using page breaks to work around the layout.

Automatic opening of the file#

When the PDF is exported, it is automatically opened with the system default application for easy preview.

Note that if you are using Linux with the GNOME desktop environment, sometimes the default application might seem incorrect (such as opening in GIMP). This is because it uses Gnome's “Recommended applications” list.

To solve this, you can change the recommended application for PDFs via this command line. First, list the available applications via gio mime application/pdf and then set the desired one. For example to use GNOME's Evince:

gio mime application/pdf

Printing multiple notes#

Since v0.100.0, it is possible to print more than one note at the time by using Collections:

  1. First create a collection.
  2. Configure it to use List View.
  3. Print the collection note normally.

The resulting collection will contain all the children of the collection, while maintaining the hierarchy.

Keyboard shortcut#

It's possible to trigger both printing and export as PDF from the keyboard by going to Keyboard shortcuts in Options and assigning a key combination for:

  • Print Active Note
  • Export Active Note as PDF

Constraints & limitations#

Not all Note Types are supported when printing, in which case the Print and Export as PDF options will be disabled.

  • For Code notes:
    • Line numbers are not printed.
    • Syntax highlighting is enabled, however a default theme (Visual Studio) is enforced.
  • For Collections, the following are supported:
    • List View, allowing to print multiple notes at once while preserving hierarchy (similar to a book).
    • Presentation, where each slide/sub-note is displayed.
      • Most note types are supported, especially the ones that have an image representation such as Canvas and Mind Map.
    • Table, where the table is rendered in a print-friendly way.
      • Tables that are too complex (especially if they have multiple columns) might not fit properly, however tables with a large number of rows are supported thanks to pagination.
      • Consider printing in landscape mode, or using #printLandscape if exporting to PDF.
    • The rest of the collections are not supported, but we plan to add support for all the collection types at some point.
  • Using Custom app-wide CSS for printing is no longer supported, instead a custom printCss relation needs to be used (see below).

Customizing the print CSS#

As an advanced use case, it's possible to customize the CSS used for printing such as adjusting the fonts, sizes or margins. Note that Custom app-wide CSS will not work for printing.

To do so:

  • Create a CSS code note.
  • On the note being printed, apply the ~printCss relation to point to the newly created CSS code note.
  • To apply the CSS to multiple notes, consider using inheritable attributes or Templates.

For example, to change the font of the document from the one defined by the theme or the user to a serif one:

body {
	--print-font-family: serif;
    --print-font-size: 11pt;
}

To remark:

  • Multiple CSS notes can be add by using multiple ~printCss relations.
  • If the note pointing to the printCss doesn't have the right note type or mime type, it will be ignored.
  • If migrating from a previous version where Custom app-wide CSS, there's no need for @media print {  since the style-sheet is used only for printing.

Under the hood#

Both printing and exporting as PDF use the same mechanism: a note is rendered individually in a separate webpage that is then sent to the browser or the Electron application either for printing or exporting as PDF.

The webpage that renders a single note can actually be accessed in a web browser. For example http://localhost:8080/#root/WWRGzqHUfRln/RRZsE9Al8AIZ?ntxId=0o4fzk becomes http://localhost:8080/?print#root/WWRGzqHUfRln/RRZsE9Al8AIZ.

Accessing the print note in a web browser allows for easy debugging to understand why a particular note doesn't render well. The mechanism for rendering is similar to the one used in Note List.

  1. ^