Hallo,
ich möchte mit einem OpenOffice-Basic-Makro ein Stichwortverzeichnis erstellen, bei welchem die Seitenzahlen als Hyperlinks gestaltet sind die auf die betreffenden Textstellen verweisen. (Das so behandelte Dokument soll mittels extendedPDF von JDiSoftware in das PDF-Format konvertiert werden.)
Deshalb meine Frage:
Wie kann man den druckbaren Inhalt eines Stichwortverzeichnisses als normalen (formatierten) Text in ein Dokument einfügen? Oder wenn das nicht geht: Wie gelangt man an sämtliche Inhalte (auch Schlüsselwörter und die Eigenschaft ob es sich um einen Hauptindexeintrag handelt) von allen Index-Marken innerhalb eines Dokumentes.
Ein weiteres Problem währe zu den Ankern oder der Position der Index-Marken zu gelangen um Text-Cursor zu erzeugen.
Oder kommt dieses Feature mit OpenOffice 2.0?
Stichwortverzeichnisse als normaler Text (Anfänderfrage)
Moderator: Moderatoren
Hi MKmitta,
ich hab mal ein bisschen herumexperimentiert:
Wie man sieht, ist ein Verzeichnis ein einziger Textblock, also kann man nicht auf einzelne Worte zugreifen um Links aus ihnen zu machen. Die einzige Moeglichkeit, die mir einfällt, ist es das Verzeichnis nach dem aktualisieren zu parsen und für jedes wort, dass mit einem stichwort zusammenfaellt die Links auf die Anchor-Eigenschaft zu setzen.
Zap
ich hab mal ein bisschen herumexperimentiert:
Code: Alles auswählen
sub Stichwoerter
dim verzeichnisse
dim verzeichnis_namen
doc = ThisComponent
verzeichnisse = doc.getDocumentIndexes
verzeichnis_namen = verzeichnisse.getElementNames()
' alle Verzeichnisse anzeigen lassen
msgbox Join(verzeichnis_namen, CHR$(10))
' ein Verzeichnis ist eine Sammlung von Absaetzen
' wird also durch ein Textintervall beschrieben
' mal den Hintergrund auf gruen setzen
verzeichnisse.getByIndex(0).anchor.charbackcolor = RGB(0,255,0)
Dim s as String
Dim i as integer
' durch das Verzeichnis selber laufen. Leider sind die eintraege selber
' nur Text, a
AbsatzEnum = verzeichnisse.getByIndex(0).Anchor.CreateEnumeration
do while AbsatzEnum.hasmoreElements()
Absatz = AbsatzEnum.nextElement()
WortEnum = Absatz.CreateEnumeration()
i = i+1
s = s & "Absatz " & CStr(i) &"---------" & CHR$(10)
do while WortEnum.hasmoreElements()
Wort = WortEnum.nextElement()
s = s & wort.TextPortionType & CHR$(10)
loop
loop
msgbox s
' die verankerung im dokument. auf roten hintergrund setzen
marken = verzeichnisse.getByIndex(0).documentindexmarks
s = ""
for i = 0 to UBound(marken)
s = s & marken(i).anchor.string & CHR$(10)
marken(i).anchor.charbackcolor = RGB(255,0,0)
next i
msgbox s
end sub
Zap