Collective PDF rendering environment (work-in-progress) https://cc.vvvvvvaria.org/wiki/Octomode
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.9 KiB

# https://github.com/python-escpos/python-escpos
# https://python-escpos.readthedocs.io/en/latest/
import flask
from flask import request
# import flask_apscheduler
import urllib, json
import os
# Create the application.
APP = flask.Flask(__name__)
# Recurrent actions
# scheduler = flask_apscheduler.APScheduler()
# scheduler.api_enabled = False
# scheduler.init_app(APP)
# scheduler.start()
# @scheduler.task('interval', id='check', minutes=1)
# def action():
# print('Do something recurrent')
pads = [
'post-script.md',
'post-script.css'
]
DIR_PATH = '/home/mb/post-script-interface'
def download(pads):
# using etherpump
for pad in pads:
os.system(f'{ DIR_PATH }/venv/bin/etherpump gettext { pad } > { DIR_PATH }/static/{ pad }')
@APP.route('/', methods=['GET'])
def pad():
return flask.render_template('pad.html')
@APP.route('/html/', methods=['GET', 'POST'])
def html():
# download the main post-script pad + stylesheet pad
download(pads)
# generate html page
os.system(f'pandoc -f markdown -t html -c post-script.css --toc --toc-depth=1 --standalone { DIR_PATH }/static/post-script.md -o { DIR_PATH }/static/post-script.html')
return flask.render_template('html.html')
@APP.route('/pdf/', methods=['GET'])
def pdf():
# download the main post-script pad + stylesheet pad
download(pads)
# generate html page
os.system(f'pandoc -f markdown -t html -c post-script.css --toc --toc-depth=1 --standalone { DIR_PATH }/static/post-script.md -o { DIR_PATH }/static/post-script.html')
# generate pdf
os.system(f'{ DIR_PATH }/venv/bin/weasyprint -s { DIR_PATH }/static/post-script.css { DIR_PATH }/static/post-script.html { DIR_PATH }/static/post-script.pdf')
return flask.render_template('pdf.html')
@APP.route('/stylesheet/', methods=['GET'])
def stylesheet():
return flask.render_template('stylesheet.html')
if __name__ == '__main__':
APP.debug=True
APP.run(port=5577)