Bien le bonjour à tous.
Donc mon problème réside dans le fait de mettre en gras ou en italique du texte que j'insère.
Je récupère des données de la base de données bibliographique que je souhaite afficher à l'écran en les "fomattant".
La partie récupération de données de la base se passe bien mais c'est lors de l'écriture dans le document que j'ai des problèmes.
Alors je voici mon code source (en partie. Je mettrais le tout si c'est nécessaire)
Et voici l'utilisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 protected void write(String data){ xTextDoc = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,oDoc); xText = xTextDoc.getText(); xTextRange = xText.getEnd(); XPropertySet xCursorProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextRange); // call setPropertyValue, passing in a Float object xCursorProps.setPropertyValue("CharWeight", new Float ( com.sun.star.awt.FontWeight.THIN)); xCursorProps.setPropertyValue("CharPosture", com.sun.star.awt.FontSlant.NONE); xTextRange.setString( data); } protected void writeBold(String data){ xTextDoc = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,oDoc); xText = xTextDoc.getText(); xTextRange = xText.getEnd(); // query the XPropertySet interface XPropertySet xCursorProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextRange); // call setPropertyValue, passing in a Float object xCursorProps.setPropertyValue("CharWeight", new Float ( com.sun.star.awt.FontWeight.BOLD)); xTextRange.setString( data); } protected void writeItalic(String data){ xTextDoc = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,oDoc); xText = xTextDoc.getText(); xTextRange = xText.getEnd(); // query the XPropertySet interface XPropertySet xCursorProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextRange); // call setPropertyValue, passing in a Float object xCursorProps.setPropertyValue("CharPosture", com.sun.star.awt.FontSlant.ITALIC); xTextRange.setString( data); }
Et voici l'affichage que j'obtiens ( en gros je vais pas tous faire c'est long)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 writeBold(author); write(" : "); writeItalic(title); write(" , "); write(adress); write(" ["); writeBold(editor); write("]"); write("\n");
Borges, Malte; Schumacher, Jörg; Redeker, Torsten : StarOffice 7 , []
Borges, Malte; Schumacher, Jörg; Redeker, Torsten : StarOffice 7.0 / OpenOffice.org Kompendium, m. 2 CD-ROMs , []
Böhm, Franz : StarOffice 7 kreativ , []
Le résultat que j'aimerais obtenir est
Borges, Malte; Schumacher, Jörg; Redeker, Torsten : StarOffice 7 , []
Borges, Malte; Schumacher, Jörg; Redeker, Torsten : StarOffice 7.0 / OpenOffice.org Kompendium, m. 2 CD-ROMs
, []
Böhm, Franz : StarOffice 7 kreativ , []
Alors voici mon problème.
Le texte reste en italique une fois que je suis passé par la méthode writeItalic, même si dans la méthode write je repasse à priori en NONE.
Et second problème pour annuler le gras, je dois mettre la constante com.sun.star.awt.FontWeight.THIN et pas com.sun.star.awt.FontWeight.NORMAL pour revenir à une épaisseure normale des caractères.
J'espère avoir été suffisamment clair.
Merci par avance pour votre aide,
J'avoue être débutant et ne pas trop savoir où chercher pour résoudre mon problème.
Partager