html2pdf-server
html2pdf-server copied to clipboard
HTTP server that renders HTML to PDF
HTML to PDF rendering server
.. image:: https://img.shields.io/pypi/v/html2pdf-server.svg :target: https://pypi.python.org/pypi/html2pdf-server
.. image:: https://img.shields.io/docker/automated/spoqa/html2pdf-server.svg :target: https://hub.docker.com/r/spoqa/html2pdf-server/
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.:
.. code-block:: http
POST / HTTP/1.1 Content-Type: text/html; charset=utf-8 Accept: application/pdf
HTML to be rendered to PDF
This document will be rendered to PDF.
(Note that you have to set Accept: application/pdf
header.)
And then you will get a PDF document through its response e.g.:
.. code-block:: http
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
.. code-block:: console
$ cat input.html
HTML to be rendered to PDF
This document will be rendered to PDF.
$ curl --header 'Content-Type: text/html' \ --data "`cat input.html`" \ --output output.pdf \ http://localhost:8080/ $ open output.pdf # Use xdg-open on LinuxResult screenshot:
.. image:: screenshot.png :alt: 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.
.. code-block:: console
$ docker run -p 8080:8080 spoqa/html2pdf-server
If you need a pong endpoint for health check specify PONG_PATH
environment
variable:
.. code-block:: console
$ 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
:
.. code-block:: console
$ 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.
__
.. _WeasyPrint: http://weasyprint.org/ __ http://weasyprint.org/docs/install/#by-platform
Running server ''''''''''''''
Use html2pdfd
command:
.. code-block:: console
$ 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
):
.. code-block:: console
$ aiohttp-wsgi-serve html2pdfd:app Serving on http://:::8080 http://0.0.0.0:8080
License
Distributed under AGPLv3_ or later.
.. _AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html
Changelog
Version 1.2.2 '''''''''''''
Released on January 31, 2017.
- Fixed a crash during the server prints the first log.
Version 1.2.1 '''''''''''''
Released on January 31, 2017.
- Docker image now includes built-in fonts for Chinese/Japanese/Korean.
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.
.. _waitress: https://github.com/Pylons/waitress .. _aiohttp-wsgi: https://github.com/etianen/aiohttp-wsgi
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.