close

最近測試了如何在 android app 裡面產生 PDF 檔案,我們的需求是:



  1. 不透過app server,直接產生PDF,並寫入到 SD Card

  2. 必須要能顯示 繁體中文 簡體中文 及英文

  3. 必須要能繪製文件表格


我們選擇了兩種 pdf library,測試在 android 產生 pdf 的能力




  1. iText:這是最有名氣,處理pdf的library,但因為要在 android 上使用,我們不能直接使用原本的 itext library,要到 http://sourceforge.net/projects/itextg/ 下載 可在 android 平台運作的 itextg




  2. Android PDF Writer:http://sourceforge.net/projects/apwlibrary/ 這是個簡單的 PDF library




解決問題的想法有兩種



  1. 直接產生有文字、圖片等內容的 PDF,但必須要解決中文字型的問題

  2. 先將內文資料用圖片的方式,以 Android Graphic Library 將文字、線條等資料,先畫在一張圖片上,然後再將圖片貼到 PDF 檔案中


測試結果如下:




  1. iText 可直接用程式產生 文字 tables images 等東西
    最大的問題是 中文字型。




  2. 如果要使用外部字型,例如 Truetype 的字型,會因為字型檔案過大,而造成 android 程式 out of memory




  3. 最好的方式是使用 iTextAsian.jar (參考 iText中文問題的解決之道)


    此檔案可在 itext 的 extrajars 裡面取得 http://sourceforge.net/projects/itext/files/extrajars/


    在程式中,可用以下的方式指定文字的字型


    Font textfont = new Font(BaseFont.createFont("MHei-Medium", "UniCNS-UCS2-H", BaseFont.EMBEDDED));




  4. 需要搭配 android 及 pc 的 pdf reader 測試,必須確認產生出來的檔案 可以被 兩個平台的 pdf reader 讀取,尤其是繁體與簡體中文字型的部份




  5. 使用 apwlibrary 以畫圖的方式處理,在 ASUS 平板測試 PDF 正常,但是以 Samsun Galaxy-S 測試時,內建的PDF Reader 顯示出來的圖片卻都是 X




版權問題




  1. iText 採行 Affero GPL ,以我們的專案來說,沒有問題,可以一併遵循 AGPL的規範,公開 source code




  2. Android PDF Writer 採行 BSD,可以很自由地使用它

arrow
arrow
    全站熱搜

    yaocl 發表在 痞客邦 留言(0) 人氣()