Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


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.