如何使用其打印选项在Eclipse RCP中打印jasper报告?

时间:2011-12-13 10:15:47

标签: eclipse printing jasper-reports rcp

我的问题:我在Eclipse RCP应用程序中有一个ViewerComposite,它集成了Jasper Report(* .jrxml)。此ViewerComposite中显示的报告可以导出为PDF,RTF,XML,jrxml,HTML,CSV等。一切都很好,除了我无法使用GUI中ViewerComposite顶部提供的打印选项打印此报告。如何使用报告查看器的打印选项使用我的默认打印机打印报告。 Rem:我可以在Oracle JDeveloper Projects中使用jasper report viewer composite的print选项打印jasper报告,而不添加任何代码(默认情况下)。

1 个答案:

答案 0 :(得分:5)

我在Eclipse RCP应用程序中制作Jasper Reports的最佳方法如下:

  1. 首先用SWT / AWT复合和JRViewer(net.sf.jasperreports.view.JRViewer)替换ViewerComposite(即com.jasperassistant.designer.viewer.ViewerComposite.ViewerComposite)。
  2. 将生成的JasperPrint文档设置为JRViewer对象。
  3. 将JRViewer对象添加到此SWT / AWT组合的ContentPane上。
  4. 运行报告并检查打印并将报告数据导出为允许的格式,即( .PDF, .ODT, .docx, .jrxml,。 jasper, .xml, .html, .xls等);一切都会奏效。
  5. 详情代码如下:

    //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);