Django中產生PDF(一)

來源:互聯網
上載者:User



需求描述:
    某網站與其使用者達成一致的協議,每份協議中都有使用者相關的獨特資訊,且還需要產生PDF並存檔。PDF檔案中需要有企業LOGO、文字描述等資訊。其展現形式跟word檔案類似,要求排版精美,圖文並茂,在接下來的幾篇博文中,我將記錄整個PDF產生的過程。


技術調研:
首先是通過Django的官方文檔找有木有相關的模組,很興奮又有點失落(模組地址:https://docs.djangoproject.com/en/1.4/howto/outputting-pdf/)。興奮的是Django考慮周到,為使用者提供了產生PDF的模組,失落的是它所提供的不能滿足現有的需求。順藤摸瓜,於是找到了reportlab,發現的確是一個很強大的庫,幾乎能實現你想要的結果。

項目準備:
通過調研,有三種方式實現PDF的檔案產生和儲存:
方法一:使用reportlab相關包,用canvas直接畫圖並儲存。這種方法最原始,使用比較麻煩,真對不同的PDF文檔需要單獨畫。另外,還需要詳細瞭解reportlab所提供的API,對於PDF檔案中需要畫的每一個元素,無論是文字、直線還是圖片,都需要自己手動調色、精確定位,操作比較繁瑣,且其代碼不能夠重用,增加了開發成本和維護成本。
方法二:仍然使用reportlab相關包,通過RML(Report Markup Language)來編寫需要產生PDF的檔案模板(類似於HTML頁面),針對不同的報表需求,我們只需要提供不同的報表範本即可,實現好了工具類,直接調用即可,這樣比較方便,方便維護。但是前提條件是必須要熟悉並瞭解RML語言。
方法三:通過HTML直接產生PDF,類似於方法二,都是通過樣式,資料,先渲染好模板,再產生PDF檔案。

個人感覺RML比較專業一點,因為它是專門用來產生報表需求的,且其展現形式比較豐富,小到文本、圖片,大到流程圖、餅狀圖、柱狀圖、曲線圖都能展現。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.