1

我尝试将 html 转换为 pdf。我使用 xhtml2pdf。我的代码:

# -*- coding: utf-8 -*-
from xhtml2pdf import pisa
sourceHtml = '<html>' \
             '    <head>' \
             '        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">' \
             '    </head>' \
             '    <body>' \
             '        <p>Русский текст</p>' \
             '    </body>' \
             '</html>'

outputFilename = "test.pdf"

def convertHtmlToPdf(sourceHtml, outputFilename):
    resultFile = open(outputFilename, "w+b")
    pisaStatus = pisa.CreatePDF(sourceHtml, dest=resultFile)#, encoding='UTF-8')
    resultFile.close() 
    return pisaStatus.err

if __name__ == "__main__":
    pisa.showLogging()
    convertHtmlToPdf(sourceHtml, outputFilename)

PDF 已创建,但西里尔字符由黑色方块表示。我做错了什么?如何使它正确?

4

1 回答 1

2
# -*- coding: utf-8 -*-
from xhtml2pdf import pisa
sourceHtml = '<html>' \
             '    <head>' \
             '        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">' \
             '        <style type="text/css">' \
             '            @page { size: A4; margin: 1cm; }' \
             '            @font-face { font-family: Arial; src: url(/pathToTTF/arial.ttf); }' \
             '            p { color: red; font-family: Arial; }' \
             '        </style>' \
             '    </head>' \
             '    <body>' \
             '        <p>Русский текст</p>' \
             '    </body>' \
             '</html>'

outputFilename = "test.pdf"

def convertHtmlToPdf(sourceHtml, outputFilename):
    resultFile = open(outputFilename, "w+b")
    pisaStatus = pisa.CreatePDF(sourceHtml, dest=resultFile, encoding='UTF-8')
    resultFile.close() 
    return pisaStatus.err

if __name__ == "__main__":
    pisa.showLogging()
    convertHtmlToPdf(sourceHtml, outputFilename)

有用。我必须将测试样式设置为 html 标签。

于 2015-12-08T15:56:44.383 回答