Yes, Headless Chromium can be used to render PDFs of web pages. Headless Chromium is a version of the Chrome browser that can be run without a user interface, which is particularly useful for automated tasks. It can be controlled programmatically via different languages, with Puppeteer (a Node library) being one of the popular choices for JavaScript, and Pyppeteer or Selenium with ChromeDriver for Python.
Below are examples of how to render a PDF of a web page using Headless Chromium in both Python and JavaScript.
Python Example with Pyppeteer
Pyppeteer is a Python port of Puppeteer. It can be used to control Headless Chromium through a high-level API. Here's an example of how to use it to create a PDF:
import asyncio
from pyppeteer import launch
async def print_pdf(url, output_path):
browser = await launch(headless=True)
page = await browser.newPage()
await page.goto(url)
await page.pdf({'path': output_path})
await browser.close()
url = 'https://example.com'
output_path = 'output.pdf'
asyncio.get_event_loop().run_until_complete(print_pdf(url, output_path))
Before running the above example, ensure you have Pyppeteer installed:
pip install pyppeteer
JavaScript Example with Puppeteer
Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Here's an example of how to use Puppeteer to create a PDF:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', {waitUntil: 'networkidle0'});
await page.pdf({path: 'output.pdf', format: 'A4'});
await browser.close();
})();
Before running the JavaScript example, you need to have Node.js installed, and then you can install Puppeteer using npm:
npm install puppeteer
Command Line with Chrome/Chromium Executable
You can also use the Chrome or Chromium executable directly from the command line to generate a PDF without writing a script:
chrome --headless --disable-gpu --print-to-pdf=output.pdf https://example.com
Replace chrome
with the appropriate command for your system (chromium
, google-chrome
, or the full path to the executable) and specify the correct URL instead of https://example.com
.
Remember that the command line flags and capabilities may differ slightly depending on the version of Chrome or Chromium you are using, and whether it is on macOS, Windows, or Linux.