我有以下名为Edition的类,用于将报告导出为PDF。我测试了这个类,它运行得很好。
public final class Edition {
private static Edition m_Instance = null;
private IReportEngine engine;
private String realPath;
private IRenderOption option;
private String etat;
private String chemin;
private Map<String, Object> parametres;
private String format;
private Locale langue;
/**
* Constructeur
* Il configure le moteur BIRT de sorte à ce qu'il puisse retrouver
* les ressources BIRT mais également les librairies le faisant tourner
* Il est alors démarrer avec cette configuration.
* @throws BirtException
*/
Edition() throws BirtException {
EngineConfig config = new EngineConfig();
//realPath = "/home/atef/workspace1.0/Reporting/WebContent";
//config.setResourcePath(new File(realPath, "WEB-INF/classes/ressources").getAbsolutePath());
config.setBIRTHome(new File("C:\Users\ameni\Downloads\birt-runtime-4_4_1-20140916\birt-runtime-4_4_1\ReportEngine\lib").getAbsolutePath());//endroit où se trouvent les librairies du Runtime
Platform.startup(config);
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
engine = factory.createReportEngine(config);
option = new RenderOption();
}
/**
* Instanciation du service
* @return l'instance en cours du service
* @throws BirtException
*/
public static Edition getInstance() throws BirtException {
if (m_Instance == null) {
m_Instance = new Edition();
}
return m_Instance;
}
/**
* Initialisation
* @param etat nom du rptdesign
* @param chemin chemin et nom du fichier de sortie
* @param parametres paramètres à passer à l'état
* @param format format de sortie (PDF, XLS, DOC, etc.)
* @param langue langue de l'édition
*/
public void init(String etat, String chemin, Map<String, Object> parametres, String format, String langue) {
this.etat = etat;
this.chemin = chemin;
this.parametres = parametres;
this.format = format;
this.langue = new Locale(langue);
}
/**
* Lancement de l'état
* @throws ScriptException
*/
public void runBirt(){
try {
/* Récupération du rptDesign */
IReportRunnable design = engine.openReportDesign(new File("C:\Users\ameni\workspace\RoamSmartTest\report.rptdesign").getAbsolutePath());
IDataSource dataSource = design.getDesignInstance().getDataSource("Data Source");
try {
dataSource.setPrivateDriverProperty("odaDriverClass", "org.postgresql.Driver");
dataSource.setPrivateDriverProperty("odaURL", "jdbc:postgresql://127.0.0.1:5432/springdb");
dataSource.setPrivateDriverProperty("odaUser", "ameni");
dataSource.setPrivateDriverProperty("odaPassword", "ameni");
}
catch (ScriptException e) {
e.printStackTrace();
}
System.out.println("Récupération du rptDesign");
/* Exécution */
IRunTask runTask = engine.createRunTask(design);
System.out.println("Exécution");
/* Paramètres */
for (String clef : parametres.keySet()) {
runTask.setParameterValue(clef, parametres.get(clef));
}
System.out.println("Paramètres");
/* Langue */
runTask.setLocale(langue);
System.out.println("Langue Chmn:"+chemin);
runTask.run(chemin+".rptdocument");
/* Récupération du rptDocument */
IReportDocument doc = engine.openReportDocument(chemin+".rptdocument");
//IDataSet dat=design.getDesignInstance().getDataSet("MyData");
System.out.println("Récupération du rptDocument 2");
/* Rendu */
IRenderTask renderTask = engine.createRenderTask(doc);
System.out.println("Rendu");
option.setOutputFileName(chemin);//Nom du fichier de sortie
option.setOutputFormat(format);//Format du fichier de sortie
renderTask.setRenderOption(option);//Chargement du fichier
renderTask.render();//Création du fichier
}
catch (EngineException e) {
e.printStackTrace();
}
}
public void destructeur() {
engine.destroy();
}
}
现在我想知道如何在flex中调用这个类,比如使用按钮,有什么想法吗?
Flex
<s:Button label="Export" click="button1_clickHandler(event)" />
1条答案
按热度按时间dxxyhpgq1#
如果您使用的是Adobe AIR,则可以使用NativeProcess API: