python生成中文PDF文件的5个方法

  1. ReportLab

    ReportLab是最常用的Python生成PDF的库。ReportLab库支持包括文字、线条、配色、图形、图片等在内的多种元素绘制,但默认不支持中文。

    中文字体支持:简单下载并安装一个开源的中文字体,例如思源黑体或雅黑,然后在ReportLab中使用。

    from reportlab.lib.pagesizes import letter, A4
    from reportlab.pdfbase import pdfmetrics
    from reportlab.pdfbase.ttfonts import TTFont
    from reportlab.pdfgen import canvas
    
    pdfmetrics.registerFont(TTFont('雅黑', 'Yahei Mono.ttf'))
    
    c = canvas.Canvas("Report.pdf", pagesize=letter)
    c.setFont('雅黑', 12)
    c.drawString(30, 750, '你好,这是一个示例文本')
    c.save()
    
    
  2. PDFLaTeX

    PDFLaTeX是一种通过LaTeX语法生成PDF的Python库。

    中文字体支持:在TeXLive中安装xelatex或lualatex,并使用CTeX宏包。

    from pylatex import Document, Section, Subsection, Command
    from pylatex.utils import italic, NoEscape
     
    geometry_options = {"tmargin": "1cm", "lmargin": "10cm"}
    doc = Document(geometry_options=geometry_options)
     
    with doc.create(Section('你好')):
        doc.append('这是一个示例文本')
    
    doc.generate_pdf('hello_world', compiler='xelatex')
    
    
  3. WeasyPrint

    WeasyPrint 是一个将HTML+CSS内容转换为PDF的Python库,非常适合需要首先通过HTML生成内容,然后再转成PDF的情况。

    中文字体支持:在HTML中直接引用例如思源黑体或雅黑这样的开源字体文件,或者在系统中预先下载并安装。

    from weasyprint import HTML
    
    HTML(string="<h1 style='font-family:微软雅黑;'>你好,世界</h1>").write_pdf("hello.pdf")
    
    
  4. Pypdf2

    PyPDF2 是最常用的PDF处理库,它支持PDF的分页、合并、剪辑以及插入图片、文字等内容。但是,需要注意的是插入的文字默认不支持中文。

    中文字体支持:Pypdf2自身不支持中文,需要结合其他支持中文字体的库如pdfminerPyMuPDF处理中文。

  5. PyMuPDF (fitz)

    PyMuPDF 支持PDF以及其他格式的文件读写,除了文字,还支持插入图形、图片等元素。

    中文字体支持:直接使用系统中的已安装字体或者自己下载一个开源中文字体并安装,例如思源黑体或雅黑。

    import fitz
    
    doc = fitz.open()
    page = doc.new_page()
    
    text = "你好,世界"
    page.insert_text((100,100), text, fontname='雅黑')
    
    doc.save("output.pdf")
    
    注意:以上代码的演示环境假设你已经在系统中安装了对应的字体。如果报错,可能是因为字体名称不正确或者未在系统中安装字体。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年11月14日
下一篇 2023年11月14日

相关推荐