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();
}
}