Seite 1 von 1

Wie Grafik-Link in Absatz auslesen?

Verfasst: Mi, 06.11.2013 17:46
von Apollo102
Hi,

ich habe folgendes Problem:

Es gibt sehr viele WORD Dokumente die nun weiter in LibreOffice bearbeitet und gepflegt werden sollen. Die WORD Dateien beinhalten sehr viele Bilder die lediglich verlinkt wurden. Die Verlinkung hängt an einem Zeichen pro Absatz. Es kann immer nur ein Bild pro Absatz geben.

Nun möchte ich die Links zu den Grafiken absatzbezogen auslesen (wegen Export Absatztext und dazugehörigen Link zur Grafik).

Verstanden habe ich, dass in Libo Grafiken Teile der Drawpage sind und sie "quasi" auf dem Dokument liegen und an einer speziellen Stelle "verankert" werden. Ansonsten sind es eigenstandige Objekte mit eigenen Eigenschaften und Methoden. Die URL kann ich als Eigenschaft dort auslesen. Beispiel:

Code: Alles auswählen

oDP = oDoc.getDrawPage()
For i = 0 To oDP.getCount() - 1
		oGraph = oDP.getByIndex(i)
		URL = oGraph.GraphicURL
Next i

Ok so würde ich an die URL kommen. Allerdings bekomme ich nicht die Verbindung zum Absatz hin.

Wenn ich die Absatzteile untersuche, dann kann ich über TextPortionType = "Frame" herausfinden, dass am Absatzteil ein Grafik hängt (TextPortionType - gibt bei Grafik "Frame" zurück - siehe Tabelle 128 im Buch "OpenOffice.org-Makros Erklärt" – dort jedoch Hinweis auf Bug #24444).

Code: Alles auswählen

oSecEnum = oPar.createEnumeration()
		
		Do While oSecEnum.hasMoreElements()
			oParSection = oSecEnum.nextElement()
			if  (oParSection.TextPortionType = "Frame") then 

				' Frage: kann ich hier auf eine Eigenschaft oder Methode zugreifen?
			End if
		Loop
				
	



Wie bekomme ich nun heraus, welche Grafik dort hängt. Ich habe bereits vergebens versucht mit Xray die Absatzteile nach entsprechenden Eigenschaften oder Methoden zu analysieren.

Wer kann mir einen guten Hinweis geben?

Vielen Dank

Gruß

Apollo

Re: Wie Grafik-Link in Absatz auslesen?

Verfasst: Mi, 06.11.2013 18:41
von F3K Total
Hi,
wenn die Bilder alle am Absatz verankert sind, sollte dies helfen:

Code: Alles auswählen

Sub S_get_Text_of_Paragraph_with_Graphic
    ocursor = thiscomponent.Text.createTextCursor
    oGraphicObjectsEnumeration = thiscomponent.GraphicObjects.createEnumeration
    while oGraphicObjectsEnumeration.hasmoreelements
        oGraphicObject = oGraphicObjectsEnumeration.nextelement
        sURL = oGraphicObject.GraphicURL
        oAnchor = oGraphicObject.Anchor
        ocursor.gotorange(oAnchor,false)
        ocursor.gotoEndOfParagraph(true)
        msgbox "URL: "+chr(13)+sURL+chr(13)+chr(13)+"TEXT: "+chr(13)+ocursor.string
    wend
End Sub
Gruß R

Re: Wie Grafik-Link in Absatz auslesen?

Verfasst: Mi, 06.11.2013 22:07
von Apollo102
F3K Total hat geschrieben:Hi,
wenn die Bilder alle am Absatz verankert sind, sollte dies helfen:

Code: Alles auswählen

Sub S_get_Text_of_Paragraph_with_Graphic
    ocursor = thiscomponent.Text.createTextCursor
    oGraphicObjectsEnumeration = thiscomponent.GraphicObjects.createEnumeration
    while oGraphicObjectsEnumeration.hasmoreelements
        oGraphicObject = oGraphicObjectsEnumeration.nextelement
        sURL = oGraphicObject.GraphicURL
        oAnchor = oGraphicObject.Anchor
        ocursor.gotorange(oAnchor,false)
        ocursor.gotoEndOfParagraph(true)
        msgbox "URL: "+chr(13)+sURL+chr(13)+chr(13)+"TEXT: "+chr(13)+ocursor.string
    wend
End Sub
Gruß R
Hallo R,

vielen Dank für deine schnelle Antwort.

Ich habe mal damit getestet. Ich bekomme zwar die entsprechenden URL's nacheinander in den erscheinenden MsgBox's aufgelistet. Allerdings bleibt der Text jeweils leer.

Ich habe mal mit Xray das oGraphicObject angeschaut. Anschließend habe ich mal versucht den Text mit nachfolgenden Code auszugeben:

Code: Alles auswählen

 oGraphicObject.Anchor.Text.String
Ich erhalte dann den Text aus dem gesamten Dokument.

Entweder mache ich noch etwas falsch oder ich bekomme so keinen Bezug zum dazugehörigen Absatz hin.

Was mache ich evtl. falsch?

Vielen Dank.

Gruß

Apollo

Re: Wie Grafik-Link in Absatz auslesen?

Verfasst: Mi, 06.11.2013 22:10
von F3K Total
Kannst Du ein Beispieldokument hochladen?
Was da mit .doc so passiert, ist schwer einzuschätzen.
Oder gibt es eventuell nur einen Absatz und die Bilder sind anders verankert?
Gruß R

Re: Wie Grafik-Link in Absatz auslesen?

Verfasst: Mi, 06.11.2013 22:46
von Apollo102
F3K Total hat geschrieben:Kannst Du ein Beispieldokument hochladen?
Was da mit .doc so passiert, ist schwer einzuschätzen.
Oder gibt es eventuell nur einen Absatz und die Bilder sind anders verankert?
Gruß R
Hi R,

anbei mal eine Beispieldatei.

Danke

Gruß

Apollo

Re: Wie Grafik-Link in Absatz auslesen?

Verfasst: Mi, 06.11.2013 22:52
von F3K Total
Hi,
die Bilder sind als Zeichen verankert, eine Zeile mehr hilft:

Code: Alles auswählen

Sub S_get_Text_of_Paragraph_with_Graphic
    ocursor = thiscomponent.Text.createTextCursor
    oGraphicObjectsEnumeration = thiscomponent.GraphicObjects.createEnumeration
    while oGraphicObjectsEnumeration.hasmoreelements
        oGraphicObject = oGraphicObjectsEnumeration.nextelement
        sURL = oGraphicObject.GraphicURL
        oAnchor = oGraphicObject.Anchor
        ocursor.gotorange(oAnchor,false)
        ocursor.gotoStartOfParagraph(false)
        ocursor.gotoEndOfParagraph(true)
        msgbox "URL: "+chr(13)+sURL+chr(13)+chr(13)+"TEXT: "+chr(13)+ocursor.string
    wend
End Sub
Gruß R

Re: Wie Grafik-Link in Absatz auslesen?

Verfasst: Mi, 06.11.2013 23:23
von Apollo102
F3K Total hat geschrieben:Hi,
die Bilder sind als Zeichen verankert, eine Zeile mehr hilft:

Code: Alles auswählen

Sub S_get_Text_of_Paragraph_with_Graphic
    ocursor = thiscomponent.Text.createTextCursor
    oGraphicObjectsEnumeration = thiscomponent.GraphicObjects.createEnumeration
    while oGraphicObjectsEnumeration.hasmoreelements
        oGraphicObject = oGraphicObjectsEnumeration.nextelement
        sURL = oGraphicObject.GraphicURL
        oAnchor = oGraphicObject.Anchor
        ocursor.gotorange(oAnchor,false)
        ocursor.gotoStartOfParagraph(false)
        ocursor.gotoEndOfParagraph(true)
        msgbox "URL: "+chr(13)+sURL+chr(13)+chr(13)+"TEXT: "+chr(13)+ocursor.string
    wend
End Sub
Gruß R
Hallo R,

Danke! Das funktioniert schon mal.

Supi.

Gruß

Apollo