ReLaXed creates PDF documents interactively using HTML or Pug (a shorthand for HTML). It allows complex layouts to be defined with CSS and JavaScript, while writing the content in a friendly, minimal syntax close to Markdown or LaTeX.
Here it is in action in the Atom editor:
And here are a few output examples:
Book - source / PDF | Letter - Source / PDF | Resume - Source / PDF | Visit card - Source / PDF |
Slides - Source / PDF | Report - Source / PDF | Paper - Source / PDF | Poster - Source / PDF |
ReLaXed has support for Markdown, LaTeX-style mathematical equations (via MathJax), CSV conversion to HTML tables, plot generation (via Vega-Lite or Chart.js), and diagram generation (via mermaid). Many more features can be added simply by importing an existing JavaScript or CSS framework.
Install ReLaXed via NPM with this command (do not use sudo
):
npm i -g relaxedjs
This will provide your system with the relaxed
command. If the installation fails, refer to the troubleshooting page.
To start a project, create a new, empty my_document.pug
file, and start a ReLaXed process from a terminal:
relaxed my_document.pug
ReLaXed will watch my_document.pug
and its directory. Every time a file changes, my_document.pug
will be compiled as my_document.pdf
.
Now write and save the following in my_document.pug
:
h1 My document's title
p A paragraph in my document
A new file, my_document.pdf
, will be created. Every time you modify and save the sources, the file is automatically updated (make sure you use a PDF viewer with auto-refresh to see your changes happen in real-time). That's all there is to know to start creating your first document!
It is also possible to generate the PDF file directly (without waiting for file changes) with this command:
relaxed my_document.pug --build-once
See this wiki section for more options. To go further:
- Learn more about the capabilities of the Pug language
- Browse the examples
- Read about our recommended setup to use ReLaXed
- Learn some advanced features of ReLaxed
- Read these comparisons between ReLaXed and other document-editing systems
Many of us prefer markup languages (Markdown, LaTeX, etc.) to GUI document-editors like MS Office or Google Docs. This is because markup languages make it easier to quickly write documents in a consistent style.
However, Markdown is limited to the title/sections/paragraphs structure, and LaTeX has obscure syntax and errors that also make it difficult to stray from the beaten track.
On the other hand, web technologies have never looked so good.
- Beautiful CSS frameworks make sure your documents look clean and modern.
- There are JavaScript libraries for pretty much anything: plotting, highlight code, rendering equations...
- Millions of people (and growing) know how to use these.
- Shorthand languages like Pug and SCSS are finally making it fun to write HTML and CSS.
- (Headless) web browsers can easily turn web documents into PDF, on any platform.
ReLaXed is an attempt at finding the most comfortable way to leverage this for desktop PDF creation.
ReLaXed consists of a few lines of code binding together other software. It uses Chokidar to watch the file system. When a file is changed, several JavaScript libraries are used to compile SCSS, Pug, Markdown, and diagram files (mermaid, flowchart.js, Chart.js) into an HTML page which is then printed to a PDF file by a headless instance of Chromium (via Puppeteer).
ReLaXed is an open-source framework originally written by Zulko and released on Github under the ISC licence. Everyone is welcome to contribute!
For bugs and feature requests, open a Github issue. For support or Pug/HTML-related questions, ask on Stackoverflow or on the brand new reddit/r/relaxedjs forum, which can be used for any kind of discussion.
Projects members:
- @Zulko (Owner)
- @Drew-S (architecture, plugins)
- @DanielRuf
- @benperiton