Forums, dernières contributions
SDK - Export PDF PtitGénie
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
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
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); |