首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法从django模板中用pisa生成包含非ascii符号的pdf?

有没有办法从django模板中用pisa生成包含非ascii符号的pdf?
EN

Stack Overflow用户
提问于 2009-10-28 21:26:48
回答 6查看 9.6K关注 0票数 19

我正在尝试使用以下代码片段从模板生成pdf:

代码语言:javascript
复制
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")), result)
    if not pdf.err:
        return http.HttpResponse(result.getvalue(), mimetype='application/pdf')
    except Exception('PDF error')

所有非拉丁符号都不能正确显示,模板和视图使用utf-8编码保存。

我尝试将视图保存为ANSI,然后保存为user unicode(html,"UTF-8"),但它抛出了TypeError。

另外,我认为这可能是因为默认字体不支持utf-8,所以根据比萨的文档,我尝试在样式部分的模板体中设置fontface。

这仍然没有给出结果。

有没有人知道如何解决这个问题?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-24 18:57:56

这对我来说是可行的:

代码语言:javascript
复制
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result, encoding='UTF-8')
票数 30
EN

Stack Overflow用户

发布于 2009-10-28 21:37:25

尝试替换

代码语言:javascript
复制
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result)

使用

代码语言:javascript
复制
pdf = pisa.pisaDocument(StringIO.StringIO(html), result, encoding='UTF-8')

或将此答案签到html to pdf for a Django site?

票数 3
EN

Stack Overflow用户

发布于 2010-01-27 21:11:07

您需要修改您的django模板。在样式表中添加新字体,该字体将链接到包含文档中使用的字符的字体文件。而且该字体文件必须可以从您的服务器访问(在Ubuntu下,您可以在/usr/share/ fonts /truetype/目录中找到带有字体的文件)。例如:

代码语言:javascript
复制
@font-face {
  font-family: DejaMono; 
  src: url(font/DejaVuSansMono.ttf);
}

然后,如果您有下一个HTML代码:

代码语言:javascript
复制
<div>Some non-latin characters</div>

您可以使用以下DejaMono规则以CSS字体显示该文本:

代码语言:javascript
复制
div { font-family: DejaMono; }

当我生成带有西里尔字符的PDF文档时,这对我很有效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1637229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档