reportlab 中文問題

#!/usr/bin/env python
# -*- coding: utf-8 -*-


from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
pdfmetrics.registerFont(UnicodeCIDFont('STSong-Light'))
from reportlab.lib.pagesizes import letter, A4
from reportlab.lib.styles import ParagraphStyle,PropertySet
from reportlab.platypus import Paragraph
from reportlab.lib.enums import *
from reportlab.lib.colors import *
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, SimpleDocTemplate, PageBreak
from reportlab.pdfbase.ttfonts import TTFont

pdfmetrics.registerFont(TTFont('msyh', 'msyh.ttf'))

stylesheet=getSampleStyleSheet()
import copy
c = Canvas('d:/test/temp.pdf', pagesize=letter)
#c.setFont('STSong-Light', 16)
c.setFont('msyh', 16)

y = 700

c.drawString(100, y, u'测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!换行')
c.drawString(100, y+30, 'sdgsldjglsdjglsjdfgljsdfogijseoirjgklsdfgklsdjglkjsdlfjgsldjfglsjdfgkljsdlfkjgsdlkfjglsdkfjglsdjfglksjdflgj')
c.save()

from reportlab.lib import colors
from reportlab.graphics.shapes import *
from reportlab.graphics import renderPDF
from reportlab.graphics import renderPM

d = 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 = 25
pc.y = 50
pc.data = [10, 20,30, 40, 50, 60]
pc.labels = ['一', '二', '三', u'四', u'五', u'六']
for i in range(6):
    pc.slices[i].fontName = 'msyh'



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值