Hi Mikos,
Thank you for your emails and suggestions thus far. I've played around
with this some more and one question remains.
If I get the actual index object:
indeces = document.getDocumentIndexes()
toc = indeces.getByName('Table of Content1') # Assume it exists!
and then I create a text range of the paragraphs that make up the ToC:
index_pars = toc.Anchor
index_cursor = document.Text.createTextCursorByRange(index_pars)
index_parenum = index_cursor.createEnumeration()
while index_parenum.hasMoreElements():
index_par = index_parenum.nextElement()
# index_par is a paragraph (XTextContext) that's a single in in the ToC
How can I correlate these index_par objects with the paragraphs that I
visit using the document's paragraph enumeration:
parenum = document.Text.createEnumeration()
while parenum.hasMoreElements():
par = parenum.nextElement()
# par is a paragraph (XTextContext) in the document
At some point a given `par` and `index_par` represent the same
paragraph in the document, but how do I know? Or does such an
association not or very loosely exist?
Cheers,
Jens
On Thu, Dec 07, 2017 at 09:58:24AM +0100, Miklos Vajna wrote:
Hi Jens,
On Thu, Dec 07, 2017 at 06:04:08AM +0100, Jens Tröger <jens.troeger@light-speed.de> wrote:
While walking all paragraphs of a Writer document and visiting their text
content, I come across text portions (the Heading N) which have Bookmarks
whose name is something like “_Toc263250771”. However, when I walk the
paragraphs and text portions that actually make up the ToC of the document
itself, I see no indication or reference to these bookmarks.
Let's say you have a ToC, then a Heading 1 paragraphs, Foo.
Then the ToC refers to hidden RefHeading bookmark for Foo. You can see
this reference at an UNO API level. Basic code for this:
oParas = ThisComponent.Text.createEnumeration
oPara = oParas.nextElement ' Table of Contents
oPara = oParas.nextElement ' Foo
oPortions = oPara.createEnumeration
oPortion = oPortions.nextElement
xray oPortion.HyperlinkURL ' gives #__RefHeading___Toc...
If you want to see the bookmarks the ToC refers to, it's similar:
...
oPara = oParas.nextElement ' Foo
oPortions = oPara.createEnumeration
oPortion = oPortions.nextElement
xray oPortion.TextPortionType ' gives Bookmark
xray oPortion.Bookmark.Name ' gives #__RefHeading___Toc...
In most cases if you see some information serialized into ODT, then you
can assume the same information is available via the UNO API. You can
always read (most of) the ODT filter in xmloff/ to see what exact UNO
API is used to write a given ODT markup.
Regards,
Miklos
--
Jens Tröger
http://savage.light-speed.de/
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.