Simple python wrapper to convert HTML to PDF with headless Chrome via selenium.
pip install pyhtml2pdf
- Selenium Chrome Webdriver (If Chrome is installed on the machine you won't need to install the chrome driver)
- Ghostscript
Use with website url
from pyhtml2pdf import converter
converter.convert('https://pypi.org', 'sample.pdf')
Use with html file from local machine
import os
from pyhtml2pdf import converter
path = os.path.abspath('index.html')
converter.convert(f'file:///{path}', 'sample.pdf')
Some JS objects may have animations or take a some time to render. You can set a time out in order to help render those objects. You can set timeout in seconds
converter.convert(source, target, timeout=2)
Compress the converted PDF
Some PDFs may be oversized. So there is a built in PDF compression feature.
The power of the compression,
- 0: default
- 1: prepress
- 2: printer
- 3: ebook
- 4: screen
converter.convert(source, target, compress=True, power=0)
You can use print options mentioned here
converter.convert( f"file:///{path}", f"sample.pdf", print_options={"scale": 0.95} )
Use it to compress a PDF file from local machine
import os
from pyhtml2pdf import compressor
compressor.compress('sample.pdf', 'compressed_sample.pdf')
Inspired the works from,