Hallo Svante,
Thank You! It works great.
For Youa nice weekend, too.
Georg
2015-10-09 14:37 GMT+02:00 Svante Schubert <[email protected]>:
> Hello Georg,
>
> you should better call the following method at the TextSelection:
> tsel.applyStyle(stls.getStyle(SUBSCRIPT, OdfStyleFamily.Text));
>
> There seems to be still a problem with automatic/hard styles being added
> instead of using the template ones, but I am running out of time, sorry ;)
>
> I added my complete test code, that you might want to insert for instance
> into
> org.odftoolkit.simple.text.ParagraphStyleHandlerTest for debugging
> (Note: I ususally disable the other tests by adding @Ignore above their
> method signature)
> The output ODT will be added to the folder:
> <odftoolkit20151009>/simple/target/test-classes
>
> //Java Code - Start
>
> private static final String SUPERSCRIPT = "superscript";
> private static final String SUBSCRIPT = "subscript";
>
> private OdfOfficeStyles addDocumentStyles(TextDocument tdoc) {
> OdfOfficeStyles stls = tdoc.getOrCreateDocumentStyles();
> OdfStyle ostyle = stls.newStyle(SUBSCRIPT, OdfStyleFamily.Text);
> OdfStylePropertiesBase styleProp
> =
> ostyle.getOrCreatePropertiesElement(OdfStylePropertiesSet.TextProperties);
>
>
> styleProp.setOdfAttributeValue(OdfTextProperties.TextPosition.getName(),
> "sub 58%");
>
> ostyle = stls.newStyle(SUPERSCRIPT, OdfStyleFamily.Text);
> styleProp
> =
> ostyle.getOrCreatePropertiesElement(OdfStylePropertiesSet.TextProperties);
>
>
> styleProp.setOdfAttributeValue(OdfTextProperties.TextPosition.getName(),
> "super 58%");
>
> return stls;
> }
>
> @Test
> public void testSuperScript() {
> try {
> TextDocument targetDoc = TextDocument.newTextDocument();
> Section s1 = targetDoc.appendSection("S1");
> Paragraph p1 = s1.addParagraph("This is subscripted. This is
> superscripted. ");
> OdfOfficeStyles stls = addDocumentStyles(targetDoc);
>
> TextSelection tsel;
> tsel = TextSelection.newTextSelection(null, "sub",
> p1.getOdfElement(), 8);
> tsel.applyStyle(stls.getStyle(SUBSCRIPT, OdfStyleFamily.Text));
>
> tsel = TextSelection.newTextSelection(null, "super",
> p1.getOdfElement(), 29);
> tsel.applyStyle(stls.getStyle(SUPERSCRIPT,
> OdfStyleFamily.Text));
>
>
> targetDoc.save(ResourceUtilities.newTestOutputFile("testSuperSubscript.odt"));
> } catch (Exception e) {
> LOGGER.log(Level.SEVERE, e.getMessage(), e);
> Assert.fail(e.getMessage());
> }
> }
>
> //Java Code - End
>
> Have a nice week-end,
> Svante
>
> On Fri, Oct 9, 2015 at 11:44 AM, Georg Füchsle <[email protected]>
> wrote:
>
> > In order to format a single character or word in continuous text I tried
> > the following:
> >
> > - I created a global style "superscript"
> >
> >
> > Javacode:
> > private static final String SUPERSCRIPT = "superscript";
> > private static final String SUBSCRIPT = "subscript";
> >
> > public static void addDocumentStyles(TextDocument tdoc)
> > {
> > OdfOfficeStyles stls = tdoc.getOrCreateDocumentStyles();
> > OdfStyle ostyle = stls.newStyle(SUBSCRIPT, OdfStyleFamily.Text);
> > OdfStylePropertiesBase styleProp =
> >
> ostyle.getOrCreatePropertiesElement(OdfStylePropertiesSet.TextProperties);
> >
> > styleProp.setOdfAttributeValue(OdfTextProperties.TextPosition.getName(),
> > "sub 58%");
> >
> > ostyle = stls.newStyle(SUPERSCRIPT, OdfStyleFamily.Text);
> > styleProp =
> >
> ostyle.getOrCreatePropertiesElement(OdfStylePropertiesSet.TextProperties);
> >
> > styleProp.setOdfAttributeValue(OdfTextProperties.TextPosition.getName(),
> > "super 58%");
> > }
> >
> > - second I created a Paragraph selected some text and set the style to
> > "superscript":
> >
> > Javacode:
> > Section s1 = s1 = target.appendSection("S1");
> > Paragraph p1 = s1.addParagraph("This is subscripted. This is
> > superscripted. ");
> >
> > TextSelection tsel;
> > Span tselSpan1;
> >
> > tsel = TextSelection.newTextSelection(null, "sub",
> > p1.getOdfElement(), 8);
> > tselSpan1 = Span.getInstanceof(tsel.createSpanElement());
> >
> >
> >
> tselSpan1.getStyleHandler().getStyleElementForWrite().setStyleNameAttribute(SUBSCRIPT);
> >
> > tsel = TextSelection.newTextSelection(null, "super",
> > p1.getOdfElement(), 29);
> > tselSpan1 = Span.getInstanceof(tsel.createSpanElement());
> >
> >
> >
> tselSpan1.getStyleHandler().getStyleElementForWrite().setStyleNameAttribute(SUPERSCRIPT);
> >
> >
> >
> >
> > - My generated od-Document does not display super- and subscripted
> > characters:
> >
> > I unzipped the document and saw in styles.xml the global styles:
> >
> > in styles.xml the my global styles are existent:
> >
> > </office:styles>
> >
> > ......
> > <style:style style:family="text" style:name="subscript">
> > <style:text-properties style:text-position="sub 58%"/>
> > </style:style>
> > <style:style style:family="text" style:name="superscript">
> > <style:text-properties style:text-position="super 58%"/>
> > </style:style>
> > </office:styles>
> >
> >
> > I examined the content.xml:
> > In content.xml these my global styles are written empty once more:
> >
> > <office:automatic-styles>
> >
> > .......
> > <style:style style:family="text" style:name="subscript"/>
> > <style:style style:family="text" style:name="superscript"/>
> > </office:automatic-styles>
> >
> >
> > And the generated textspans reference 'wrong' text-style-names:
> >
> > <text:section text:display="true" text:name="S1"
> text:style-name="a2921cb">
> > <text:p>This is <text:span
> > text:style-name="af1df46">sub</text:span>scripted. This is <text:span
> > text:style-name="a4007fe">super</text:span>scripted. </text:p>
> > </text:section>
> >
> >
> > When I remove the generated empty styles in content.xml and correct the
> > references of the text:span- styles. the characters are displayed in sub-
> > and superscript.
> >
> > What do I wrong in the Javacode?
> >
> > Thanks in advance
> >
> > Gio
> >
>