Seite 1 von 1

Writer Hyperlink auslesen

Verfasst: Do, 30.09.2010 06:37
von clag
Moin Kenner und Könner,

in einem Writer Dokument ist der erste Absatz (Überschrift )mit einem Hyperlink versehen diesen möchte ich auslesen.
(die Suche hier hat praktisch nur Calc bezogene Themen geliefert)

soweit ich bis jetzt herausgefunden habe ist das eine Eigenschaft von text ?
in den beiden, hiermit

Code: Alles auswählen

Enum = oDoc.Text.createEnumeration
TextElement = Enum.nextElement
FullTitle = TextElement.string

msgbox Fulltitle
xray Fulltitle

Titlelink = TextElement.text
xray Titlelink
erzeugten xray Ausgaben kann ich leider nicht erkennen, wo man ansetzen könnte :(

Kann mir jemand bitte sagen/zeigen wie ich die für einen Text hinterlegte "Sprungziel" URL auslesen ggf ändern kann ?

Danke schonmal fürs lesen

Re: Writer Hyperlink auslesen

Verfasst: Do, 30.09.2010 15:37
von DPunch
Aloha

Code: Alles auswählen

Enum = oDoc.Text.createEnumeration
ergibt eine Aufzählung aller Paragraphen. (Text: XEnumerationAccess)
Ein Paragraph enthält möglicherweise zwar nichts anderes als einen Hyperlink, aber er kann logischerweise selbst kein Hyperlink sein.
Du brauchst also noch eine Aufzählung aller Elemente in dem Paragraphen. (Paragraph: XEnumerationAccess)
Diese Elemente kannst Du dann auf ihre Eigenschaften HyperLinkURL / HyperLinkTarget / HyperLinkName untersuchen (oder diese ändern, wenn Du willst)

Code: Alles auswählen

Sub ShowFirstHyperlinkDetails
	oDoc = thiscomponent
	enumParagraphs = oDoc.Text.createEnumeration
	Do While enumParagraphs.hasMoreElements
		thisElement = enumParagraphs.nextElement
		If thisElement.SupportsService("com.sun.star.text.Paragraph") Then
			enumTextPortions = thisElement.createEnumeration
			Do While enumTextPortions.hasMoreElements
				thisTextPortion = enumTextPortions.nextElement
				bIsHyperlink = 		Len(thisTextPortion.HyperLinkName) > 0 _
								 OR Len(thisTextPortion.HyperLinkTarget) > 0 _
								 OR Len(thisTextPortion.HyperLinkURL) > 0
				If bIsHyperlink Then
					MsgBox  "HyperLinkName: " & thisTextPortion.HyperLinkName & Chr(13)& _
							"HyperLinkTarget: " & thisTextPortion.HyperLinkTarget & Chr(13)& _
							"HyperLinkURL: " & thisTextPortion.HyperLinkURL
					Exit Sub
				End If
			Loop
		End If
	Loop
	MsgBox "Kein Hyperlink gefunden"
End Sub

Re: Writer Hyperlink auslesen

Verfasst: Do, 30.09.2010 15:42
von clag
Hallo Leutz

eure Geduld im Schweigen hat sich gelohnt ich hab es selbst gefunden :lol:

Code: Alles auswählen

doc=thiscomponent
oText = Doc.getText()

oCursor = oText.createTextCursor()
oCursor.gotoStartofParagraph (false)
oCursor.gotoEndofParagraph (true)

oText = Doc.getText()
oCursor = oText.createTextCursor()
mainlink = oCursor.hyperlinkurl

print mainlink
ist das ok ? zumindest wird die web-Adresse "Link" an mainlink übergeben :)

Edit :
@ DPunch
deine Info ist ja sehr ausführlich, das beantwortet mir bestimmt noch einige meiner offenen Fragen
Die Frage wie finde ich überhaupt die Links ging mir nämlich schon durch den Kopf,
hier wusste ich ja zufällig, das es der/im ersten Absatz ist.

Danke !