Decideo - Actualités sur le Big Data, Business Intelligence, Data Science

Abonnez-vous gratuitement à Decideo !


Decideo


 
Forums, dernières contributions
 PtitGénie
Vendredi 18 Septembre 2009

Version imprimable
[Ignorer]
Bonjour !

Je travaille sur Eclipse pour exécuter 'à distance' mes rapports et les rengistrer, modifier, dupliquer. Ce que j'arrive à faire, mais j'ai des difficultés à trouver comment les enregistrer/exporter/imprimer en PDF...

Je vous copie le code que j'ai développé pour l'instant :

qt[/*Variables de connection*/
String cms = 'bo:6400';
String username = 'administrator';
String password = '';
String auth = 'secEnterprise';

/*Connexion à WebIntelligence*/
ISessionMgr sm = CrystalEnterprise.getSessionMgr();
IEnterpriseSession enterpriseSession = sm.logon(username, password, cms, auth);
//System.out.println('sessionMgradmin : ' + sm);
//System.out.println('enterprise session : ' + enterpriseSession);
//System.out.println(enterpriseSession.getEnterpriseVersion());
//System.out.println(enterpriseSession.getServerNames());
//ILogonTokenMgr logonTokenMgr = enterpriseSession.getLogonTokenMgr();
//String defaultToken = logonTokenMgr.createWCAToken('',20,10);
//System.out.println(defaultToken);

/*Requete sur l'Infostore*/
IInfoStore iStore = (IInfoStore)enterpriseSession.getService('InfoStore');
String boQuery = 'SELECT * FROM CI_INFOOBJECTS WHERE SI_KIND= 'Webi' AND SI_INSTANCE=0 AND SI_NAME='testsjava123'';
IInfoObjects boInfoObjects = iStore.query(boQuery);
IInfoObject infoObject = (IInfoObject) boInfoObjects.get(0);
int docID = infoObject.getID();
String docType = infoObject.getKind();

System.out.println('Title : ' + infoObject.getTitle());
System.out.println('Files : ' + infoObject.getFiles());
System.out.println('ID du dossier : ' + infoObject.getParentID());
System.out.println('Document: ' + 'Type=' + docType + ' ' + 'ID='+ String.valueOf(docID));

/*Instanciation du report engine approprié*/
ReportEngines RepEngines = (ReportEngines) enterpriseSession.getService('ReportEngines');
ReportEngine webiReportEngine = RepEngines.getService(ReportEngines.ReportEngineType.WI_REPORT_ENGINE);
//ReportEngine fcReportEngine = RepEngines.getService(ReportEngines.ReportEngineType.FC_REPORT_ENGINE);

/*Traitement du document*/
DocumentInstance boDocumentInstance = webiReportEngine.openDocument(docID);
System.out.println(boDocumentInstance.getProperties());

Prompts p = boDocumentInstance.getPrompts();
Prompt invit1 = p.getItem(0);
System.out.println('Nombre d'invit : ' + p.getCount());
System.out.println('Invit 1 : ' + invit1.getName());
String [] vals = new String[1];
vals[0] = '129';
invit1.enterValues(vals);
boDocumentInstance.setPrompts();

/*Actualisation des données du document et sauvegarde*/
boDocumentInstance.refresh();
boDocumentInstance.applyFormat();
boDocumentInstance.save();
//boDocumentInstance.saveAs('toto', infoObject.getParentID(), null, null);

/*Export en PDF*/

boolean bRefresh = true;

//IReportSource rptSrc = boDocumentInstance ;

//IReportSource rptSrc = null;
//rptSrc = boDocumentInstance.getReportSource();

ReportExportControl expViewer = new ReportExportControl();
ExportOptions exOpts = new ExportOptions();
expViewer.setReportSource(rptSrc );
PageBasedExportFormatOptions exFormat = null;

exFormat = new PDFExportFormatOptions();
exOpts.setFormatOptions(exFormat);
exOpts.setExportFormatType(ReportExportFormat.from_int(ReportExportFormat._PDF));

expViewer.setExportOptions(exOpts);
expViewer.setExportAsAttachment(false);


/*Fermeture du document*/
boDocumentInstance.closeDocument();
boDocumentInstance = null;

/*Fermeture du reportengine*/
webiReportEngine.close();
webiReportEngine = null;

/*Déconnexion de WebIntelligence*/
enterpriseSession.logoff();
enterpriseSession = null;

System.out.println('end');]qt


Je lutte un peu beaucoup donc sur la partie PDF... Il me semble que mon problème vient de la définition du 'rptSrc' pour .setReportSource !

Si quelqu'un peut m'aider... ^^
 Loïc Baspin
Lundi 21 Septembre 2009

Version imprimable
[Ignorer]
Bonjour,

je ne comprends pas très bien ton problème mais voici le bout de code que j'utilise pour faire de l'excel :
bView = (BinaryView)doc.getView(OutputFormatType.XLS);
fic = new File(chemin+doc.getProperties().getProperty('name')+'.xls');
ficStream = new FileOutputStream(fic);
bView.getContent(ficStream);
ficStream.close();
doc.closeDocument();
où bview est un com.businessobjects.rebean.wi.BinaryView
fic est un File
ficstream java.io.FileOutputStream
chemin un string indiquant où stocker le fichier généré.

Pour le pdf tu utilises bView = (BinaryView)doc.getView(OutputFormatType.PDF); et il faut adapter la suite ;-)

Voilàa, dis moi si cela te permet de générer convenablement ton rapport PDF...

Loïc Baspin
Consultant Décisionnel
Advanced-Schema
 PtitGénie
Mardi 22 Septembre 2009

Version imprimable
[Ignorer]
Bonjour !

Merci de ta réponse, mais entre temps j'ai changé d'optique pour programmer ma planification ^^

Je copie mon code, si ça peut aider :

ISchedulingInfo scheduleInfo = null;
IDestinations boDestinations;
boolean sendInstance = true;
String nom = 'C:/Export/' + NomRapport + '_mag' + numMag + '.pdf';;

IWebi webiDoc = (IWebi)boInfoObjects.get(0);
scheduleInfo = webiDoc.getSchedulingInfo();
webiDoc.getWebiFormatOptions().setFormat(IWebiFormatOptions.CeWebiFormat.PDF);

boDestinations = scheduleInfo.getDestinations();

IDestination dests = null;
dests = boDestinations.add('CrystalEnterprise.DiskUnmanaged');
dests.setName('CrystalEnterprise.DiskUnmanaged');

IDestinationPlugin destinationPlugin = (IDestinationPlugin)iStore.query('SELECT TOP 1 * ' +
'FROM CI_SYSTEMOBJECTS ' +
'WHERE SI_NAME='CrystalEnterprise.DiskUnmanaged'').get(0);

IDiskUnmanagedOptions diskUnmanagedOptions = (IDiskUnmanagedOptions) destinationPlugin.getScheduleOptions();
diskUnmanagedOptions.getDestinationFiles().add(nom);

dests.setFromPlugin(destinationPlugin);


Twitter
Rss
LinkedIn
Facebook
Apple Podcast
App Store
Google Play Store