reportlab 中文问题[已解决]

问题

用reportlab生成pdf文件,碰到中文就会变成黑色的小方块,如下图。


中文变成了黑色方块

解决方法

1.下载中文字体SimSun.ttf
2.把下载下来的字体放到/Library/Python/2.7/site-packages/reportlab/fonts文件夹下。(文件夹根据自己安装的reportlab的路径来)
3.注册字体并使用

from reportlab.platypus import SimpleDocTemplate, Image, Paragraph
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf'))  #注册字体

styles = getSampleStyleSheet()
styles.add(ParagraphStyle(fontName='SimSun', name='Song', leading=20, fontSize=12))  #自己增加新注册的字体

Paragraph(describe, styles['Song']),  #使用新字体
中文显示正常

还有文字换行问题,暂时用了下面的方式

Paragraph(u'<br/>%s<br/>' % describe, styles['Song'])

参考:
https://stackoverflow.com/questions/30328945/setfont-in-reportlab-django

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,171评论 0 8
  • Matplotlib是Python的一个2D绘图库,许多小伙伴第一次使用图表绘制时,会发现中文乱码或者小方块的情况...
    Mr_喵阅读 2,000评论 0 1
  • 有时会把时间消磨在白日梦上。假如没有碰见它们,我是谁?我会在哪里?是壮怀凌霄,独行千山?还是舍我红尘,吟我经文?人...
    道安澜阅读 327评论 0 0
  • 一大早还没有睡醒,爸爸就在敲窗户,叫我们给他开门,我揉着朦胧的睡眼,一看时间,才刚刚5点而已,他就已经早早出门开始...
    笑薇读书阅读 1,229评论 4 12
  • 建立和客户之间的信任吧,这个人与人沟通之间的东西,也不用刻意的去操作,做好自己的工作,用心给客户工作,用心和客户沟...
    f1885e183ef3阅读 469评论 0 0

友情链接更多精彩内容