import os
from bs4 import BeautifulSoup
from weasyprint import HTML, CSS
def html_to_pdf(html_file, output_pdf):
with open(html_file, 'r', encoding='utf-8') as f:
html_content = f.read()
# Parse HTML
soup = BeautifulSoup(html_content, 'html.parser')
# Get all CSS files
css_files = []
for link in soup.find_all('link', rel='stylesheet'):
css_files.append(link.get('href'))
# Load HTML and CSS
html = HTML(string=html_content)
css_content_list = []
for css_file in css_files:
with open(css_file, 'r', encoding='utf-8') as f:
css_content = f.read()
css_content_list.append(css_content)
# Write PDF
css = CSS(string='\n'.join(css_content_list))
html.write_pdf(output_pdf, stylesheets=[css])
print("PDF created successfully.")
if __name__ == "__main__":
html_file = input("Enter the HTML file name: ")
output_pdf = "output.pdf"
html_to_pdf(html_file, output_pdf)
use this script