django reportlab 中文问题

茶客大人 发布于 2016/10/27 16:43
阅读 323
收藏 0

@x565178035 你好,想跟你请教个问题:

    看到你写的一篇技术博客,是关于reportlab导出PDF的

    我是用django去写的

    但是我怎么都输出不了中文

from reportlab.pdfgen import canvas def ToPdf(request): from reportlab.pdfbase import pdfmetrics,ttfonts
    path ="D:\\Program Files\\Python\\Lib\\site-packages\\reportlab\\fonts"  pdfmetrics.registerFont(ttfonts.TTFont('simsun',os.path.join(path, 'simsun.ttc'))) response=HttpResponse(content_type='application/pdf') from io import BytesIO
    str = BytesIO()
    p = canvas.Canvas(str)
    interface_list=Intf.objects.filter(Q(upper=10000)|Q(upper=50000)) for intf in interface_list:
        p.drawString(50,800,intf.interface_sn)
        p.drawString(100,800,intf.interface_name)
        p.drawString(50,780,"request method:")
        p.drawString(200,780,intf.request_method)
        p.drawString(50,760,"request_link:")
        p.drawString(50,740,intf.request_link)
        p.showPage()
        p.save()

    pdf = str.getvalue()
    str.close() 
response.write(pdf) 
return response

加载中
0
ohailong
ohailong
重写reportlab里的warp方法
0
茶客大人
茶客大人

引用来自“ohailong”的评论

重写reportlab里的warp方法
rl_config.warnOnMissingFontGlyphs = 0 path ="D:\\Program Files\\Python\\Lib\\site-packages\\reportlab\\fonts" pdfmetrics.registerFont(TTFont('hei',os.path.join(path, 'simhei.ttf')))

addMapping('cjk',0,0,'hei')

response = HttpResponse(content_type='application/pdf') #response['Content-Disposition'] = 'attachment; filename="大数据交易中心接口文档.pdf"'  temp = StringIO()
p = canvas.Canvas(temp) interface_list=findInterfaceByAll() for interface in interface_list:
    p.setFont('hei',16)

p.leading = 20

我后来用了这样的方式也可以展示中文了,现在还有一些样式方面的问题在处理

后面的一些换行之类的,这块先放一放,还有其他东西要学习

第一次写程序,基础不扎实,很多都不会。。这块对我来说似乎有点难了

茶客大人
茶客大人
回复 @ohailong : 这个不行,不能用,试过了,效果并不好,要自己编程,还要查数据库的东西,这个真的不好用。
茶客大人
茶客大人
回复 @ohailong : 之前尝试过,好像最终没有决定用那个,好像没有自己需求能得到的方法
ohailong
ohailong
你可以试试xhtml2pdf这个库,是通过html转pdf,在解决了中文问题后会不错的
返回顶部
顶部