1. 程式人生 > >[reportlab教程](1) – 第一個Hello, reportlab的例子

[reportlab教程](1) – 第一個Hello, reportlab的例子

這幾天都在學習 ReportLab 這個優秀的生成 PDF 的軟體包,特別是它的使用手冊也都是使用自身的模組生成的,效果很讓我滿意,因此這段時間也許會把精力放在 PDF 文件生成上面。因此也希望寫一個入門的教程方便大家同我一起學習。這就是寫本教程的起因。由於有些東西是邊學邊寫很可能會有錯誤,希望大家幫助我改正。那麼學習的目的就是希望可以寫出象 ReportLab 的使用者手冊一樣效果的文件,並且希望儘可能的方便。

安裝很簡單,大家只要下載最新的 1.20 包即可。如果需要處理更多的影象格式還應該下載 PIL 軟體包。這塊就不細說了。

那麼下面開始我們的學習,首先還是從寫一個最簡單的Hello, World開始,當然這裡把Word改為 reportlab 了。

先看程式碼吧。

from reportlab.pdfgen import canvas
def hello(c):
    c.drawString(100,100,"Hello, ReportLab")
c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage()
c.save()

這段程式碼是從使用者手冊改造而來。它的執行結果就是在你的當前目錄生成一個hello.pdf的檔案,開啟它你會看到只有一頁的內容,而"Hello, ReportLab"是顯示在頁面的左下角的。下面解釋一下。

使用 ReportLab 來生成 PDF 你可以認為就象是在畫圖一樣,因此第一行從pdfgen中匯入了canvas,準備開始繪畫。

hello方法是簡單地呼叫Canvas的方法在指定的起始座標來繪製文字。要注意,在 ReportLab 中座標的原點預設是在頁面的左下角。因此最後的效果是在頁面的左下角。這一點要注意。

第4行生成一個Canvas物件,它指定一個檔名,那麼最終的結果將存放在這個檔案中。在Canvas的構造方法中還有一些預設值,比如紙張的大小預設為A4紙等,現在我們不去關心它,一切從最簡單開始。

第6行可以產生一個分頁。但由於後面沒有更多的輸出了,因此它並不起作用。你可以在它的後面再加一個hello(c)的語句,看一看是不是變成兩頁了。

最後一行很重要,它會將內容儲存到檔案中。因此如果忘記掉用了,你什麼也得不到。

這個例子很簡單,但你也許已經注意到了,如果我想生成的是長篇的文件,讓我象畫畫一樣來生成不是太難了嗎?的確是這樣,但這裡只是基本的介紹一下使用,ReportLab 已經為了想好了,它有更方便的東西供你使用,可以讓你從一個更高的起點開始。但是需要注意,一些相對低層的東西可以實現一些繪圖之類的東西,在你的 PDF 上作畫也是一個很有趣的事情。

下一篇我將介紹使用文件佈局的一個最簡單的例子。

轉自: