You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.3 KiB
Markdown

#
2 years ago
The boilerplate uses the python framework flask to run the webinterface and to generate the HTML of the book. To generate the PDF it uses the javascript library pagedjs together with the chromium webbrowser in headless mode.
# Installation
First [download](https://gitlab.constantvzw.org/anais_berck/pagedjs-flask-boilerplate/-/archive/main/pagedjs-flask-boilerplate-main.zip) it on gitlab.
2 years ago
Or clone the repository:
`git clone git@gitlab.constantvzw.org:anais_berck/pagedjs-flask-boilerplate.git`
2 years ago
This boilerplate uses Python 3 and the framework [Flask](https://palletsprojects.com/p/flask/).
Find information on how to [install python here](https://www.python.org/downloads/)
To install the requirements, move to the directory this readme is located in, and then run. Optionally create a virtual environment:
2 years ago
`pip install -r requirements.txt`
Then install [pagedjs-cli](https://gitlab.coko.foundation/pagedjs/pagedjs-cli), with the command:
`npm install -g pagedjs-cli`
___ in case pagedjs-cli does not show up, follow these instructions:
check the version of node (this should be: v16.17.0)
'$ node --version'
check if nvm is installed
'$ nvm'
if nvm does not show up, install nvm with the following command:
'$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash'
copy the following code into the terminal:
'export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'
install the latest version of nvm:
'$ nvm install --lts'
check the version of node (this should be: v16.17.0)
'$ node --version'
now install paged.js:
$ npm install -g pagedjs-cli
check if it is installed:
$ whereis pagedjs-cli
add this path to settings.py
/home/ana/.nvm/versions/node/v16.17.0/bin/pagedjs-cli
2 years ago
Finally edit a copy of `settings.example.py` and save it as `settings.py`.
It is important to set the `PAGEDJS_BINARY_PATH`, you should be able to find it
by running: `whereis pagedjs-cli`.
Now you should be able to start the interface with: `./run.sh`.
# Contents of the boilerplate
- `app.py` the flask webapp, generating the views
- `pagedjs.py` helper functions to run pagedjs-cli from python
- `utils.py` utitilities for generative books
- `templates/index.html` template for the index
- `templates/book.html` template for the book itself
- `static/style.css` css style rules for the index and book (it's possible to split them up, also adjust the templates then)
- `static/pagedjs.interface.css` css style rules provided by paged.js to have a more rich preview in debug mode
# Usage
The boilerplate essentially has two views: `index` and `generate`. The `index` shows the homepage and a link to the `generate` function. In this example the generated book is downloaded as a PDF.
The template `templates/book.html` is used with styles from `static/style.css` to generate the PDF, adjust them to adjust your book. In `app.py` the function generate loads the template, adjust that function to generate context and / or HTML.
In the [documentation of paged.js](https://pagedjs.org/documentation/) a lot of information on print specific functionality in CSS can be found.
2 years ago
# Deployment
Todo
Note: this boilerplate does not make any effort at rate-limiting.