

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
3 messages in org.openoffice.fr.progFermeture de document| From | Sent On | Attachments |
|---|---|---|
| Pascal Robert | Jul 13, 2006 7:14 am | |
| Pascal Robert | Jul 13, 2006 8:49 am | |
| Bernard Marcelly | Jul 17, 2006 4:48 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Fermeture de document | Actions... |
|---|---|---|
| From: | Pascal Robert (prob...@os.ca) | |
| Date: | Jul 13, 2006 7:14:44 am | |
| List: | org.openoffice.fr.prog | |
J'ai quelques difficultés à fermer le résultat d'une fusion, lors de l'appel à XCloseable.close(), on me répond « Controller disagree » :-/ Et si je vais sur le serveur OOo, le document n'a pas été sauvegardé (malgré un appel à .store()) et il est encore ouvert dans Writer. Voici le code :
// Ouverture des documents fusionnés pour les imprimer, nous supprimeons les fichiers à mesure qu'ils sont imprimés. try { fichiers = repertoireDocumentsFusion.listFiles(); for (int iterateur = 0; iterateur < fichiers.length; iterateur++) { File fichier = fichiers[iterateur]; if (fichier.getName().endsWith(_ExtensionDocument)) { PropertyValue[] loadProps = new PropertyValue[0]; XComponent xComponent = mxComponentLoader.loadComponentFromURL(_url(fichier), "_blank", 0, loadProps); XTextDocument xDoc = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, xComponent);
XPrintable xPrintable = (XPrintable)UnoRuntime.queryInterface(XPrintable.class, xDoc); PropertyValue[] printerDesc = new PropertyValue[1]; printerDesc[0] = new PropertyValue(); printerDesc[0].Name = "Name"; printerDesc[0].Value = nomImprimante; xPrintable.setPrinter(printerDesc); PropertyValue[] printOpts = new PropertyValue[0]; PropertyValue[] props = xPrintable.getPrinter(); xPrintable.print(printOpts);
XStorable templateStore = (XStorable) UnoRuntime.queryInterface(XStorable.class, xDoc); templateStore.store();
com.sun.star.util.XCloseable fermDocFusion = (com.sun.star.util.XCloseable) UnoRuntime.queryInterface(com.sun.star.util.XCloseable.class, xDoc); if (xComponent != null) { if (fermDocFusion != null) { try { fermDocFusion.close(false); } catch(com.sun.star.util.CloseVetoException exCloseVeto) { /* C'est ici que j'ai une erreur disant que le controlleur n'est pas d'accord*/ System.out.println(exCloseVeto.getMessage()); } } } else { XComponent xDisposeable = (XComponent)UnoRuntime.queryInterface(XComponent.class,xDoc); xDisposeable.dispose(); } } } } catch(java.lang.Exception exception) { throw new ServeurOpenOffice.Exception("Erreur lors de l'impression du document fusionné sur la queue « " + nomImprimante + " ».", exception); } // catch
L'impression se fait correctement, et si je fermes le document manuellement dans Writer, celui-ci me dit que le document a été modifié, donc il n'a pas été enregistré par le .store() :-/ Pourtant, dans mon code ailleurs, j'ouvre un gabarit pour le modifier et le stocker avec storeAsURL et ça fonctionne. Est-ce que c'est un bogue dans la fonction store() ??
OOo 2.03 sur Mac OS X
-- Pascal Robert Spécialiste en informatique/IT Specialist OS communications informatiques inc. +1 450 676-1238 x28 http://www.os.ca







