Как напечатать отчет Jasper в Eclipse RCP, используя опцию печати? - PullRequest
4 голосов
/ 13 декабря 2011

Мой вопрос: у меня есть приложение ViewerComposite в Eclipse RCP, которое отображает встроенный в него отчет Jasper (* .jrxml).Отчет, отображаемый в этом ViewerComposite, можно экспортировать в формате PDF, RTF, XML, jrxml, HTML, CSV и т. Д. Все в порядке, за исключением того, что я не могу распечатать этот отчет, используя параметр печати, предоставленный в верхней части ViewerComposite в графическом интерфейсе.Как я могу распечатать отчеты, используя мой принтер по умолчанию, используя опцию печати в средстве просмотра отчетов.Rem: Я могу напечатать отчет jasper, используя опцию печати составного средства просмотра отчетов jasper в Oracle JDeveloper Projects, не добавляя больше кодов (по умолчанию).

1 Ответ

5 голосов
/ 14 декабря 2011

Лучший способ создать приложение Jasper Reports в Eclipse RCP заключается в следующем:

  1. заменить ViewerComposite (т.е. com.jasperassistant.designer.viewer.ViewerComposite.ViewerComposite) SWT /Композитный AWT и JRViewer (net.sf.jasperreports.view.JRViewer) сначала.
  2. устанавливает сгенерированный документ JasperPrint на объект JRViewer.
  3. добавляет объект JRViewer на ContentPane этого SWT /Составной AWT.
  4. запустить отчет и проверить печать и экспорт данных отчета в разрешенные форматы, т. Е. ( .PDF, .ODT, .docx, .jrxml, .jasper, .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);
...