编程语言
首页 > 编程语言> > python – 使用xhtml2pdf将unicode模板转换为pdf的麻烦

python – 使用xhtml2pdf将unicode模板转换为pdf的麻烦

作者:互联网

我在我的html页面中使用了unicode,它在html页面中正确显示.但是在使用xhtml2pdf将其转换为html时,它会在unicodes中生成黑色实心方框.是否有UTF-8设置以外的unicode设置.我不认为它的unicode问题.

# convert HTML to PDF
pisaStatus = pisa.CreatePDF(
        StringIO(sourceHtml.encode('utf-8')),                 
        dest=resultFile)

完整的py代码:

# -*- coding: utf-8 -*-

from xhtml2pdf import pisa
from StringIO import StringIO

source = """<html>
            <style>
                @font-face {
                font-family: Preeti;
                src: url("preeti.ttf");
                }

                body {
                font-family: Preeti;
                }
            </style>
            <body>
                This is a test <br/>
                       सरल
            </body>
        </html>"""

# Utility function
def convertHtmlToPdf(source):
    # open output file for writing (truncated binary)

    pdf = StringIO()
    pisaStatus = pisa.CreatePDF(StringIO(source.encode('utf-8')), pdf)

    # return True on success and False on errors
    print "Success: ", pisaStatus.err
    return pdf

# Main program
if __name__=="__main__":
    print pisa.showLogging()
    pdf = convertHtmlToPdf(source)
    fd = open("test.pdf", "w+b")
    fd.write(pdf.getvalue())
    fd.close()

我甚至需要包括font-face?

解决方法:

它部分解决了.提供字体的绝对路径,即

    <style>
        @font-face {
        font-family: Preeti;
        src: url("c:/static/fonts/preeti.ttf");
        }

        body {
        font-family: Preeti;
        }
    </style>  

现在又出现了另一个问题.我有混合文本,部分在unicode和部分正常字体(我想我应该说它是普通字体:D),因为字体已被覆盖,现在正常的字体是在矩形框中.在这种情况下一个空盒子.

标签:python,unicode,flask,xhtml2pdf
来源: https://codeday.me/bug/20190831/1776887.html