1,生成pdf時的中文及自動換行問題:html
pdfmetrics.registerFont(TTFont('song', settings.MEDIA_ROOT+'/file/SURSONG.TTF')) from reportlab.lib import fonts from django.template import Context, loader fonts.ps2tt = lambda psfn: ('song', 0, 0) fonts.tt2ps = lambda fn,b,i: 'song' def wrap(self, availWidth, availHeight): # work out widths array for breaking self.width = availWidth leftIndent = self.style.leftIndent first_line_width = availWidth - (leftIndent+self.style.firstLineIndent) - self.style.rightIndent later_widths = availWidth - leftIndent - self.style.rightIndent try: self.blPara = self.breakLinesCJK([first_line_width, later_widths]) except: self.blPara = self.breakLines([first_line_width, later_widths]) self.height = len(self.blPara.lines) * self.style.leading return (self.width, self.height)
中文問題主要是經過設置本身的字體來規定pdf的字體,具體的能夠看reportlab庫裏的介紹和例子;換行問題是經過重寫reportlab裏的warp方法來實現,用html生成的pdf,用的是pisa的第三方插件,在解決換行問題後,在表格裏文字居中的問題就會出現,有2種方法能夠操做:python
1,在重寫warp方法時參照reportlab裏的方法更改邊距來實現,但有個缺點,在表格內字數多時會出現文字大小不一的狀況django
2,在html裏設置標籤格式,以此來達到居中的效果,這種沒有什麼太大缺點,操做也很方即可以做爲首選字體
插入圖片:插件
再插入圖片時,只有用圖片的絕對路徑(具體位置)才能夠將圖片插入到pdf中正常顯示。例如:settings.MEDIA_ROOT+'/images/test.jpg',code