Hi All,
      I am tring to use UNO API create  and load an Author field, I found
below difference.
1. Author Field created by UNO API, after save the document od MS Doc
format, field will be lost
2. Author Field create by UI Insert->Fields->Author, when access the field
by UNO API, there is no Property  Name "Content" but has Porpety Name
"Author"

Is this a UNO API bug?

 Property Name list of Author Field created by UI
AnchorTypes=[Lcom.sun.star.text.TextContentAnchorType;@27391d
IsFixed=false
TextWrap=com.sun.star.text.WrapTextMode@1b1aa65
CurrentPresentation=Author AOO
IsFieldUsed=true
IsFieldDisplayed=true
AnchorType=com.sun.star.text.TextContentAnchorType@af8358
Author=Author AOO

Propoerty Name List of Author Field Created by UNO API

AnchorTypes=[Lcom.sun.star.text.TextContentAnchorType;@29428e
IsFixed=true
TextWrap=com.sun.star.text.WrapTextMode@3901c6
CurrentPresentation=Author Test AOO
IsFieldUsed=true
IsFieldDisplayed=true
AnchorType=com.sun.star.text.TextContentAnchorType@edc3a2
FullName=false
Content=Author Test AOO


Below is my code:
public void createAndLoadAuthorField(XComponent component, String author) {
        XMultiServiceFactory sevriceFactory = (XMultiServiceFactory)
UnoRuntime.queryInterface(XMultiServiceFactory.class, component);
        XTextField authorField;
        try {
            authorField =
(XTextField)UnoRuntime.queryInterface(XTextField.class,
sevriceFactory.createInstance("com.sun.star.text.textfield.Author"));
            XPropertySet props =
(XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, authorField);
            props.setPropertyValue("Content", author);



 document.getText().insertTextContent(document.getText().getEnd(),
                     authorField, true);
             XTextFieldsSupplier fieldsSupplier =
UnoRuntime.queryInterface(XTextFieldsSupplier.class, document);
             XEnumerationAccess xEnumeratedFields =
fieldsSupplier.getTextFields();

                XEnumeration enumeration =
xEnumeratedFields.createEnumeration();
                while (enumeration.hasMoreElements()) {
                          Object field =  enumeration.nextElement();

                        XPropertySet props2 =
(XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, field);
                        XPropertySetInfo info = props2.getPropertySetInfo();
                        Property[] pp = info.getProperties();
                        for (Property p : pp) {
                            System.out.println(p.Name + "=" +
props2.getPropertyValue(p.Name));
                        }
                }

        } catch (com.sun.star.uno.Exception e) {
            e.printStackTrace();
        }
    }

Reply via email to