請問有人會用 PHP + Ireport 嗎?

280280
edited 十月 2013 in 進階PHP討論
如題!

這是問題之一
要由 php 呼叫使用 ireport

問題二
我目前用 ireport 1.2.7 在我 client 上試
產生 pdf html 檔 中文會是亂碼?
但產生 txt csv 檔 中文確正常
不知為何 ~_~
已經上網找了兩天

iTextAsian.jar 我已抓下來存入 lib 目錄下沒用
各種 font 的設定也都沒用
我把 window/fonts 下的 細明體 ttf 檔,copy 到 ireport/font 下
ireport 開不啟來 ~_~

找了兩天有看到貴站唯一一篇由 kiang 發問有關
jassperreport 的文章
看是否貴站有人會操作使用 ireport

找到快抓狂~

謝謝回覆!

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=2244

評論

  • 280280
    edited 十一月 2006
    剛測試有個重大突破

    不知是否可供有經驗的人參考,進而提供解決之道

    ireport 我用 CSV 當資料來源
    結果顯示中文就正常了

    原先的問題我沒說的很清楚,在此補充一下
    我的運作
    是用 ireport 透過 JDBC 去存取 mysql 的資料

    目前的狀況是由 mysql 讀出來的資料
    HTML PDF 兩個格式,中文顯示不正常

    TXT CSV 兩個格式,顯示正常

    剛我就以 ireport 匯出的 CSV 當資料來源顯示
    中文顯示就正常了 ~_~

    這兩三天在網路上找到的資料都是說 ireport/lib 少了一個中文包
    也就是我上一篇提的 iTextAsian.jar

    我也下載 copy 到相對應的路徑下
    還是一樣沒用

    剛特別測試了一下
    用 CSV 當來源,把 iTextAsian.jar 拿掉
    確實中文就顯示不出來
    所以表示有正常運行
    也如大部份網路上遇到中文無法顯示的解決方法一樣

    可是用 mysql 當來源,中文顯示還是不行

    但至少目前可以縮小範圍
    可能是 JDBC 還是 mysql 那邊設定有問題
    照成文字編碼轉換有問題

    如果有遇到類似的問題的人
    可以一起研究討論

    PS.或許有人會覺得很奇怪,為什麼 Java 的軟體,跑到 PHP 這邊來問
    我開發 WEB 的軟體是都用 PHP
    但每每遇到報表列印就頭大
    經人介紹使用 ireport ,第一次碰 Java 的軟體
    如果實驗成功,對 PHP 來說可說如虎添翼
    在找資料的時後,看到 kiang 似乎也有在測試的樣子
    所以特別在此發問
  • edited 十一月 2006
    我對這部份的沒有做太深入的研究,因為我對 JAVA 不熟

    我只是猜想,是否跟 Big5 與 UTF-8 之間的問題有關,TXT CSV 兩個格式顯示正常時是以什麼樣的軟體確認正常?儲存在 MySQL 中的資料是 UTF-8 or Big5 編碼?

    基本上,pdf 格式文件要使用 UTF-8 編碼,我目前只有試過把整個字型檔案崁入的方式,而 JAVA 的處理大多使用 UTF-8 編碼,因此無法正常顯示是可以理解;HTML 格式的部份是否有調整過瀏覽器的編碼檢視看看?
  • 280280
    edited 十二月 2006
    經過三個星期
    終於讓我試出來了^_^
    可以推薦給大家使用,不過還要搞個 Tomcat 的 Server 到是
    不過我是認為很值得,因為 ireport 的便利性
    用過就會了解到,自畫表格與 ireport 的便利差異多大

    大概說明一下我的處理用法與幾個概念

    ireport + mysql 遇到的問題如我前面所提,報表中文出現亂碼

    為什麼會出現亂碼?
    因為 ireport 是 java 的程式
    以我個人找到的資訊了解(不保證一定對,我也沒學過 java)
    java 在處理不管何種語言格式時 , 一律都會轉成 Unicode 處理
    也就是以我的例子來說

    資料庫 (BIG5碼) --> ireport處理 (Unicode碼) --> 輸出顯示(BIG5碼)

    理論上應該是這樣
    但不知為何,就在這轉來轉去的過程當中,有一環節出了問題
    因為這邊不是要討論 java 的程式問題
    所以就不細說 java 內部的處理方式
    簡單說一下,就是要人工自行將顯示部份轉成 BIG5 碼,而非自動

    以上是問題,與大概的處理方式
    下面要說明的是,我們 PHP 使用的部份

    ireport 是 java 的程式與報表
    所以我們 PHP 要使用時當然也無法說完全不碰 Java
    就我之前提過,在這個討論區一開始有搜尋到 kiang 尋問 ireport 的文章
    文中提的幾個簡單的範例,是一個很好的起頭,我也是這樣用
    這邊不在多說, PHP 要跑 Java 就是這樣用

    有關 ireport 要注意的地方就是
    範例當中有關產生報表的部份 , 也就是 Datasource (資料來源)
    照範例使用是產生空白報表 , 只是能確定 PHP 這樣跑 Java 是 OK 的

    因為 ireport 是 Java 物件 , 所以理所當然的
    要帶入的相關參數與物件 , 就都要是 Java 物件 , 這樣 ireport 才能跑
    這邊就要寫點小 Java 的程式 (光搞一個 Hello Java! , 搞了快一星期~_~)
    資料來源的 Connection(資料庫連結) , 就要用 Java 寫
    我試過用 PHP 產生的 mysql Connection 帶入 , 不能用

    還有另外一個參數 , 就是產生報表時 , 中間的 Map 參數
    用來傳遞動態的資料給 ireport 用 (例如動態的報表 Title)
    也是一樣要使用 Java 所提供的物件

    以上做法,基本的報表格式就可產生
    詳細 ireport 的用法,就要再研究

    再此強力推薦 PHP + ireport
    這是一個免費功能又強大,又好學好用的強大組合

    PS.以寫 HTML 環境的程式開發來說
    Java 確實有 Java 的好處
    Java陣營的人都會說很好學多好用多強大
    但感覺上就是很有障礙 (個人感覺)
Sign In or Register to comment.