von Stephan » Sa, 25.12.2004 22:38
Es scheint keine direkte Möglichkeit zu geben, deshalb habe ich in Anlehnung an:
http://www.oooforum.org/forum/viewtopic ... ht=impress
folgendes Makro geschrieben:
Code: Alles auswählen
Sub PNG_Export()
'hier Datei mit Pfad eintragen
datei = "D:\xxx\test.sxi"
startzeit = Now
Dim oArgs(0) as New com.sun.star.beans.PropertyValue
oDoc = StarDesktop.LoadComponentFromURL( ConvertToURL(datei), "_blank", 0, Array() )
nNumPages = oDoc.getDrawPages().getCount()
oDoc.dispose()
cImpressDocToSplitNoSuffix = Left( datei, Len( datei ) - 4 )
nHighestPageNumber = nNumPages-1
For nPageToSave = 0 To nHighestPageNumber
oDoc = StarDesktop.LoadComponentFromURL( ConvertToURL("D:\xxx\test.sxi" ), "_blank", 0, Array() )
DeleteAllPagesExcept( oDoc, nPageToSave )
cNewName = cImpressDocToSplitNoSuffix + "_seite_" + CSTR( nPageToSave + 1 )
oDoc.storeToURL( ConvertToURL( cNewName + ".sxi" ), Array() )
cUrl = ConvertToURL( cNewName + ".png" )
oArgs(0).Name = "FilterName"
oArgs(0).Value = "impress_png_Export"
oDoc.storeToUrl( cUrl , oArgs() )
oDoc.dispose()
w = cNewName & ".sxi"
If FileExists(w) Then
Kill w
End if
Next
endzeit = Now
msgbox "beginn: " & startzeit & CHR(13) & "ende: " & endzeit
End Sub
Function DeleteAllPagesExcept( oDoc, nPageToKeep )
nNumPages = oDoc.getDrawPages().getCount()
nHighestPageNumber = nNumPages-1
nPageToDelete = nHighestPageNumber
Do while nPageToDelete > nPageToKeep
oPage = oDoc.getDrawPages().getByIndex( nPageToDelete )
oDoc.getDrawPages().remove( oPage )
nPageToDelete = nPageToDelete - 1
Loop
For i = 0 To nPageToKeep - 1
nPageToDelete = 0
oPage = oDoc.getDrawPages().getByIndex( nPageToDelete )
oDoc.getDrawPages().remove( oPage )
Next
End Function
Ich kann mir jedoch nicht vorstellen das Du den Export mit diesem Makro erledigen willst. Da permanent die Datei geladen werden muß dauert das für 200 Seiten bestimmt 20 Minuten.
Eine Lösung die Präsentation als HTML zu exportieren und dann die vorhandenen Bilder mit einem Grafik-Programm im Batchbetrieb in *.png zu konvertieren würde ich der Einfachheit halber in jedem Fall bevorzugen.
Gruß
Stephan
Es scheint keine direkte Möglichkeit zu geben, deshalb habe ich in Anlehnung an:
http://www.oooforum.org/forum/viewtopic.php?t=8715&highlight=impress
folgendes Makro geschrieben:
[code]Sub PNG_Export()
'hier Datei mit Pfad eintragen
datei = "D:\xxx\test.sxi"
startzeit = Now
Dim oArgs(0) as New com.sun.star.beans.PropertyValue
oDoc = StarDesktop.LoadComponentFromURL( ConvertToURL(datei), "_blank", 0, Array() )
nNumPages = oDoc.getDrawPages().getCount()
oDoc.dispose()
cImpressDocToSplitNoSuffix = Left( datei, Len( datei ) - 4 )
nHighestPageNumber = nNumPages-1
For nPageToSave = 0 To nHighestPageNumber
oDoc = StarDesktop.LoadComponentFromURL( ConvertToURL("D:\xxx\test.sxi" ), "_blank", 0, Array() )
DeleteAllPagesExcept( oDoc, nPageToSave )
cNewName = cImpressDocToSplitNoSuffix + "_seite_" + CSTR( nPageToSave + 1 )
oDoc.storeToURL( ConvertToURL( cNewName + ".sxi" ), Array() )
cUrl = ConvertToURL( cNewName + ".png" )
oArgs(0).Name = "FilterName"
oArgs(0).Value = "impress_png_Export"
oDoc.storeToUrl( cUrl , oArgs() )
oDoc.dispose()
w = cNewName & ".sxi"
If FileExists(w) Then
Kill w
End if
Next
endzeit = Now
msgbox "beginn: " & startzeit & CHR(13) & "ende: " & endzeit
End Sub
Function DeleteAllPagesExcept( oDoc, nPageToKeep )
nNumPages = oDoc.getDrawPages().getCount()
nHighestPageNumber = nNumPages-1
nPageToDelete = nHighestPageNumber
Do while nPageToDelete > nPageToKeep
oPage = oDoc.getDrawPages().getByIndex( nPageToDelete )
oDoc.getDrawPages().remove( oPage )
nPageToDelete = nPageToDelete - 1
Loop
For i = 0 To nPageToKeep - 1
nPageToDelete = 0
oPage = oDoc.getDrawPages().getByIndex( nPageToDelete )
oDoc.getDrawPages().remove( oPage )
Next
End Function[/code]
Ich kann mir jedoch nicht vorstellen das Du den Export mit diesem Makro erledigen willst. Da permanent die Datei geladen werden muß dauert das für 200 Seiten bestimmt 20 Minuten.
Eine Lösung die Präsentation als HTML zu exportieren und dann die vorhandenen Bilder mit einem Grafik-Programm im Batchbetrieb in *.png zu konvertieren würde ich der Einfachheit halber in jedem Fall bevorzugen.
Gruß
Stephan