Metadata-Version: 2.0
Name: html2pdf-server
Version: 1.2.1
Summary: HTTP server that renders HTML to PDF
Home-page: https://github.com/spoqa/html2pdf-server
Author: Spoqa
Author-email: dev@spoqa.com
License: AGPLv3 or later
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Topic :: Printing
Requires-Dist: Wand (>=0.4.2)
Requires-Dist: WeasyPrint (>=0.22)
Requires-Dist: Werkzeug (>=0.9)
Requires-Dist: aiohttp (<1.1.0,>=1.0.5)
Requires-Dist: aiohttp-wsgi (==0.6.3)

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

   <!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.:

.. 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
   <!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:

.. image:: https://github.com/spoqa/html2pdf-server/raw/master/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.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.


