2011-12-13 57 views
4

我的問題:我在Eclipse RCP應用程序中有一個ViewerComposite,它將Jasper Report(* .jrxml)集成到它中。此ViewerComposite中顯示的報告可以導出爲PDF,RTF,XML,jrxml,HTML,CSV等。一切都很好,但我無法使用GUI中ViewerComposite頂部提供的打印選項打印此報告。如何使用報告查看器的打印選項使用默認打印機打印報告。 Rem:我可以在Oracle JDeveloper項目中使用jasper report viewer組合的打印選項打印jasper報告,而無需添加任何代碼(默認情況下)。如何使用打印選項在Eclipse RCP中打印jasper報告?

+0

我解決我的問題我就做什麼,4小時後。我已經發布了下面的答案。 – yayayokoho3

回答

5

我,使我的碧玉,最好的方法報告在Eclipse RCP應用程序如下:

  1. 更換ViewerComposite(即com.jasperassistant.designer.viewer.ViewerComposite.ViewerComposite)的SWT/AWT複合和JRViewer(net.sf.jasperreports.view.JRViewer)。
  2. 將生成的JasperPrint文檔設置到JRViewer對象上。
  3. 將JRViewer對象添加到此SWT/AWT組合的ContentPane中。
  4. 運行報告並檢查打印和報表數據導出到允許的格式,即(.PDF,的.odt,.DOCX,的.jrxml,開發文件, .XML,的.html,。 xls等);一切都會奏效。

這種情況的詳細信息,代碼如下:

//generate the jaspser print document 
JasperPrint jprint = generateReport(id, nepFromDate, nepToDate); 

//initialize JRViewer object 
JRViewer jasperviewer = new JRViewer(jprint); 

//add the SWT_AWT compposite for SWING contents of GUI    
final Composite swtAwtComposite = new Composite(comTBReport, SWT.EMBEDDED); 
swtAwtComposite.setBounds(10, 0, 767, 600); 

Frame frame = SWT_AWT.new_Frame(swtAwtComposite); 

Panel panel = new Panel(); 
frame.add(panel); 
panel.setLayout(new BorderLayout(0, 0)); 

JRootPane rootPane = new JRootPane(); 
rootPane.setSize(767, 600); 
panel.add(rootPane); 

//Define a container yourself 
Container c = rootPane.getContentPane(); 

//Add the JRViewer object onto the container to render in GUI 
c.add(jasperviewer);