BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Datei -> Eportieren per Makro ausführen, scheitert, da kein Export möglich

Alles zur Programmierung im LibreOffice.
Antworten
Benutzeravatar
Basilisk
Beiträge: 61
Registriert: Do 26. Jun 2014, 14:06

Datei -> Eportieren per Makro ausführen, scheitert, da kein Export möglich

Beitrag von Basilisk » Mo 29. Mai 2023, 20:00

Hallo,
ich habe eine odt geöffnet und führe dieses Makro aus

Code: Alles auswählen

Sub Main
Dim oDoc As Object
oDoc = ThisComponent
MsgBox oDoc.GetUrl(), 0, "oDoc.GetUrl()"
Dim bIsTextDoc As Boolean
bIsTextDoc = (oDoc.SupportsService("com.sun.star.text.TextDocument")) 'Test if it is a text document
If bIsTextDoc Then
    MsgBox "Das aktuelle Dokument ist ein Textdokument.", MB_OK + MB_ICONEXCLAMATION, "Textdokument"
End If
Dim bSupportsExport As Boolean
bSupportsExport = (oDoc.SupportsService("com.sun.star.document.ExportFilter")) 'Check if the document supports the export service
If Not bSupportsExport Then
    MsgBox "Das aktuelle Dokument unterstützt keine Exportfunktion.", MB_OK + MB_ICONEXCLAMATION, "Kein Export möglich"
End If
End Sub
Die erste MsgBox zeigt mir wie erwartet den Pfad, die zweite, dass es sich um ein Textdokument handelt, Das Problem ist die dritte, die sagt, es wäre kein Export möglich, obwohl ich von Hand den Export nach PNG einwandfrei durchführen kann. Was mache ich falsch?

Benutzeravatar
Basilisk
Beiträge: 61
Registriert: Do 26. Jun 2014, 14:06

Re: Datei -> Eportieren per Makro ausführen, scheitert, da kein Export möglich

Beitrag von Basilisk » So 23. Jul 2023, 16:43

Dann mach ich mal die Ingrid, denn zwar habe ich zum ursprünglichen Problem keinen Fortschritt vorzuweisen, aber phind.com, hat mir Folgendes geliefert, dass für Writerdokumente einwandfrei funktioniert.

Code: Alles auswählen

Sub StoreEachPageToPNG()
    Dim oDoc As Variant, oViewCursor As Variant
    Dim sOriginalURL As String, sFileURL As String, nPage As Integer
    Dim aFilterData(4) As New com.sun.star.beans.PropertyValue
    aFilterData(0).Name = "PixelWidth"
    aFilterData(0).Value = 2048
    aFilterData(1).Name = "PixelHeight"
    aFilterData(1).Value = Int(aFilterData(0).Value * Sqr(2))
    aFilterData(2).Name = "Compression"
    aFilterData(2).Value = 9
    aFilterData(3).Name = "InterlacedMode"
    aFilterData(3).Value = False
    aFilterData(4).Name = "TranslucentMode"
    aFilterData(4).Value = False
    
    Dim aStoreProperties(1) As New com.sun.star.beans.PropertyValue
    aStoreProperties(0).Name = "FilterName"
    aStoreProperties(0).Value = "writer_png_Export"
    aStoreProperties(1).Name = "FilterData"
    aStoreProperties(1).Value = aFilterData
    
    oDoc = ThisComponent
    oViewCursor = oDoc.getCurrentController().getViewCursor()
    sOriginalURL = oDoc.getURL()
    nPage = 1
    oViewCursor.jumpToFirstPage()
    Do 
        sFileURL = Replace(sOriginalURL, ".odt", "-" & Format(nPage, "0000") & ".png")
        oDoc.storeToURL(sFileURL, aStoreProperties)
        nPage = nPage + 1
    Loop While oViewCursor.jumpToNextPage()
End Sub

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten