我有模板:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>PRINT FILE</title>
    </head>
    <body>
        <center>ąśżźćę</center>
    </body>
</html>

并查看:

@login_required
def print_to_pdf(request):
    data = dict()
    return render_to_pdf('print.html', { 'pagesize':'A4', 'pdf': '1', 'data': data })

和render_to_pdf:

def render_to_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')), result, link_callback=fetch_resources, encoding='utf-8')
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
    return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))

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

但是pdf没有特殊字符。 我也尝试过字体。 怎么做?

#1楼 票数:1 已采纳

您可以使用wkhtmltopdf从HTML生成pdf文件,它支持Unicode字符

#2楼 票数:0

我编写(修改: http : //boris.kodmasin.net/python : djangoandwkhtmltopdf )此函数:

def get_pdf(template_src, context_dict):
    template = get_template(template_src)
    context = Context(context_dict)
    html  = template.render(context)

    import subprocess
    wkhtml2pdf = subprocess.Popen((settings.WKHTML2PDF_COMMAND,
                                   "--footer-right",
                                   "[page]/[toPage]",
                                   "--print-media-type",
                                   "--encoding",
                                   "UTF-8",
                                   "-",
                                   "-"),
                                  stdin=subprocess.PIPE,
                                  stdout=subprocess.PIPE)
    wkdata = wkhtml2pdf.communicate(html.encode('utf8'))
    pdf = wkdata[0];

    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=printfile.pdf'
    response.write(pdf)
    return response

并查看:

@login_required
def print_to_pdf(request):
    data = dict()
    return get_pdf('print.html', { 'data': data })

在settings.py中,您必须设置WKHTML2PDF_COMMAND变量(程序名称和路径)。

wkhtml在这里: http : //code.google.com/p/wkhtmltopdf/downloads/list

#3楼 票数:0

解决方案之一是使用code2000字体

这将适用于所有unicode字符。

  ask by Nips translate from so

未解决问题?本站智能推荐:

2回复

不能在django模板中使用unicode字符串

我在django模板中使用了“BỘMÔNTOÁN”字符串,它引发了错误“'utf8'编解码器无法解码位置569中的字节0xd4:无效的连续字节” 。 但是当我使用“BO MON TOAN”字符串时,它不会引起错误。 所以,我在模板中使用越南语,这是我的代码: 这是我的项目中的错误:
3回复

如何使用Django从模板生成pdf?

我想从我的模板中生成一个PDF,其中包含通过一些计算和操作生成的数据。
2回复

如何在Django模板中使用“{”字符

我知道我们使用{{}}个字符作为变量,但是我想显示{}个字符之间的数据 我想像这样展示11月{12}。 所以我所做的是: 但是我遇到了这样的错误: 无法解析其余部分:“ {month.count”中的“ {month.count” 如何在模板中使用{字符?
1回复

UnicodeDecodeError:Django使用weasyprint生成PDF

我正在用Django制作应用程序。 我想浏览选择链接时生成pdf。 所以我用weasyprint模块转换我的pdf。 我导入weasyprint模块。 但是当我运行该应用程序时,我发现了一些错误。 这是views.py文件 这是HTML文件。 我想创建这个html文件的pdf。
1回复

如何在Django模板中将unicode更改为字符串

我收到NoReverseMatch的原因是我得到的是Unicode而不是字符串,是否可以在模板中将Unicode转换为字符串? 这是我的普通超链接 如何在超链接内执行lst.user.username.encode(“ utf-8”)? 编辑: 我在网址中更改了正则表达式,现在可
2回复

如何在django中为生成的报告pdf提供下载链接

我已经通过以下views.py的代码从数据库生成了PDF报告。 该PDF文件正在保存在项目文件夹中,我不需要它,我希望它提示用户将文件保存在何处。 我想在客户端的浏览器中为此PDF提供下载选项。 如何为该文件提供HTML格式的“另存为”功能,以便客户端可以下载PDF格式的文件
1回复

使用Django1.9生成PDF

我想使用在Django 1.9 docs上找到的以下方法生成PDF: https : //docs.djangoproject.com/ja/1.9/howto/outputting-pdf 。 这是我的网址格式(我不需要任何特殊的东西,只需要这样一个不同的网址名称 我正在尝试使用get
1回复

如何在Django中使用RESTfulAPI

我一直在尝试将使用 Django-rest 框架开发的 REST API 与另一个 Django Web 应用程序集成。 但坚持将 JSON 数据传递到前端。 我将不胜感激任何帮助。 这是我各自的文件。 我在 views.py 文件上尝试了两种不同的 url,一种是 AWS API Gateway