Skip to content

The best WeasyPrint container that exists on the web. 🔥 🔥

License

Notifications You must be signed in to change notification settings

knovator/weasyprint-rest

 
 

Repository files navigation

Usage

First, you can start the container using the following command:

docker run -p 5000:5000 -v /path/to/local/templates:/data/templates -d xpublisher/weasyprint-rest:latest

Then you can use the following command to generate the report.pdf from the official WeasyPrint sample. You can find the files in tests/resources/report.

curl  \
-F 'html=@report.html' \
-F 'style=@report.css' \
-F "asset[]=@FiraSans-Bold.otf" \
-F "asset[]=@FiraSans-Italic.otf" \
-F "asset[]=@FiraSans-LightItalic.otf" \
-F "asset[]=@FiraSans-Light.otf" \
-F "asset[]=@FiraSans-Regular.otf" \
-F "asset[]=@heading.svg" \
-F "asset[]=@internal-links.svg" \
-F "asset[]=@multi-columns.svg" \
-F "asset[]=@report-cover.jpg" \
-F "asset[]=@style.svg" \
-F "asset[]=@table-content.svg" \
-F "asset[]=@thumbnail.png" \
-F "mode=png" \
http://localhost:5000/api/v1.0/print --output report.png

Configuration

All configurations are set via environment variables.

Name Default Description
API_KEY "" Sets an API key that protects the /api/v1.0/print service from unauthorized access. The key is later compared with the header X_API_KEY. If no API_KEY is set, anyone can access the application.
BLOCKED_URL_PATTERN "^.*$" Pattern to block certain URLs. These URLs are later not allowed within resources of the print service. These resources will be ignored.
ALLOWED_URL_PATTERN "^$" Pattern to allow certain URLs. These URLs are later allowed within resources of the print service.
MAX_UPLOAD_SIZE 16777216 Maximum size of the upload. Default is 16MB

Services

Health

Service to check if the service is still working properly.

GET /api/v1.0/health

Parameters

Parameter Type Description
ping string Optional. Returns the ping in the field pong

Response

{
  "status"    : "OK",
  "timestamp" : number,
  "pong"      : string?
}

The status does always contain "OK".

The timestamp does contain the current timestamp of the server in milliseconds.

The pong is optional and will only be sent if the ping parameter was passed. It contains the same value that ping had.

Print

Service to print a pdf or png

POST /api/v1.0/print

Parameters

Parameter Type
html file or string Required. HTML file to convert.
mode "pdf" or "png" Optional. Controls whether a PDF or PNG is rendered. The default is pdf.
template string Optional. Template name for the use of predefined templates.
style file or string Optional. Style to apply to the html. This should only be used if the CSS is not referenced in the html. If it is included via HTML link, it should be passed as asset. Only either style or style[] can be used.
style[] file or file[] Optional. Multiple styles to apply to the html. This should only be used if the CSS is not referenced in the html. If it is included via HTML link, it should be passed as asset. Only either style or style[] can be used.
asset[] file or file[] Optional. Assets which are referenced in the html. This can be images, CSS or fonts. The name must be 1:1 the same as used in the files.

Response

Raw output stream of with Content-Type of application/pdf or image/png. For pdf also the header Content-Disposition = 'inline;filename={HTML_FILE_NAME}.pdf will be set.

About

The best WeasyPrint container that exists on the web. 🔥 🔥

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 45.9%
  • HTML 21.8%
  • CSS 18.0%
  • Makefile 9.3%
  • Dockerfile 4.5%
  • Shell 0.5%