Skip to main content

playwright render html to pdf

Project description

Playwright HTML to PDF

Package version

A modern html to pdf scheme based on playwright, Support more html and css technologies.

Installation

  1. Install pwhtmltopdf
    pip install pwhtmltopdf
    
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pwhtmltopdf-0.2.0.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

pwhtmltopdf-0.2.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

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

Hashes for pwhtmltopdf-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b6e662dc013e04d84c5fc0ca8a0e6b18f9c8bf105d5d420d6f93224e6a0e8178
MD5 86584a7e26e47cda8ccb120548fa23cc
BLAKE2b-256 af4db4106902315a41ccc5e8de13fa8a7781d405158e01b043816c0586364883

See more details on using hashes here.

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

Hashes for pwhtmltopdf-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 673f8dfca7e99a3f4934b3876469d38504ac22c240faaac8893508c7c46f092a
MD5 62a89624461882daff8fa026b7dda0d1
BLAKE2b-256 d146fa41b97cda2bc0fc8723577618a1bb63b83dd436a450b955ba3ef4ef92ef

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page