使用Python產生pdf檔案

來源:互聯網
上載者:User

標籤: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檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.