问题
用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
网友评论