playwright render html to pdf
Project description
Playwright HTML to PDF
A modern html to pdf scheme based on playwright, Support more html and css technologies.
Installation
- Install pwhtmltopdf
pip install pwhtmltopdf
- Install chromium
playwright install chromium
Usage
Simple example:
import asyncio
import pathlib
from pwhtmltopdf import HtmlToPdf
async def this_from_url():
async with HtmlToPdf() as htp:
await htp.from_url("https://playwright.dev/", "from_url.pdf")
async def this_from_file():
async with HtmlToPdf() as htp:
# Make sure the current directory has a test.html file
await htp.from_file("test.html", "from_file.pdf")
async def this_from_string():
async with HtmlToPdf() as htp:
content = pathlib.Path("test.html").read_text()
await htp.from_string(content, "from_string.pdf")
if __name__ == '__main__':
asyncio.run(this_from_url())
Render fill:
When local_render is equal to true, jinja2 template syntax will be used to render filled html,
If html needs to use local static resources, you need to set static_root,
If you want to render filled data dynamically to generate pdf(Based on jinja2), try the following method👇
import asyncio
import pathlib
from pwhtmltopdf import HtmlToPdf
async def this_render_from_url():
file_path = pathlib.Path("tests/images.html").absolute()
async with HtmlToPdf(static_root="tests/static",
wait_until="load", pdf_kwargs={"print_background": True}) as htp:
await htp.from_url(
f"file://{file_path}",
"tests/effect/from_url/local_url_render.pdf",
local_render=True,
char_code=123,
)
async def this_render_from_file():
htp = HtmlToPdf(static_root="tests/static")
await htp.from_file(
"tests/images.html", "tests/effect/from_file/images_render.pdf",
local_render=True, char_code=123
)
await htp.close()
async def this_render_from_string():
content = pathlib.Path("tests/images.html").read_text()
htp = HtmlToPdf(static_root="tests/static")
await htp.from_string(content, "tests/effect/from_string/images_render.pdf",
local_render=True, char_code=123)
await htp.close()
if __name__ == '__main__':
asyncio.run(this_render_from_url())
Advanced usage
Support playwright new_page and page.pdf all parameters passthrough.
import asyncio
from pwhtmltopdf import HtmlToPdf
async def example():
async with HtmlToPdf(pdf_kwargs={"print_background": True},
page_kwargs={"locale": "de-DE", "is_mobile": True}) as htp:
await htp.from_url("https://playwright.dev/", "from_url.pdf")
if __name__ == '__main__':
asyncio.run(example())
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pwhtmltopdf-0.2.0.tar.gz.
File metadata
- Download URL: pwhtmltopdf-0.2.0.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.10.4 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6e662dc013e04d84c5fc0ca8a0e6b18f9c8bf105d5d420d6f93224e6a0e8178
|
|
| MD5 |
86584a7e26e47cda8ccb120548fa23cc
|
|
| BLAKE2b-256 |
af4db4106902315a41ccc5e8de13fa8a7781d405158e01b043816c0586364883
|
File details
Details for the file pwhtmltopdf-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pwhtmltopdf-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.10.4 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
673f8dfca7e99a3f4934b3876469d38504ac22c240faaac8893508c7c46f092a
|
|
| MD5 |
62a89624461882daff8fa026b7dda0d1
|
|
| BLAKE2b-256 |
d146fa41b97cda2bc0fc8723577618a1bb63b83dd436a450b955ba3ef4ef92ef
|