2

我正在尝试使用 django 中的 Pisa 库将我的 html 页面导出为 pdf,这是我用来执行此操作的代码:

def fetch_resources(uri, rel):
    path = os.path.join(settings.STATIC_ROOT, uri.replace(settings.STATIC_URL, ""))
    return path

def write_pdf(template_src, context_dict):
    template = get_template(template_src)
    context = Context(context_dict)
    html = template.render(context)
    result = StringIO.StringIO()
    pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")),dest = result, encoding='UTF-8', link_callback=fetch_resources)
    if not pdf.err:
        return http.HttpResponse(result.getvalue(), mimetype='application/pdf')
    return http.HttpResponse('Sorry, no pdf! %s' % cgi.escape(html))

def article(request):
    return write_pdf('Storehouse/ReceiptPrint-v2.html',{'pagesize':'A4'})

但是当我得到 pdf 输出时,我有两个问题:首先,它没有渲染我的 css 文件,并且我的所有样式都在 pdf 中丢失(我的 css 文件很大,所以请不要建议将样式放在html文件),其次它不理解指定的unicode(UTF-8),我的html页面是波斯语,但是当它变成pdf时,它变成了一些无意义的方块。

任何帮助将不胜感激!

4

1 回答 1

1

Pisa 的转换器使用 ReportLab 工具包,它很难直接开箱即用地呈现波斯语和其他阿拉伯字符。我发现使用 DejaVuSansMono.ttf 字体可以正确渲染字符。

于 2013-08-18T15:25:25.707 回答