先日のTracWikiをPDF化する件ですが、どうも日本語で長文を書いたときに自動的に改行されずに、ページをはみ出してました。
英語の長文を適当に突っ込んでPDF変換するとちゃんと単語間(スペースの部分)で改行されるので、どうもコレはwordWrap辺りの問題ではないかと。
「linebreak」でpisaの下のソースを当たってみると reportlab_paragraph.py というファイルの925-929行目に
if style.wordWrap == 'CJK': #use Asian text wrap algorithm to break characters blPara = self.breakLinesCJK([first_line_width, later_widths]) else: blPara = self.breakLines([first_line_width, later_widths])
とゆー記述が。
reportLabのドキュメントによると、たぶんParagraphStyleってclassのwordWrapを「CJK」に書き換えれば良いと思うのですが、pisa経由でソース追っかけて行ったら良くわかんなくなってきて・・・結局。
if style.wordWrap == 'CJK': #use Asian text wrap algorithm to break characters blPara = self.breakLinesCJK([first_line_width, later_widths]) else: blPara = self.breakLinesCJK([first_line_width, later_widths])
と言うベタな対応(まぁ基本的に日本語でしか書かないし)。
禁則処理とか右端の揃い方にちょっと不満はあるのですが、その辺はもうちょい時間のある時にでも。