github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/weasyprint_docker/webapp/app.py (about)

     1  """ Implémente un serveur très simple, qui transforme le contenu
     2  d'une requête POST en pdf. """
     3  
     4  import cairocffi
     5  import flask
     6  import weasyprint
     7  
     8  app = flask.Flask(__name__)
     9  
    10  
    11  @app.route("/", methods=["GET", "POST"])
    12  def index():
    13      if flask.request.method == "GET":
    14          return "Serveur html to pdf"
    15      elif flask.request.method == "POST":
    16          b = flask.request.get_data()
    17          css = weasyprint.CSS(string="""
    18          * {
    19              font-family: Free Sans;
    20          }
    21          """)
    22          return weasyprint.HTML(string=b).write_pdf(presentational_hints=True, stylesheets=[css])
    23  
    24  
    25  @app.route("/version")
    26  def versions():
    27      return f"""
    28      Weasyprint {weasyprint.__version__}
    29      Cairocffi {cairocffi.version}
    30      Cairo (lib) {cairocffi.cairo_version_string()}
    31      """
    32  
    33  
    34  if __name__ == '__main__':
    35      app.run(host='0.0.0.0')