von focus_fahrer » Mi, 17.05.2006 14:41
			
			
			Hallo
ich hab den Code von IndeView jetzt doch etwas angepasst, es fehlt jedoch noch ein schicker Auswahl-Dialog, wo man z.B. Auflösung und die gewünschten Seiten auswählen kann.
Im Moment werden in das Ziel-Verzeichnis einfach alle Seiten eines Draw- oder Impress-Dokuments als einzelne png-Dateien ausgegeben. Die Dateinamen werden ähnlich wie bei IndeView automatisch erstellt. Hier wäre es auch nett, wenn man den Zieldateinamen auswählen könnte, aber dafür habe ich im Moment keine Zeit.
Als maximale Auflösung hat sich etwa 4000x3000 Pixel ergeben, viel größere Auflösungen scheinen nicht zu funktionieren. Ein Versuch wäre es Wert, das ganze mit BMP als Ausgabeformat zu versuchen, aber hier müsste man sich erst mal die entsprechenden Parameter usw. zusammensuchen.
Hier mal den Code:
Code: Alles auswählen
REM ####################################################################################
REM 2006_05_17 14Uhr16
REM 
REM PNG Export Script
REM Grosse Teile des Codes von IndeView übernommen (http://www.indeview.org)
REM ####################################################################################
Sub PNGExport
    DIM oDoc As Object
    oDoc = ThisComponent
	
	DIM oDir As Object
	oDir = createunoservice("com.sun.star.ui.dialogs.FolderPicker")
	With oDir
		.setDisplayDirectory( "file:///" )
		.setTitle("IndeView Export - select target directory")
		.setDescription("Select target directory")
	End With
	
	If oDir.execute() Then
		DIM sDir As String
		DIM expDir As String
		DIM sName As String
		DIM nNumPages As Integer
		DIM nPage As Integer
		DIM oPage As Object
		DIM oFilter As Object
		DIM aFilterData( 2 ) As new com.sun.star.beans.PropertyValue
		DIM aDescriptor( 2 ) As new com.sun.star.beans.PropertyValue
		DIM sFileNameExt As String
		DIM sFileName As String
        DIM nFile As Integer
        DIM sPageID As String
        DIM sSep As String
        DIM aWidth As Integer
        DIM aHeight As Integer
		REM Groessere Werte scheinen nicht zu gehen und machen Probleme
		REM Bei Tests hat es noch bis 4020x3015 geklappt
        
        aWidth	= 4000
        aHeight	= 3000
        sDir = oDir.directory
		sSep = GetPathSeparator()
		aFilterData(0).Name = "Width"
		aFilterData(1).Name = "Height"
		aFilterData(2).Name = "Translucent"
		aFilterData(2).Value = false
		aDescriptor(0).Name = "FilterName"
		aDescriptor(0).Value = "PNG"
		sFileNameExt     =    ".PNG"
		aDescriptor(1).Name = "URL"
		aDescriptor(2).Name = "FilterData"
		oFilter = CreateUnoService("com.sun.star.drawing.GraphicExportFilter")
		nNumPages = oDoc.DrawPages.getCount()
		For nPage = 0 To nNumPages-1
			oPage = oDoc.DrawPages( nPage )
			sName = oPage.getName()
			sPageID = "Page" + LTrim(Str( nPage ))
			expDir = ConvertFromUrl( sDir )
			On Error GOTO mkdata_error
			MkDir expDir
			GOTO mkdata_ok
mkdata_error:
			MsgBox( chr$(13) + "ERROR: Directory" + chr$(13) + chr$(13) + expDir + chr$(13) + chr$(13) + "could not be created!" + chr(13) , 0+48 , "IndeView export" )
			Exit Sub
mkdata_ok:
			oFilter.setSourceDocument( oPage )
			If  10 > nPage Then
				sFileName = "P00"
			Else
				If  100 > nPage Then
					sFileName = "P0"
				Else
					sFileName = "P"
				End If
			End If
			sFileName = sFileName + LTrim(Str( nPage )) + "W" + sFileNameExt
			aDescriptor(1).Value = sDir + "/" + sFileName
			aFilterData(0).Value = aWidth
			aFilterData(1).Value = aHeight
			aDescriptor(2).Value = aFilterData()
			oFilter.filter( aDescriptor() )
		Next
		MsgBox ( chr$(13) + "Der Export wurde erfolgreich durchgeführt" + chr$(13) + "Die Bilder sind unter folgendem Verzeichnis zu finden:" + chr$(13) + chr$(34)+ sDir + chr$(34),0 ,"Export erfolgreich" )
	End If
End Sub
REM ####################################################################################
Das Makro müßt ihr dann nur noch einbinden und vielleicht einer neuen Schaltfläche zuweisen. Näheres findet ihr auf der IndeView-Homepage. Dort ist das alles ganz gut beschrieben.
Ach ja, noch eine Frage: Gibt es eigentlich in diesem Forum keinen Dateibereich, wo man irgendwelche Files ablegen kann. Ich hätte sonst mal meine "testseite.odg" und einen Ausschnitt aus dem png-Bild angehängt.
Ich hoffe, dass ihr damit was anfangen könnt. Ich finde, dass damit recht passable Bilder dabei herauskommen.
Gruß focus_fahrer
 
			
			
							Hallo
ich hab den Code von IndeView jetzt doch etwas angepasst, es fehlt jedoch noch ein schicker Auswahl-Dialog, wo man z.B. Auflösung und die gewünschten Seiten auswählen kann.
Im Moment werden in das Ziel-Verzeichnis einfach alle Seiten eines Draw- oder Impress-Dokuments als einzelne png-Dateien ausgegeben. Die Dateinamen werden ähnlich wie bei IndeView automatisch erstellt. Hier wäre es auch nett, wenn man den Zieldateinamen auswählen könnte, aber dafür habe ich im Moment keine Zeit.
Als maximale Auflösung hat sich etwa 4000x3000 Pixel ergeben, viel größere Auflösungen scheinen nicht zu funktionieren. Ein Versuch wäre es Wert, das ganze mit BMP als Ausgabeformat zu versuchen, aber hier müsste man sich erst mal die entsprechenden Parameter usw. zusammensuchen.
Hier mal den Code:
[code]
REM ####################################################################################
REM 2006_05_17 14Uhr16
REM 
REM PNG Export Script
REM Grosse Teile des Codes von IndeView übernommen (http://www.indeview.org)
REM ####################################################################################
Sub PNGExport
    DIM oDoc As Object
    oDoc = ThisComponent
	
	DIM oDir As Object
	oDir = createunoservice("com.sun.star.ui.dialogs.FolderPicker")
	With oDir
		.setDisplayDirectory( "file:///" )
		.setTitle("IndeView Export - select target directory")
		.setDescription("Select target directory")
	End With
	
	If oDir.execute() Then
		DIM sDir As String
		DIM expDir As String
		DIM sName As String
		DIM nNumPages As Integer
		DIM nPage As Integer
		DIM oPage As Object
		DIM oFilter As Object
		DIM aFilterData( 2 ) As new com.sun.star.beans.PropertyValue
		DIM aDescriptor( 2 ) As new com.sun.star.beans.PropertyValue
		DIM sFileNameExt As String
		DIM sFileName As String
        DIM nFile As Integer
        DIM sPageID As String
        DIM sSep As String
        DIM aWidth As Integer
        DIM aHeight As Integer
		REM Groessere Werte scheinen nicht zu gehen und machen Probleme
		REM Bei Tests hat es noch bis 4020x3015 geklappt
        
        aWidth	= 4000
        aHeight	= 3000
        sDir = oDir.directory
		sSep = GetPathSeparator()
		aFilterData(0).Name = "Width"
		aFilterData(1).Name = "Height"
		aFilterData(2).Name = "Translucent"
		aFilterData(2).Value = false
		aDescriptor(0).Name = "FilterName"
		aDescriptor(0).Value = "PNG"
		sFileNameExt     =    ".PNG"
		aDescriptor(1).Name = "URL"
		aDescriptor(2).Name = "FilterData"
		oFilter = CreateUnoService("com.sun.star.drawing.GraphicExportFilter")
		nNumPages = oDoc.DrawPages.getCount()
		For nPage = 0 To nNumPages-1
			oPage = oDoc.DrawPages( nPage )
			sName = oPage.getName()
			sPageID = "Page" + LTrim(Str( nPage ))
			expDir = ConvertFromUrl( sDir )
			On Error GOTO mkdata_error
			MkDir expDir
			GOTO mkdata_ok
mkdata_error:
			MsgBox( chr$(13) + "ERROR: Directory" + chr$(13) + chr$(13) + expDir + chr$(13) + chr$(13) + "could not be created!" + chr(13) , 0+48 , "IndeView export" )
			Exit Sub
mkdata_ok:
			oFilter.setSourceDocument( oPage )
			If  10 > nPage Then
				sFileName = "P00"
			Else
				If  100 > nPage Then
					sFileName = "P0"
				Else
					sFileName = "P"
				End If
			End If
			sFileName = sFileName + LTrim(Str( nPage )) + "W" + sFileNameExt
			aDescriptor(1).Value = sDir + "/" + sFileName
			aFilterData(0).Value = aWidth
			aFilterData(1).Value = aHeight
			aDescriptor(2).Value = aFilterData()
			oFilter.filter( aDescriptor() )
		Next
		MsgBox ( chr$(13) + "Der Export wurde erfolgreich durchgeführt" + chr$(13) + "Die Bilder sind unter folgendem Verzeichnis zu finden:" + chr$(13) + chr$(34)+ sDir + chr$(34),0 ,"Export erfolgreich" )
	End If
End Sub
REM ####################################################################################
[/code]
Das Makro müßt ihr dann nur noch einbinden und vielleicht einer neuen Schaltfläche zuweisen. Näheres findet ihr auf der IndeView-Homepage. Dort ist das alles ganz gut beschrieben.
Ach ja, noch eine Frage: Gibt es eigentlich in diesem Forum keinen Dateibereich, wo man irgendwelche Files ablegen kann. Ich hätte sonst mal meine "testseite.odg" und einen Ausschnitt aus dem png-Bild angehängt.
Ich hoffe, dass ihr damit was anfangen könnt. Ich finde, dass damit recht passable Bilder dabei herauskommen.
Gruß focus_fahrer