ich habe eine PDF-Datei eingelesen und diese Übersetzung als Draw-Datei abgelegt.
Nun möchte ich diese Draw-Datei die nach der Übersetzung aus vielen Textrahmen besteht
in eine echte Writer-Datei überführen, indem ich die einzelnen Textrahmen auslese.
Nachdem ich die Draw-Datei per Makro angewählt habe un diese sich auch öffnet, möchte ich
die Inhalte der Textrahmen auslesen.
Hier scheitere ich daran, dass die Anweisung "ThisCompunent" sich auf die Makro-Seite und nicht
wie von mir gewünscht auf das geöffnete Draw-Dokument bezieht.
Wie mache ich das Draw-Dokument per Makro zum "ThisCompunent" ?
Meinen Quellcode lege ich mal bei.
Code: Alles auswählen
Sub Textfelder_auslesen
Dim oFilePicker As Object, oDoc as Object, FileName As String
Dim oQuelldatei as Object, oDrawPage As Object, oShape As Object, oText As Object
Dim i As Integer
FileName = ""
'FilePicker initialization
oFilePicker = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
oFilePicker.DisplayDirectory = ConvertToURL("C:\Path\To\SomeDir")
oFilePicker.appendFilter("Draw Documents", "*.odg")
oFilePicker.CurrentFilter = "Draw Documents"
oFilePicker.Title = "Select a Draw document"
'execution and return check (OK?)
If oFilePicker.execute = _
com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
FileName = oFilePicker.Files(0)
'Die Quelldatei öffnen
oQuelldatei = StarDesktop.loadComponentFromURL(FileName, "_default", 0, Array())
End If
oDoc = ThisComponent ' Aktuelles Dokument
oDrawPage = oDoc.DrawPage ' Zugriff auf die Zeichnungsebene
' Durchlaufe alle Objekte auf der Zeichnungsebene
For i = 0 To oDrawPage.Count - 1
oShape = oDrawPage.getByIndex(i)
' Prüfe, ob es sich um einen Textrahmen handelt
If oShape.supportsService("com.sun.star.drawing.TextFrame") Then
' Textrahmen gefunden, Eigenschaften auslesen
Print "Textrahmen gefunden:"
Print " X-Position: " & oShape.XPos
Print " Y-Position: " & oShape.YPos
Print " Breite: " & oShape.Width
Print " Höhe: " & oShape.Height
' Textinhalt auslesen
oText = oShape.Text
Print " Text: " & oText.String
' Optional: Formatierung auslesen
' ... (Code zur Formatierungsabfrage) ...
End If
Next i
End Sub
Werner