2011-11-23 155 views
15

前些日子,我的老闆問我,他想從外面的web應用程序發送PDFs的發票。鑑於每個人都使用JasperReports和iReport進行設計,我嘗試過。我的Web應用程序基於Java + Hibernate和Spring。 Jasper看起來很好,iReport也是如此。無論如何,我已經被兩件事情阻止了:尋找JasperReports的替代產品

  • iReport是我見過的最慢的東西。
  • 更嚴重的是,我確定某些bean具有一些類層次結構,並且在Jasper中處理它非常複雜。我辦公室裏的每個人都使用Jasper和SQL查詢,這樣它就是一個簡單易用的工具,但我花了整整一天的時間試圖將我的bean映射到報表和子報表,而且工作量很小。

我見過DynamicJasper,但是,似乎我無法用它設計報表。你怎麼看?有更容易使用的替代品嗎?

+0

您是否在尋找與Java + Hibernate和Spring結合使用的替代方案? –

+0

DynamicJasper API是JasperReports API的「包裝器」API –

+1

關於iReport性能,最近的4.1.x和4版本中存在某種錯誤。5版本。查看此論壇帖子瞭解更多信息:http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=94781#95291。刪除/重置類路徑將iReport的性能提高了一個數量級。 – kaliatech

回答

2

作爲iReport的替代品,您可以嘗試使用JasperWave JasperReports設計器。 爲了解決第二個問題,爲什麼不寫一些將bean結構轉換爲報告結構的幫助程序java代碼?在任何情況下,將java對象映射到某種平面結構總是不容易的。創建一些將隱藏底層bean結構複雜性的java接口。不確定第二個問題是尋找替代報告解決方案的原因。

4

如果時間是最重要的(如通常情況下,當你的老闆給了你的東西),我會建議您檢查出iText的(主要站點是here)。學習非常非常簡單(您可以在20分鐘內完成它,運行並生成簡單的「Hello,PDF!」示例),並且可以將幾乎任何內容導出爲PDF:表格,列表,圖表,圖片,超文本等。

JasperReports實施JRBeanCollectionDataSource是我自己承認的,它是一種更優雅,靈活,永久的解決方案。但是如果你需要一個快速的n-dirty庫來生成PDF文件,即將到來的截止日期已經接近尾聲,我會下載iText JAR並在其中進行下載。

該網站載有實際的代碼示例,幾乎任何你想完成。

與JasperReports不同,iText不是報表生成器。它只是一個PDF生成器(從我可以告訴您的問題,聽起來像所有你需要的)。因此,對於任何特定的bean,你只要選擇你要導出到PDF發票的屬性,並使用ChunkParagraph等類,以它們添加到該文件,因爲你需要:

// Your POJO/Bean/VO 
Employee oEmp = new Employee(); 

Document oInvoicePdf = new Document(); 
PdfWriter.getInstance(document, new FileOutputStream("/invoices/2011/Invoice201.pdf")); 
document.open(); 
document.add(new Chunk("Employee's name is : " + oEmp.getName())); 
document.close(); 

即使這不是你要找的,不惜一切代價我會推薦你​​轉向明確的Apache PdfBox。在我看來,這是純粹的邪惡,只會打破你的心。

希望這會有所幫助,祝您好運!

+0

我第二個PDFBox很困難。內部數據結構似乎充滿了內存泄漏,而且並非真正用於處理大型文檔。我最終需要關閉並重新打開源代碼pdf,以清除所有不必要的數據。 我真的希望他們解決這些問題。 –

+0

這是否有任何新的更新? – powder366