1 message in org.openoffice.fr.prog[prog] Générer une table des matières...
FromSent OnAttachments
Joël VimenetOct 23, 2008 1:04 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] Générer une table des matières pour une annexeActions...
From:Joël Vimenet (joel@anyware-tech.com)
Date:Oct 23, 2008 1:04:47 am
List:org.openoffice.fr.prog

Bonjour, J'ai un document qui contient des annexes, et je souhaiterais écrire une macro permettant de générer une table des matières pour une annexe. J'arrive à créer la table des matières au bon endroit dans mon annexe, le problème est que soit elle est vide soit elle contient les titres de tous le document, pas seulement de l'annexe. Je voudrais qu'elle ne contienne que les titres de l'annexe, sachant qu'ils ont des styles particuliers ("Annexe Titre 1", "Annexe Titre 2", etc...)

J'arrive à faire ça depuis l'ihm en créant un index, en cochant "Créer depuis styles supplémentaires" dans le premier onglet et en assignant à chaque niveau le style qui correspond.

J'ai pas mal cherché sur le net, et j'ai trouvé la propriété LevelParagraphStyles du service ContentIndex. Il semblerait que ça permette de définir les styles de titre pris en compte dans l'index. Le problème c'est que je ne sais pas comment l'utiliser, j'ai essayé ce bout de code :

annexe = leDoc.TextSections.getByName(nomAnnexe) tocAnnexe = leDoc.createInstance("com.sun.star.text.ContentIndex") with tocAnnexe .Name(nomAnnexe+"_toc") .CreateFromOutline = false .CreateFromChapter = true .CreateFromLevelParagraphStyles = true .CreateFromMarks = false .Title= "Sommaire" .ParaStyleLevel1= "Annexe Titre 1" .ParaStyleLevel2= "Annexe Titre 2" .ParaStyleLevel3= "Annexe Titre 3" .ParaStyleLevel4= "Annexe Titre 4" .IsProtected= true end with

dim styles styles = tocAnnexe.LevelParagraphStyles styles.replaceByIndex(1,"Annexe Titre 1") styles.replaceByIndex(2,"Annexe Titre 2") styles.replaceByIndex(3,"Annexe Titre 3") styles.replaceByIndex(4,"Annexe Titre 4")

'create the cursor from the bookmark anchor dim oCursor oCursor = leDoc.getText().createTextCursor() oCursor.gotoRange(annexe.anchor.start,false) oCursor.gotoNextParagraph(false)

'insert the toc leDoc.getText().insertTextContent(oCursor,tocAnnexe,false)

Ce code me fait une erreur à la ligne

styles.replaceByIndex(1,"Annexe Titre 1")

IllegalArgumentException

Si j'enlève la partie dim styles styles = tocAnnexe.LevelParagraphStyles styles.replaceByIndex(1,"Annexe Titre 1") styles.replaceByIndex(2,"Annexe Titre 2") styles.replaceByIndex(3,"Annexe Titre 3") styles.replaceByIndex(4,"Annexe Titre 4")

ça me crée une table des matières vide.

J'ai trouvé un mail sur le même sujet (mis à part que je veux le faire en Basic et lui en java) sur la mailling list dev http://www.mail-archive.com/dev@openoffice@ mais il n'a pas reçu de réponse.

Je suis preneur de toute aide/exemple/lien/conseil :) Merci d'avance

-------------------------------------------------------------------------------------- Joël Vimenet joel@anyware-tech.com

Anyware Technologies Lake Park ZAC de l'Hers - Allée du Lac BP 87216-31672 Labège Cedex France www.anyware-tech.com

Ce message et toutes les pièces jointes (le "Message") sont confidentiels et établis à l'intention exclusive de ses destinataires. Toute modification, édition, utilisation ou diffusion non autorisée est interdite. Anyware Technologies et sa maison mère Wavecom déclinent toute responsabilité au titre de ce Message s'il a été altéré, déformé, falsifié ou édité, diffusé sans autorisation.