January 18, 2023
Как преобразовать веб-страницу в PDF с помощью Python
1.Можно также использовать pdfkit:
import pdfkit pdfkit.from_url('http://google.com', 'out.pdf')
Install
MacOS: brew install Caskroom/cask/wkhtmltopdf
Debian/Ubuntu: apt-get install wkhtmltopdf
Windows: choco install wkhtmltopdf
pip install weasyprint # No longer supports Python 2.x. python >>> import weasyprint >>> pdf = weasyprint.HTML('http://www.google.com').write_pdf() >>> len(pdf) 92059 >>> open('google.pdf', 'wb').write(pdf)
Если вы используете selenium и chromium, вам не нужно самостоятельно управлять cookies, и вы можете генерировать pdf-страницы из функции chromium print as pdf.
Для реализации этого проекта вы можете обратиться к этому проекту.
https://github.com/maxvst/python-selenium-chrome-html-to-pdf-converter
модифицированная база > https://github.com/maxvst/python-selenium-chrome-html-to-pdf-converter/blob/master/sample/html_to_pdf_converter.py
import sys import json, base64 def send_devtools(driver, cmd, params={}): resource = "/session/%s/chromium/send_command_and_get_result" % driver.session_id url = driver.command_executor._url + resource body = json.dumps({'cmd': cmd, 'params': params}) response = driver.command_executor._request('POST', url, body) return response.get('value') def get_pdf_from_html(driver, url, print_options={}, output_file_path="example.pdf"): driver.get(url) calculated_print_options = { 'landscape': False, 'displayHeaderFooter': False, 'printBackground': True, 'preferCSSPageSize': True, } calculated_print_options.update(print_options) result = send_devtools(driver, "Page.printToPDF", calculated_print_options) data = base64.b64decode(result['data']) with open(output_file_path, "wb") as f: f.write(data) # example from selenium import webdriver from selenium.webdriver.chrome.options import Options url = "https://stackoverflow.com/questions/23359083/how-to-convert-webpage-into-pdf-by-using-python#" webdriver_options = Options() webdriver_options.add_argument("--no-sandbox") webdriver_options.add_argument('--headless') webdriver_options.add_argument('--disable-gpu') driver = webdriver.Chrome(chromedriver, options=webdriver_options) get_pdf_from_html(driver, url) driver.quit()