Skip to content

dimw/weasyprint-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Weasyprint Server

HTTP API for Weasyprint to generate PDF and PNG out of HTML (using Flask).

tl;dr

Start the Weasyprint Docker container in a terminal and expose the service on a http://localhost:5000:

$ docker run -p 5000:5000 dimw/weasyprint

For PDF generation run a following curl command, pass HTML a s part of JSON request (html attribute), and define a desired output file (wasyprint-test.pdf):

$ curl \
    -X POST http://localhost:5000/render \
    -H "Content-Type: application/json" \
    -d '{"html": "<html><body><h1>Hi!</h1></body></html>"}' \
    --output weasyprint-test.pdf

To switch to PNG generation the optional outputFormat attribute passed must be "png":

$ curl \
    -X POST http://localhost:5000/render \
    -H "Content-Type: application/json" \
    -d '{"html": "<html><body><h1>Hi!</h1></body></html>", "outputFormat": "png"}' \
    --output weasyprint-test.png

Hint: Please refrain of exposing the built-in Flask development server in the container directly to the public and read how to "Run with a Production Server" in the Flask documentation.

Endpoints

Heath Check

The endpoint might be used for a simple health check of the application.

Request:

GET /healthcheck

Response:

OK

Render

This endpoint is used for generation of PDF or PNG out of HTML.

Request:

POST /render
Content-Type: application/json

{
  "html": "<html>...</html>",
  "outputFormat": "pdf"
}

Response:

<<Binary content (PDF or PNG)>>

How to Develop

For local development and testing of the Weasyprint server Docker Compose can be used. The service can be started in the development (debug) mode and exposed on http://localhost:5000 by running the following command:

$ docker-compose up

The debug mode enables live reload of the endpoints defined in ./app/server.py.

Run Rests

The following command can be used to execute the tests:

$ docker-compose run weasyprint /app/run-tests.sh

Licence

The content of this repository is under the MIT licence.

About

Weasyprint PDF rendering behind a HTTP API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published