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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]