Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ganeshh123/notion-pdf-export
A tool to allow batch PDF export for free Notion users. You can export as HTML and then use this tool to convert those into PDFs.
https://github.com/ganeshh123/notion-pdf-export
batch batch-pdf-export export html nexe notion notion-pdf-export pdf pdf-generation wkhtmltopdf
Last synced: 3 days ago
JSON representation
A tool to allow batch PDF export for free Notion users. You can export as HTML and then use this tool to convert those into PDFs.
- Host: GitHub
- URL: https://github.com/ganeshh123/notion-pdf-export
- Owner: ganeshh123
- License: mit
- Created: 2020-08-03T10:23:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-02-14T16:00:13.000Z (almost 2 years ago)
- Last Synced: 2025-01-13T14:17:04.893Z (10 days ago)
- Topics: batch, batch-pdf-export, export, html, nexe, notion, notion-pdf-export, pdf, pdf-generation, wkhtmltopdf
- Language: JavaScript
- Homepage: https://app.gn3.sh/notion-pdf-export/
- Size: 86.7 MB
- Stars: 436
- Watchers: 5
- Forks: 28
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Notion PDF Export
A tool to allow batch PDF export for free Notion users. You can export as HTML with subpages and then use this tool to convert those into PDFs.
- [Download](#download)
- [Usage](#usage)
- [Building](#building)
- [Source Code](#source-code)
- [Running the Project on Node](#running-the-project-on-node)
- [Compiling an Executable](#compiling-an-executable)
- [Installing nexe](#installing-nexe)
- [To Install Automatically:](#to-install-automatically)
- [To Install Manually:](#to-install-manually)
- [Compiling Executables](#compiling-executables)
- [Compile Automatically](#compile-automatically)
- [Compile Manually](#compile-manually)
- [Credits](#credits)
- [wkhtmltopdf](#wkhtmltopdf)
- [Assets](#assets)## Download
Get the latest download for Windows and macOS from the releases page:
[https://github.com/ganeshh123/notion-pdf-export/releases](https://github.com/ganeshh123/notion-pdf-export/releases/latest)
[Download for Windows](https://github.com/ganeshh123/notion-pdf-export/releases/download/1.3.0/notion-pdf-export_windows_1.3.0.zip)
[Download for macOS](https://github.com/ganeshh123/notion-pdf-export/releases/download/1.3.0/notion-pdf-export_mac_1.3.0.zip)
## Usage
[![video guide](https://i.ytimg.com/vi/txKhyzwkAus/maxresdefault.jpg)](http://www.youtube.com/watch?v=txKhyzwkAus "video_guide")
[Video Guide](https://youtu.be/txKhyzwkAus)
1. Download the tool and extract.
![downloaded_program](docs/downloaded_program.jpg)
2. In [Notion](https://notion.so), place all the pages you wish to export into one page and click Export, choose 'HTML' and ensure 'Include Subpages' is on.
![notion-export](docs/notion-export.jpg)
3. Extract the export to find a list of HTML files and folders for each page. Place the HTML files with folders containing images in the same folder as `notion-pdf-export.exe` (Windows) or `notion-pdf-export` (macOS).
![placing-markdown-files](docs/placing-html-files.jpg)
4. Double click `notion-pdf-export.exe` (Windows) or `notion-pdf-export` (macOS) and wait for the process to be completed.
![running-program](docs/running-program.jpg)
If nothing happens, you may need to go to macOS security settings and click 'Open Anyway':
![macOS_security](docs/macos_security.jpg)
5. All the individual pages can be found converted into PDF Documents inside the `pdfs` folder.
![created_pdfs](docs/created_pdfs.jpg)---
## Building
### Source Code
- Repository: [ganeshh123/notion-pdf-export](https://github.com/ganeshh123/notion-pdf-export)
- HTTPS Clone: `https://github.com/ganeshh123/notion-pdf-export.git`
- SSH Clone: `[email protected]:ganeshh123/notion-pdf-export.git`### Running the Project on Node
1. Clone/Download the project and run the command in the project root directory:
```bash
npm install
```
2. Run this command to run the script:
```bash
node index.js
```
### Compiling an ExecutableThis is tricky. A lot of adjustments had to be made so that it can run without node.
#### Installing nexe
Executables are compiled with a very [specific version of nexe](https://github.com/cspotcode/nexe/tree/fix-vfs) that allows access to the filesystem, which has a tricky setup procedure.
##### To Install Automatically:
- **Windows** - Run `install_nexe_win.bat` as admin, will take about 5 minutes to install fully.
- **macOS** - Run the `install_nexe_mac` shell script, will take about 5 minutes to install, and you will need to enter an admin password. This sometimes doesn't seem to work properly, so might be worth doing manual install if there's problems.##### To Install Manually:
1. Firstly, install the general [nexe](https://www.npmjs.com/package/nexe) package globally:
- **Windows** (in command prompt must be running as admin):
```bash
npm install -g nexe
```
- **macOS** (in the terminal):
```bash
sudo npm install -g nexe
```2. In the project root folder build some executables with this version of nexe to download node binaries for Windows and macOS:
```bash
nexe . --target win32-x86-10.13.0
nexe . -t macos-10.13.0
```
This will download the binaries we need for later, delete the executables built with this for now.
3. Now we need to install a [specific version of nexe](https://github.com/cspotcode/nexe/tree/fix-vfs) that allows access to the filesystem:
- **Windows** (in command prompt must be running as admin):
```bash
npm install -g cspotcode/nexe#19a5046
```
- **macOS** (in the terminal):
```bash
sudo npm install -g cspotcode/nexe#19a5046
```
Now we should have the correct version of nexe for building. Confirm by running:```bash
nexe -v
```
Check that the version is `4.0.0-beta.4`#### Compiling Executables
##### Compile Automatically
- **Windows** (on a Windows system):
Run the batch script `build_win32.bat` to build a Windows executable. This can be found in `/dist/win32` and everything in that folder must be distributed together.
- **macOS** (on a macOS system):
Run the shell script `build_macos` to build a macOS executable. This can be found in `/dist/macos` and everything in that folder must be distributed together.If you wish to compile for macOS on Windows or vice versa, you can do so using the manual method below.
##### Compile Manually
- To build a **Windows** executable, in the root directory of the project, run the command:
```bash
nexe . --target win32-x86-10.13.0 -o ./dist/win32/notion-pdf-export.exe
```
When distributing the executable `notion-pdf-export.exe` must be placed in a directory with the original `utils` folder from the source.- To build a **macOS** executable, in the root directory of the project, run the command:
```bash
nexe . -t macos-10.13.0 -o ./dist/macos/npe
```
Note that this is built under the name `npe` due to an issue with accessing the current directory.
When distributing, place the `npe` executable it in a directory with the following:
- The original `utils` folder from the source code
- An executable unix shell script with the following contents, with the file name of `notion-pdf-export`:
```bash
#/bin/bash
cd "$0"/..
./npe
```
This can be obtained from `mac_script.sh` or found inside `/dist/macos` This script is needed to set the current directory before the `npe` executable is run.## Credits
### wkhtmltopdf
This project uses wkhtmltopdf for the conversions. This brilliant tool was created by [Jakob Truelsen](https://github.com/antialize) and is now maintained by [Ashish Kulkarni](https://github.com/ashkulz). Version `0.12.6` has been used, and can be [downloaded here](https://wkhtmltopdf.org/downloads.html).
wkhtmltopdf is released under the LGPL-3.0 License which can be found at `utils/wkhtmltopdf/LICENSE`. The source code is available at the [wkhtmltopdf repository](https://github.com/wkhtmltopdf/wkhtmltopdf).
### Assets
Icon by [Alex Martynov](https://dribbble.com/Rengised) obtained from [IconScout](https://iconscout.com/icon/notion-3220890).