reportlab 中文問題

来源:互联网 发布:手机淘宝5.4.3 编辑:程序博客网 时间:2024/04/30 04:54
#!/usr/bin/env python# -*- coding: utf-8 -*-from reportlab.pdfgen.canvas import Canvasfrom reportlab.pdfbase import pdfmetricsfrom reportlab.pdfbase.cidfonts import UnicodeCIDFontpdfmetrics.registerFont(UnicodeCIDFont('STSong-Light'))from reportlab.lib.pagesizes import letter, A4from reportlab.lib.styles import ParagraphStyle,PropertySetfrom reportlab.platypus import Paragraphfrom reportlab.lib.enums import *from reportlab.lib.colors import *from reportlab.lib.styles import getSampleStyleSheetfrom reportlab.platypus import Paragraph, SimpleDocTemplate, PageBreakfrom reportlab.pdfbase.ttfonts import TTFontpdfmetrics.registerFont(TTFont('msyh', 'msyh.ttf'))stylesheet=getSampleStyleSheet()import copyc = Canvas('d:/test/temp.pdf', pagesize=letter)#c.setFont('STSong-Light', 16)c.setFont('msyh', 16)y = 700c.drawString(100, y, u'测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!换行')c.drawString(100, y+30, 'sdgsldjglsdjglsjdfgljsdfogijseoirjgklsdfgklsdjglkjsdlfjgsldjfglsjdfgkljsdlfkjgsdlkfjglsdkfjglsdjfglksjdflgj')c.save()from reportlab.lib import colorsfrom reportlab.graphics.shapes import *from reportlab.graphics import renderPDFfrom reportlab.graphics import renderPMd = Drawing(400, 200)d.add(Rect(50, 50, 300, 100, fillColor=colors.yellow))#d.add(String(150,100, '您好', fontSize=18, fontName='STSong-Light', fillColor=colors.red))d.add(String(150,100, '您好', fontSize=18, fontName='msyh', fillColor=colors.red))#renderPDF.drawToFile(d, 'd:/test/example1.pdf', 'My First Drawing')renderPM.drawToFile(d, 'd:/test/example1.png', 'PNG')print "ok"

中文問題主要是使用中文字體

1、使用cid字體

2、使用ttf字體,轉PNG圖片隻能使用ttf字體不能使用cid字體


pie有中文的話也要設字體

d = Drawing(400, 400)d.add(String(100, 175, "Test", textAnchor="middle"))pc = Pie()pc.x = 25pc.y = 50pc.data = [10, 20,30, 40, 50, 60]pc.labels = ['一', '二', '三', u'四', u'五', u'六']for i in range(6):    pc.slices[i].fontName = 'msyh'



原创粉丝点击