데스크톱 응용 프로그램에서 BIRT 보고서를 사용한 적이 있습니까? .NET 환경에서 Crystal Reports를 사용하여 데스크톱 응용 프로그램에서 보고서를 표시 할 수 있습니다. 서버 환경을 설정하지 않고 BIRT에서도 가능합니까?데스크톱 응용 프로그램의 BIRT
이 목표를 달성하는 방법에 대해 조언을 해 줄 수 있습니까?
미리 감사드립니다.
데스크톱 응용 프로그램에서 BIRT 보고서를 사용한 적이 있습니까? .NET 환경에서 Crystal Reports를 사용하여 데스크톱 응용 프로그램에서 보고서를 표시 할 수 있습니다. 서버 환경을 설정하지 않고 BIRT에서도 가능합니까?데스크톱 응용 프로그램의 BIRT
이 목표를 달성하는 방법에 대해 조언을 해 줄 수 있습니까?
미리 감사드립니다.
예, 가능합니다. 약 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>
네, 가능합니다. Here 몇 가지 일반적인 설명입니다. 나는 서버 환경에서 Birt를 사용했지만, 원하는 방식으로 보고서를 렌더링하는 RenderContext 인터페이스가 있다는 것을 알고있다.
명령 줄에서 보고서를 생성 할 수있는 BIRT 런타임이 있습니다. this article을 읽으십시오. 그러면 서버없이 BIRT를 사용할 수 있습니다. 원래 here as an answer to my own question이라고 기록되었습니다.
데스크탑 애플리케이션이 Eclipse RCP (Rich Client Platform)를 사용하여 작성된 경우보고 기능을 추가하는 것이 쉽습니다. org.eclipse.birt.viewer 플러그인을 추가 한 다음 사용하면됩니다. 여기
는 설명 기사입니다 그것은 : http://digiassn.blogspot.com/2008/08/birt-launch-birt-rcp-application.html, 당신은 BIRT 런타임을 다운로드해야하고 다음 예제 코드를 시도 할 수 있습니다 그것은이 가능하고 쉽게하는 JEditorPane 보고서의 미리보기를 만들 수 있습니다 이클립스 포럼에 게시 된 this.
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());
}
}
}