How is wiki-to-print made?
Technically seen, wiki-to-print is a web application made with Flask, that can be installed on the same server as where the MediaWiki is installed, or on any other server that you can access with sudo rights.
In practice, it's a version of a DIY configuration and that glues different things together: it takes a wiki page and a stylesheet as input sources (using Python) and renders them into a HTML page (using Pandoc) and a PDF preview page (using Paged.js).
Code
The source code can be found at: https://git.vvvvvvaria.org/varia/wiki-to-print/.
The git repository contains the following files and folders:
├── static/ ├── templates/ ├── Makefile ├── README.md ├── api.py ├── config.json ├── config.py ├── requirements.txt └── web-interface.py
static/
: folder for static files used by flask (eg. css and js scripts)templates/
: folder for jinja templates used by flaskMakefile
: script you can use to install or run the flask applicationapi.py
: script with all the functions that are used by the flask applicationconfig.json
: config script for your wiki-to-print installationconfig.py
: script that binds config.json with web-interface.pyrequirements.txt
: list of software dependencies for wiki-to-printweb-interface.py
: the flask application
To install wiki-to-print
make setup
: makes a virtual environment and installs all the requirements- edit
config.json
To run wiki-to-print
make local
: runs the Flask application locallymake server
: runs the Flask application remotely with Gunicorn, which we used to work with a subdirectory (we use https://cc.vvvvvvaria.org/wiki-to-print/ as the root of this Flask application)
Flask application
The Flask application is based around the following URLs/routes:
button | URL/route | Flask action |
---|---|---|
CSS | https://cc.vvvvvvaria.org/wiki-to-print/static/Test.css | renders PdfCSS:Test as CSS stylesheet |
HTML | https://cc.vvvvvvaria.org/wiki-to-print/html/Test | renders Pdf:Test as HTML page, using PdfCSS:Test as CSS stylesheet |
https://cc.vvvvvvaria.org/wiki-to-print/pdf/Test | renders Pdf:Test as PDF preview page (using Paged.js), using PdfCSS:Test as CSS stylesheet | |
Update text | https://cc.vvvvvvaria.org/wiki-to-print/update/Test | downloads all the text from Pdf:Test using the Mediawiki API and saves it to Test.json (in HTML) |
Update Media | https://cc.vvvvvvaria.org/wiki-to-print/update/Test?full=true | downloads all the text + images from Pdf:Test using the Mediawiki API and saves them to ./static/images/
|
Special namespaces
Wiki-to-print uses the Pdf
and PdfCSS
namespace for these environments, which means that those wiki pages start with Pdf:
.