[Libreoffice-bugs] [Bug 116960] New: Fieldmarks can't be enumerated via getTextFields / getBookmarks
bugzilla-daemon at bugs.documentfoundation.org
bugzilla-daemon at bugs.documentfoundation.org
Thu Apr 12 07:25:01 UTC 2018
https://bugs.documentfoundation.org/show_bug.cgi?id=116960
Bug ID: 116960
Summary: Fieldmarks can't be enumerated via getTextFields /
getBookmarks
Product: LibreOffice
Version: 6.0.3.2 release
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: medium
Component: sdk
Assignee: libreoffice-bugs at lists.freedesktop.org
Reporter: ttstenner at gmail.com
Description:
Most citation processors (Endnote, Zotero, Mendeley) insert fields into Word
documents to store citation data. Libreoffice repesents these as Fieldmarks
(com.sun.star.text.Fieldmark) and can create them just fine using UNO but not
enumerate them.
Steps to Reproduce:
(see also https://stackoverflow.com/q/49728663/73299,
https://ask.libreoffice.org/en/question/30175/how-access-fieldmarks-with-api/)
1. start libreoffice (libreoffice --writer
--accept="socket,host=localhost,port=2002;urp;")
2. Create a text with a fieldmark:
import uno
from pythonscript import ScriptContext
resolver =
uno.getComponentContext().ServiceManager.createInstance('com.sun.star.bridge.UnoUrlResolver')
# start libreoffice as
# libreoffice --writer --accept="socket,host=localhost,port=2002;urp;"`
client =
resolver.resolve('uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
XSCRIPTCONTEXT = ScriptContext(client, None, None)
doc = XSCRIPTCONTEXT.getDocument()
def cursor():
return doc.getCurrentController().getSelection().getByIndex(0)
t = doc.getText()
# insert text before field
t.insertString(cursor(), 'Fieldmark-Start|', False)
# create the field
field = doc.createInstance('com.sun.star.text.Fieldmark')
fieldcursor = cursor()
# add the String 'Field contents' to the document
fieldcursor.setString('Field contents')
# actually insert the field in the document (linked to the string)
field.attach(fieldcursor)
field.setFieldType('Testfieldtype')
field.setName('Fieldname')
# insert text after the field
t.insertString(cursor(), '|Fieldmark-End', False)
3. try to enumerate all text fields to get the inserted Fieldmark:
XSCRIPTCONTEXT.getDocument().getTextFields()
Actual Results:
The returned enumeration has no elements
Expected Results:
An enumeration with one element: the just inserted Fieldmark
Reproducible: Always
User Profile Reset: No
Additional Info:
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101
Firefox/59.0
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice-bugs/attachments/20180412/59e4678c/attachment.html>
More information about the Libreoffice-bugs
mailing list