LibreOffice Impress: Alle Schriftarten im Dokument ändern

Logo LibreOffice Impress

Ich hatte das Problem, dass ich in einer LibreOffice Impress-Präsentation, die in einer anderen Anwendung erstellt wurde und deren Struktur … ein wenig unschön war (um es mal vorsichtig auszudrücken), alle Schriftarten auf Ubuntu ändern wollte. Nun arbeite ich zwar schon sehr lange mit LibreOffice, aber nicht mit Impress. Eine Websuche ergab unterschiedliche Ergebnisse, die aber alle nicht funktionierten. Änderungen an den Masterpages wurden ebenso wenig auf die Folien übernommen, wie Änderungen in den Formatvorlagen. Es sah so aus, als seien die Font-Anweisungen an allen Elementen hinterlegt worden. Ein Teil der Wahrheit ist aber wohl auch, dass diese Funktionen in Impress dringend überarbeitungswürdig zu sein scheinen.

Lösung war dann ein Makro:

Sub AlleSchriftenAufUbuntu()
    Dim oDoc As Object
    Dim oSlide As Object
    Dim oShape As Object
    Dim i As Integer, j As Integer
    Dim oText As Object
    Dim oCursor As Object
    Dim neueSchrift As String
    
    ' HIER DIE NEUE SCHRIFTART EINTRAGEN:
    neueSchrift = "Ubuntu"
    
    oDoc = ThisComponent
    
    ' Durch alle Folien iterieren
    For i = 0 To oDoc.getDrawPages().getCount() - 1
        oSlide = oDoc.getDrawPages().getByIndex(i)
        
        ' Durch alle Objekte auf der Folie iterieren
        For j = 0 To oSlide.getCount() - 1
            oShape = oSlide.getByIndex(j)
            
            ' Prüfen, ob das Objekt Text enthält
            If oShape.supportsService("com.sun.star.drawing.Text") Then
                oText = oShape.getText()
                oCursor = oText.createTextCursor()
                oCursor.gotoStart(False)
                oCursor.gotoEnd(True)
                
                ' Schriftart ändern - egal welche es vorher war
                oCursor.CharFontName = neueSchrift
            End If
        Next j
    Next i
    
    MsgBox "Alle Schriftarten wurden auf Ubuntu geändert!"
End Sub

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen