diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..bb3ec5f
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1 @@
+include README.md
diff --git a/README.md b/README.md
index 59340cc..d63fcdc 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,11 @@
# html_to_pdf
+### API
+
+```python
+import html_to_pdf as h2p
+
+h2p.render_from_url("http://example.com", "out.pdf")
+h2p.render_from_file("local_file.html", "out2.pdf")
+h2p.render_from_string("
Works
", "out3.pdf")
+```
diff --git a/html_to_pdf/__init__.py b/html_to_pdf/__init__.py
new file mode 100644
index 0000000..bb37bc1
--- /dev/null
+++ b/html_to_pdf/__init__.py
@@ -0,0 +1 @@
+from .render import render_from_url, render_from_string, render_from_file
diff --git a/html_to_pdf/render.py b/html_to_pdf/render.py
new file mode 100644
index 0000000..aaf12f6
--- /dev/null
+++ b/html_to_pdf/render.py
@@ -0,0 +1,41 @@
+import os
+import asyncio
+import tempfile
+from pyppeteer import launch
+
+
+def sync_wait(future):
+ loop = asyncio.get_event_loop()
+ return loop.run_until_complete(future)
+
+
+def render_from_url(url, out=None):
+ if out is None:
+ out = "out.pdf"
+ out = os.path.join(os.getcwd(), out)
+
+ browser = sync_wait(launch())
+ page = sync_wait(browser.newPage())
+ sync_wait(page.goto(url))
+ sync_wait(page.pdf({
+ "displayHeaderFooter":False,
+ "printBackground": True,
+ "path": out,
+ "preferCSSPageSize": True,
+ }))
+ sync_wait(browser.close())
+
+
+def render_from_file(s, out=None):
+ if s[0] != "/":
+ s = os.path.join(os.getcwd(), s)
+ f = 'file://' + s
+ render_from_url(f, out=out)
+
+
+def render_from_string(s, out=None):
+ temp = tempfile.NamedTemporaryFile(suffix=".html", mode="w")
+ temp.write(s)
+ temp.flush()
+ render_from_file(temp.name, out=out)
+ temp.close()
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..ef6e8f1
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,20 @@
+import setuptools
+
+with open("README.md", "r") as fh:
+ long_description = fh.read()
+
+setuptools.setup(
+ name="html_to_pdf",
+ version="0.2",
+ install_requires=[
+ 'pyppeteer'
+ ],
+ author="Ugo Finnendahl",
+ author_email="ugo@finnendahl.de",
+ description="Convert html to pdf",
+ long_description=long_description,
+ long_description_content_type="text/markdown",
+ url="git.finnendahl.de",
+ packages=setuptools.find_packages(),
+ include_package_data=True
+)