🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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: 77
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: 77
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 gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten