private void generatePdf(String urlFile) throws java.lang.Exception { //Démarrage d'OpenOffice XMultiComponentFactory mxMCF; //String unoUrl = "socket,host=" + PropertiesFactory.getString("Adresse.serveur.OOo")+ ",port=" + PropertiesFactory.getString("Port.OOo"); String unoUrl = "socket,host=" + "127.0.0.1" + ",port=" + "2002"; // Création du context initial avec OpenOffice xContext = Bootstrap.createInitialComponentContext(null); // Création de l'objet de type Connector permettant de créer une connection entre java et OpenOffice. Object x = xContext.getServiceManager().createInstanceWithContext("com.sun.star.connection.Connector", xContext); XConnector xConnector = (XConnector) UnoRuntime.queryInterface(XConnector.class, x); // Création de la connection entre java et OOo XConnection connection = xConnector.connect(unoUrl); // Création du bridge, étape très importante pour pouvoir fermer OpenOffice sans avoir à faire un system.exit() // Le bridge est créé suivant la connection et le protocol de discussion urp x = xContext.getServiceManager().createInstanceWithContext("com.sun.star.bridge.BridgeFactory", xContext); XBridgeFactory xBridgeFactory = (XBridgeFactory) UnoRuntime.queryInterface(XBridgeFactory.class, x); // Le bridge disposé bridge = xBridgeFactory.createBridge("", "urp", connection, null); // get the remote instance x = bridge.getInstance("StarOffice.ServiceManager"); // Requête de l'objet initial de son interface principale. mxMCF = (XMultiComponentFactory) UnoRuntime.queryInterface(XMultiComponentFactory.class, x); // Récupérer le contexte du composant (it's not yet exported from the office) // Requête pour l'interface XPropertySet. XPropertySet xProperySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, mxMCF); // Obtenir le contexte par défaut du serveur OOo. Object oDefaultContext = xProperySet.getPropertyValue("DefaultContext"); // Requête pour l'interface XComponentContext. xContext = (XComponentContext) UnoRuntime.queryInterface(XComponentContext.class, oDefaultContext); //Fin de Démarrage d'OpenOffice desktop = mxMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext); XComponentLoader loader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop); //Formattage du chemin traditionnel en chemin compatible UNO String unoUrlFile = formatUnoUrl(urlFile); // Value=true => pas d'interface graphique PropertyValue[] loadProperties = new PropertyValue[1]; loadProperties[0] = new PropertyValue(); loadProperties[0].Name = "Hidden"; loadProperties[0].Value = new Boolean(true); component = loader.loadComponentFromURL(unoUrlFile, "_blank", 0,loadProperties); XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, component); // Set properties for conversions PropertyValue[] convertProperties = new PropertyValue[2]; convertProperties[0] = new PropertyValue(); convertProperties[0].Name = "Overwrite"; convertProperties[0].Value = new Boolean(true); convertProperties[1] = new PropertyValue(); convertProperties[1].Name = "FilterName"; convertProperties[1].Value = "writer_pdf_Export"; //Création du fichier xStorable.storeToURL(unoUrlFile.substring(0, unoUrlFile.lastIndexOf('.')) + ".pdf", convertProperties); }