HTTP server that renders HTML to PDF
Project description
The name says it all. You request a POST with an HTML, and then you will get the response with the rendered PDF.
HTTP API
Send POST / request with Content-Type: text/html e.g.:
POST / HTTP/1.1
Content-Type: text/html; charset=utf-8
Accept: application/pdf
<!DOCTYPE>
<html>
<body>
<h1>HTML to be rendered to PDF</h1>
<p>This document will be rendered to PDF.</p>
</body>
</html>
(Note that you have to set Accept: application/pdf header.)
And then you will get a PDF document through its response e.g.:
HTTP/1.1 200 OK
Content-Type: application/pdf
Server: html2pdf-server
(...omitted...)
Available mime types
You can set Accept header to various mime types.
- application/pdf
respond a PDF document. this type is the default type.
- image/png
respond a PNG image.
- image/jpeg
respond a JPEG image.
Session in curl
$ cat input.html
<!DOCTYPE>
<html>
<body>
<h1>HTML to be rendered to PDF</h1>
<p>This document will be rendered to PDF.</p>
</body>
</html>
$ curl --header 'Content-Type: text/html' \
--data "`cat input.html`" \
--output output.pdf \
http://localhost:8080/
$ open output.pdf # Use xdg-open on Linux
Result screenshot:
Getting started using Docker
Due to its non-Python dependencies the easist way to use this is using Docker. The official Docker image exposes 8080 port for HTTP server.
$ docker run -p 8080:8080 spoqa/html2pdf-server
If you need a pong endpoint for health check specify PONG_PATH environment variable:
$ docker run -e PONG_PATH=/ping/ -p 8080:8080 spoqa/html2pdf-server
Serving on http://0.0.0.0:8080
Getting started without Docker
Installation
You can install it using pip:
$ pip install --user git+git://github.com/spoqa/html2pdf-server.git
Note that WeasyPrint has several dependencies that need to be installed using system package managers e.g. APT, Homebrew. Read the docs.
Running server
Use html2pdfd command:
$ html2pdfd --port 8080
Serving on http://0.0.0.0:8080
Or you can use your preferred WSGI server as well (WSGI endpoint is html2pdfd:app):
$ aiohttp-wsgi-serve html2pdfd:app
Serving on http://:::8080 http://0.0.0.0:8080
License
Distributed under AGPLv3 or later.
Changelog
Version 1.2.0
Released on January 27, 2017.
The prerequisite Python version became 3.5 or higher. Python 3.4 or lower are no more supported.
Replaced waitress with aiohttp-wsgi.
The Docker image now uses Python 3.5 instead of 3.4.
Version 1.1.0
Released on January 26, 2017.
Added an option to enable pong endpoint for health check.
PONG_PATH environment variable for Docker.
--pong-path option for CLI.
Fixed a bug that --help option crashed while it’s trying to render default values.
Version 1.0.0
Initial release. Released on January 25, 2017.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file html2pdf-server-1.2.0.tar.gz
.
File metadata
- Download URL: html2pdf-server-1.2.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d3973021e33c67b066e15ffd3329556a3780f5e7179c258a793097dac86e42b |
|
MD5 | 8fef551396ca8fcf6ed1a791b4600783 |
|
BLAKE2b-256 | 63924d7d4f1a0a0287a7a40617e59ba4a0e1ff3a0c138917d9a50b350be29a76 |
File details
Details for the file html2pdf_server-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: html2pdf_server-1.2.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6714e97d9c0c470be9479505cc4d35e86c7cbd9f01c4ebd75ecae2530645d5e1 |
|
MD5 | a78df8d1c2871aa2447a310f48022918 |
|
BLAKE2b-256 | 6c5bb663f99358dbe756e33eb9a400ad4a2f1b4f42b562aa18017e6a592895ae |