python四种方式实现html文件转word、pdf文档或图片

python四种方式实现html文件转word、pdf文档或图片

ai大模型可以生成各种各样的设计页面,包括海报、ui界面、简历等你能看到的一切设计,但是没办法直接生成pdf、word等电子文档,如果我们可以将html代码转成word文档,那岂不是ai就能生成各种精美好看大气的文档了。

python有四种方式可以将htm代码文件转换成word文档图片等形式,最后一种最好,与html显示效果一致。


1、BeautifulSoup++Document

from bs4 import BeautifulSoup
from docx import Document
import sys

def html_to_word(html_file: str, output_file: str):
    """将 HTML 文件转换为 Word 文档"""
    # 读取 HTML 文件
    with open(html_file, 'r', encoding='utf-8') as f:
        html_content = f.read()

    soup = BeautifulSoup(html_content, 'html.parser')

    # 创建一个空白的 Word 文档
    doc = Document()

    # 如果有 <title> 标签,则添加标题
    if soup.title:
        doc.add_heading(soup.title.string, level=1)

    # 将 <h1> ~ <h6> 标签内容添加为标题
    for tag_name in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:
        for tag in soup.find_all(tag_name):
            # 去掉前后空白,并以标签名称决定标题级别
            text = tag.get_text(strip=True)
            if text:
                level = int(tag_name[1])
                doc.add_heading(text, level=level)

    # 将 <p> 和 <div> 标签内容添加为段落
    for tag in soup.find_all(['p', 'div']):
        text = tag.get_text(strip=True)
        if text:
            doc.add_paragraph(text)

    # 保存 Word 文档
    doc.save(output_file)
    print(f"转换成功,文件保存为:{output_file}")

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("用法: python htmltoword.py input.html output.docx")
        sys.exit(1)
    html_to_word(sys.argv[1], sys.argv[2])

这种方式能将html转成word,但是样式跟原来的html有差异

2、weasyprint

from selenium import webdriver
from docx import Document
from weasyprint import HTML
import pdfkit
import imgkit
import os

class HTMLConverter:
    def __init__(self):
        """初始化转换器"""
        # Chrome headless模式配置
        self.chrome_options = webdriver.ChromeOptions()
        self.chrome_options.add_argument('--headless')
        self.chrome_options.add_argument('--disable-gpu')

    def to_image(self, html_path: str, output_path: str):
        """将HTML转换为图片
        
        Args:
            html_path: HTML文件路径
            output_path: 输出图片路径(.png/.jpg)
        """
        # 使用imgkit
        options = {
            'quality': 100,
            'form...

点击查看剩余70%

{{collectdata}}

网友评论0