BIRT в настольном приложении - PullRequest
10 голосов
/ 28 октября 2008

Кто-нибудь когда-нибудь использовал отчет BIRT в настольном приложении. Я пришел из среды .NET, и там вы можете использовать Crystal Reports для отображения отчетов в настольных приложениях. Возможно ли это и с BIRT без настройки серверной среды?

Можете ли вы дать мне несколько советов, как достичь этой цели?

Заранее спасибо.

Ответы [ 6 ]

5 голосов
/ 30 апреля 2009

Если ваше настольное приложение написано с использованием Eclipse Rich Client Platform (RCP), добавить отчет просто. Все, что вам нужно сделать, это добавить плагин org.eclipse.birt.viewer и затем использовать его.

Вот статья, которая объясняет это: http://digiassn.blogspot.com/2008/08/birt-launch-birt-rcp-application.html

4 голосов
/ 19 ноября 2008

Существует среда выполнения BIRT, которая позволяет генерировать отчеты из командной строки. Прочитайте эту статью . Это позволит вам использовать BIRT без сервера. Первоначально отмечено здесь как ответ на мой собственный вопрос .

2 голосов
/ 28 октября 2008

Да, это возможно. Я использовал это в проекте, который я сделал около 1-2 лет назад, поэтому мне придется вернуться к вам с деталями. (Хотя с тех пор все могло измениться)

Вот плагины I , необходимые:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="var" path="JUNIT_HOME/junit.jar" sourcepath="JUNIT_SRC_HOME/junitsrc.zip"/>
    <classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/>
    <classpathentry kind="lib" path="lib/swt.jar"/>
    <classpathentry kind="con" path="SWT_CONTAINER"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart_2.1.2.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart.device.extension_2.1.2.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart.device.swt_2.1.1.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart.engine_2.1.2.v20070205-1728.jar" sourcepath="C:/Programme/eclipse/plugins/org.eclipse.birt.chart.source_2.2.0.v20070209/src"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart.engine.extension_2.1.2.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart.runtime_2.1.2.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="org.eclipse.birt.core_2.1.2.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="org.eclipse.emf.common_2.2.1.v200609210005.jar"/>
    <classpathentry kind="lib" path="org.eclipse.emf.ecore_2.2.1.v200609210005.jar"/>
    <classpathentry kind="lib" path="org.eclipse.emf.ecore.xmi_2.2.1.v200609210005.jar"/>
    <classpathentry kind="lib" path="js.jar"/>
    <classpathentry kind="lib" path="com.ibm.icu_3.4.5.jar"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart.ui_2.1.1.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="org.eclipse.birt.chart.ui.extension_2.1.2.v20070205-1728.jar"/>
    <classpathentry kind="lib" path="lib/hsqldb.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
1 голос
/ 28 октября 2008

Да, это возможно. Здесь - общее описание. Я использовал Birt в серверной среде, хотя, насколько мне известно, есть интерфейс RenderContext, с помощью которого вы отображаете отчеты так, как вам хочется.

0 голосов
/ 10 января 2014
package com.passport;

import java.io.FileOutputStream;
import java.util.Collection;
import java.util.Iterator;


import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.IGetParameterDefinitionTask;
import org.eclipse.birt.report.engine.api.IParameterDefnBase;
import org.eclipse.birt.report.engine.api.IRenderOption;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.RenderOption;

public class EngineReport {
    private static final long serialVersionUID = 1L;       
    private IReportEngine engine=null; 
    private EngineConfig engineconfig = null;
    private IReportEngineFactory factory = null;
    private String sourceReport;
    private String locationReport;
    private String reportRealPath = "";

public static void main(String[] args){
    EngineReport engineReport = new EngineReport();
    engineReport.save("src/com/passport/report.rptdesign","c:/tmp/rep.doc");
}

private void save(String sourceReport, String locationReport) {

    this.sourceReport = sourceReport;
    this.locationReport = locationReport;
    IReportRunnable design = null;
    IRenderOption options = null;
    try {
        String reportFormat = locationReport.substring(locationReport.lastIndexOf('.')+1);
        sourceReport = "src/com/passport/report.rptdesign";
        if ((sourceReport != null && (sourceReport.length() > 0)) ) {

            engineconfig = new EngineConfig();
            reportRealPath = "";  
            Platform.startup(engineconfig);
            factory = (IReportEngineFactory) Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);            
            engine = factory.createReportEngine(engineconfig);
            design = engine.openReportDesign(reportRealPath+sourceReport);          
            IRunAndRenderTask task = engine.createRunAndRenderTask(design);     

            IGetParameterDefinitionTask taskParam = engine.createGetParameterDefinitionTask( design );
            Collection<?> params = taskParam.getParameterDefns( false );
            String paramName = null;
            Iterator<?> iterOuter = params.iterator( );
            while ( iterOuter.hasNext( ) ) {
                IParameterDefnBase param = (IParameterDefnBase) iterOuter.next( );
                paramName = param.getName( );                   
                if (paramName.equalsIgnoreCase("PR_SOME_PARAM")) {
                    task.setParameterValue(paramName,"someparam");
                }                   
                else if (paramName.equalsIgnoreCase("PR_SOME_PARAM_2")) {
                    task.setParameterValue(paramName,"someparam2");
                }
            }               
            options = new RenderOption();           
            options.setOutputFormat(reportFormat);

            FileOutputStream fos = new FileOutputStream(locationReport);
            options.setOutputStream(fos);
            task.setRenderOption(options);
            task.run();
            task.close();
            engine.destroy();
            fos.close();

        }
    } catch(Exception e) {
        System.out.println(e.toString());
    }
}

}

0 голосов
/ 02 сентября 2011

Это возможно, и вы можете легко создать предварительный просмотр отчета в JeditorPane, вам нужно загрузить BIRT Runtime, а затем вы можете попробовать использовать пример кода, размещенный в этом сообщении на форуме Eclipse.

...