Bonjour à tous,
je débute en mailing list, j'espére bien m'y prendre, n'hésitez pas à me 
dire si je fais des erreurs. ^^

Je suis actuellement en train de découvrir la programmation en java 
couplée à OpenOffice. Je crée des fonctions pour manipuler des fichiers, 
je suis en train de travailler sur une fonction qui permet de fusionner 
des fichiers à partir d'un tableau d'url. J'ai trouvé pour ce faire la 
fonction insertDocumentFromURL mais j'ai un problème de mise en forme.

Je commence par créer un fichier vide puis j'y insert mes fichiers un par 
un en ajoutant un saut de page entre chaque insersion. Mon problème est le 
suivant : je perd mes marges et mon pied de page. 
J'ai remarqué qu'en partant d'un document existant à la place d'un 
document vide pour faire mes insertions, je conserve les marges et les 
pieds de page du document de base mais j'ai alors un soucis dans le cas de 
concaténation de fichiers qui ne sont pas basés sur la même mise en page.

Pour éclairer un peu mon texte voici mon code :

// Création des propriétés du document de travail temporaire
PropertyValue[] propDepart = new PropertyValue[1];
propDepart[0] = new PropertyValue();
propDepart[0].Name = "Hidden";
propDepart[0].Value = Boolean.TRUE;
 
//Création du fichier temporaire sur lequel on fera les insertions
XComponent xComp = xComponentLoader.loadComponentFromURL(
"private:factory/swriter","_blank",0,propDepart);
 
//On charge le fichier temporaire
XTextDocument xTextDoc = 
(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, xComp);
 
XText xText=null;
XTextCursor xTextCursor=null;
XTextRange xTextRange=null;
XPropertySet xPropertySet=null;
 
//On crée un curseur permettant le parcourt de ce document
xText = xTextDoc.getText();
xTextCursor = xText.createTextCursor();

//On insert le fichier courant de la liste des fichiers dans le fichier de 
travail temporaire (en fin de fichier)
XDocumentInsertable xDocInsert = (XDocumentInsertable)
        UnoRuntime.queryInterface(XDocumentInsertable.class, xTextCursor); 
 
 
try {
        //On parcourt la liste des fichiers à fusionner
        for(int i=0;i<listeFichiers.length;i++){

                //On place le curseur à la fin du document
                xTextCursor.gotoEnd(false);

                // On insert le séparateur des deux documents
 
xTextCursor.getText().insertControlCharacter(xTextCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,
false);
 
                //On place le curseur à la fin du document
                xTextCursor.gotoEnd(false);
 
                if(i!=0){
                        //On crée la propriété permettant le saut de page
                        xPropertySet = (com.sun.star.beans.XPropertySet)
 UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class
,xTextCursor);
 
                        //On fait le saut de page 
                                xPropertySet.setPropertyValue("BreakType"
,com.sun.star.style.BreakType.PAGE_AFTER);
 
                        //On place le curseur à la fin du document
                        xTextCursor.gotoEnd(false);
 
                        //On insert un séparateur
 
xTextCursor.getText().insertControlCharacter(xTextCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,
false);
                 } 
 
                //On place le curseur à la fin du document
                xTextCursor.gotoEnd(false);
 
                //On insert le document
                xDocInsert.insertDocumentFromURL("file:///"
+listeFichiers[i], new PropertyValue[0]);
                 
                //On place le curseur à la fin du document
                xTextCursor.gotoEnd(false); 
        } 
}


Je pense que la fin de paragraphe et le saut de page ne suffisent pas à 
séparer deux documents pour séparer deux mises en page différentes.
En manipulant OpenOffice j'ai vu qu'il y avait moyen de créer des sections 
avec chacune sa propre mise en page, je suppose qu'il est donc possible de 
créer des sections avant de faire l'insertion de chaque document. Mais je 
n'ai pas trouvé comment faire et surtout comment récupérer la mise en page 
d'un document pour la réinsérer.

Quelqu'un aurait-il une solution pour conserver les marges et pieds de 
pages de mes documents ? en utilisant les sections ou même en faisant la 
fusion d'une autre façon.

Répondre à