標籤:pdf python reportlab
Python平台的優秀PDF報表類庫Reportlab。它不屬於Python的標準類庫,所以必須手動下載類庫包並安裝:
yum install python-reportlab -y
這篇文章將介紹reportlab中基本常用的api,使用canvas畫出一份整潔的PDF報表。詳細內容參考reportlab的官方user guide。
樣本一、產生一段文字
#!/usr/bin/pythonfrom reportlab.pdfgen import canvasdef hello(): c = canvas.Canvas("helloworld.pdf") c.drawString(100,100,"Hello,World") c.showPage() c.save()hello()
樣本二、產生單個檔案的pdf
#需要安裝字型 yum install wqy-* -y#!/usr/bin/pythonimport datetimeimport subprocessimport codecsfrom reportlab.pdfgen import canvasfrom reportlab.lib.units import inchfrom reportlab.lib.pagesizes import A4, landscapeimport reportlab.pdfbase.ttfonts reportlab.pdfbase.pdfmetrics.registerFont(reportlab.pdfbase.ttfonts.TTFont(‘song‘, ‘/usr/share/fonts/cn/msjh.ttf‘)) import reportlab.lib.fonts def disk1_report(): p1 = subprocess.Popen("cat cmd1.log ",shell=True,stdout=subprocess.PIPE) return p1.stdout.readlines()def create_pdf(input,output="disk1.pdf"): now = datetime.datetime.today() date = now.strftime("%h %d %Y %H:%M:%S") c = canvas.Canvas(output,pagesize=A4) c.setFont(‘song‘,10) textobject = c.beginText() textobject.setTextOrigin(1*inch,11*inch) textobject.textLines(‘‘‘Disk Capacity Report: %s ‘‘‘ % date ) for line in input: textobject.textLine(line.strip()) c.drawText(textobject) c.showPage() c.save()report = disk1_report()create_pdf(report)
樣本三、迴圈產生指定目錄下的多個檔案()
#!/usr/bin/pythonimport osimport os.pathimport datetimeimport subprocessfrom reportlab.lib.pagesizes import A4, landscapefrom reportlab.pdfgen import canvasfrom reportlab.lib.units import inchlogdir = "/var/www/device/check_log"for root,dirs,filenames in os.walk(logdir): for filename in filenames: v = root+os.sep+filename os.environ[‘file‘] = str(v) def disk_report(): p = subprocess.Popen("cat $file ",shell=True,stdout=subprocess.PIPE) return p.stdout.readlines() def create_pdf(input,output="/var/www/device/check_pdf/"+filename+".pdf"): now = datetime.datetime.today() date = now.strftime("%h %d %Y %H:%M:%S") c = canvas.Canvas(output,pagesize=A4) textobject = c.beginText() textobject.setTextOrigin(1*inch,11*inch) textobject.textLines(‘‘‘Disk Capacity Report: %s ‘‘‘ % date ) for line in input: textobject.textLine(line.strip()) c.drawText(textobject) c.showPage() c.save() report = disk_report() create_pdf(report)
本文出自 “World” 部落格,請務必保留此出處http://xiajie.blog.51cto.com/6044823/1677550
使用Python產生pdf檔案