用reportlab 生成中文pdf时,如何实现中文的自动换行?

356 views
Skip to first unread message

He Jibo

unread,
Jul 8, 2010, 12:58:33 PM7/8/10
to python-chinese

我现在正在用reportlab写个东西的。看到Zoom和limodou前辈也遇到了这个问题。 大家是怎么解决中文换行的问题呀?谢谢!

http://www.zeuux.org/pipermail/zeuux-python/2004-August/003822.html


On Feb 9, 12:09 pm, "Zoom.Quiet" <zoom.qu...@gmail.com> wrote:
> 2010/2/10 lin li <linla...@gmail.com>:> 你好,请问,reportlab的中文换行问题,还有那个进度条的问题,谢谢。
>
> 去邮件列表交流使所有行者受益 ;-)
> 转发你的问题到 CPyUG 列表了,
> 能够进一步说明你参考了哪一PDF?
>
> > 中文换行,看了你的PDF,终于弄好了,就是最新版本的REPORTLAB,就CJK就能换行了,但是有个BUG,
> > 就是如果设置了一个段落的首行缩进两个字,那么后面的每行的末尾都有空白,估计是行的长度计算错误,能否看看?
>
> > 还有就是因为文件如果过大,有个def progressCB(typ, value):,看了半天不知道怎么用。。。请指点一下,谢谢哦。
>
> 你的处理脚本?
>
> --http://zoomquiet.org人生苦短? Pythonic!
> KM乃是培育可催生自学习型组织的文化氛围! (KM=Knowledge Management=知识管理)

zi w

unread,
Jul 8, 2010, 8:42:57 PM7/8/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)

zi w

unread,
Jul 8, 2010, 10:05:16 PM7/8/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)

class test(object):
def __init__(self):
pass
def test(self):
print 'test'

class test1(test):
def test(self):
print 'test1'
super(test1,self).test()


a = test()
a.test()
b = test1()
b.test()


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
stylesheet=getSampleStyleSheet()
import copy
c = Canvas('temp.pdf', pagesize=letter)
c.setFont('STSong-Light', 16)

y = 700

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

stylesheet=getSampleStyleSheet()
normalStyle = copy.deepcopy(stylesheet['Normal'])
normalStyle.wordWrap = 'CJK'
normalStyle.fontName ='STSong-Light'
normalStyle.fontSize = 10
p = Paragraph('测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!测试!!换
行', normalStyle)
p1 = Paragraph('测试!!测试!!测试!!测试!
asdfkajsdfasdjflsdakjfoiajefjasldfmalsdflajsdflkjasdlfjalsdkfjalsdjflasdlfkjasdlfkjasldjfkaefha',
normalStyle)
story = []
story.append(p)
story.append(p1)
doc = SimpleDocTemplate('hello.pdf')
doc.build(story)


zi w 写道:

He Jibo

unread,
Jul 8, 2010, 10:06:46 PM7/8/10
to pyth...@googlegroups.com
谢谢兄台 :-)

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info



2010/7/8 zi w <nmw...@gmail.com>
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

Zoom.Quiet

unread,
Jul 8, 2010, 10:16:06 PM7/8/10
to pyth...@googlegroups.com

He Jibo

unread,
Jul 8, 2010, 10:19:34 PM7/8/10
to pyth...@googlegroups.com
大妈人真好。
希望有机会能够拜访一下大妈。

---------------------------
He Jibo
Department of Psychology,
Beckman Institute for Advanced Science and Technology
University of Illinois, Urbana Champaign,
603 East Daniel St.,
Champaign, IL 61820
website: www.hejibo.info



2010/7/8 Zoom.Quiet <zoom....@gmail.com>

Zoom.Quiet

unread,
Jul 8, 2010, 10:26:56 PM7/8/10
to pyth...@googlegroups.com
2010/7/9 He Jibo <hej...@gmail.com>:
> 大妈人真好。
> 希望有机会能够拜访一下大妈。
俺在珠海哈,金山大厦地址很好找,
平日中午都有空,晚上只有 21:00 之后,小孩睡了才有空,

嗯嗯嗯,开始OT 了,邮件私聊

Reply all
Reply to author
Forward
0 new messages