von sarotti » So, 15.03.2009 22:09
Hallo Seebaer,
...da hat mich der Ehrgeiz gepackt..... Ich denke, dass ich die Lösung für Dich habe...
Es werden werden per Makro Bilder aus einem Verzeichnis ausgewählt, dies werden beschriftet, erhalten eine Formatierung (Überschrift 1), die dann bei einem Export als PDF Dokument als Bookmark gewählt werden können...
So sieht das nun aus....
Code: Alles auswählen
Sub BilderEinfuegenPlusBookmark
DIM Array()
oDoc=ThisComponent
oFolderDlg = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
DIM oSize as new com.sun.star.awt.Size
document = oDoc.CurrentController.Frame
sfolder=oFolderDlg.execute()
sPfad=ConvertFromUrl(oFolderDlg.Directory)
sDatei=Dir(sPfad+"\*.jpg",0)
do
REM *** Auslesen des nächsten Bildes
sDatei=Dir$
REM *** ans Ende des Dokumentes gehen und.....
oPos=oDoc.Text.getEnd()
REM *** Dateiname einfügen
oPos.string= sDatei
REM *** Zeilenformatierung "Überschrift" (für das Inhaltsverzeichnis bzw. die Bookmarks als PDF Datei erforderlich)
CALL ZeilenFormat
REM *** Bild einfühen
oBild = oDoc.createInstance( "com.sun.star.text.GraphicObject")
oBild.GraphicURL=convertToURL(sPfad+"\"+sDatei)
REM *** Größe setzen
oSize.Width=17100
oSize.Height=24930
oBild.setSize(oSize)
REM ...das einfügen des Bildes
oDoc.Text.insertTextContent(oPos, oBild, false )
REM *** Seitenwechsel einfügen
dispatcher.executeDispatch(document, ".uno:InsertPagebreak", "", 0, Array())
Loop While sDatei<>""
end Sub
'###########################################
sub ZeilenFormat
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Template"
args1(0).Value = "Überschrift 1"
args1(1).Name = "Family"
args1(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args1())
end sub
'###########################################
Schau mal, ob´s das ist....
Wenn Du noch ein Inhaltsverzeichnis haben willst, kannst Du dies ja noch manuell einfügen....
So, nun Schluss (ist ja eigentlich nicht der Sinn des Forums anderen komplette Lösungen zu bieten) ...aber das Thema hat mich halt seeehr interessiert, da ich ähnliche Dinge für ein kleines, befreundetes Unternehmen brauchen kann...
Gruss
sarotti
Hallo Seebaer,
...da hat mich der Ehrgeiz gepackt..... Ich denke, dass ich die Lösung für Dich habe...
Es werden werden per Makro Bilder aus einem Verzeichnis ausgewählt, dies werden beschriftet, erhalten eine Formatierung (Überschrift 1), die dann bei einem Export als PDF Dokument als Bookmark gewählt werden können...
So sieht das nun aus....
[code]Sub BilderEinfuegenPlusBookmark
DIM Array()
oDoc=ThisComponent
oFolderDlg = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
DIM oSize as new com.sun.star.awt.Size
document = oDoc.CurrentController.Frame
sfolder=oFolderDlg.execute()
sPfad=ConvertFromUrl(oFolderDlg.Directory)
sDatei=Dir(sPfad+"\*.jpg",0)
do
REM *** Auslesen des nächsten Bildes
sDatei=Dir$
REM *** ans Ende des Dokumentes gehen und.....
oPos=oDoc.Text.getEnd()
REM *** Dateiname einfügen
oPos.string= sDatei
REM *** Zeilenformatierung "Überschrift" (für das Inhaltsverzeichnis bzw. die Bookmarks als PDF Datei erforderlich)
CALL ZeilenFormat
REM *** Bild einfühen
oBild = oDoc.createInstance( "com.sun.star.text.GraphicObject")
oBild.GraphicURL=convertToURL(sPfad+"\"+sDatei)
REM *** Größe setzen
oSize.Width=17100
oSize.Height=24930
oBild.setSize(oSize)
REM ...das einfügen des Bildes
oDoc.Text.insertTextContent(oPos, oBild, false )
REM *** Seitenwechsel einfügen
dispatcher.executeDispatch(document, ".uno:InsertPagebreak", "", 0, Array())
Loop While sDatei<>""
end Sub
'###########################################
sub ZeilenFormat
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Template"
args1(0).Value = "Überschrift 1"
args1(1).Name = "Family"
args1(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args1())
end sub
'###########################################
[/code]
Schau mal, ob´s das ist....
Wenn Du noch ein Inhaltsverzeichnis haben willst, kannst Du dies ja noch manuell einfügen....
So, nun Schluss (ist ja eigentlich nicht der Sinn des Forums anderen komplette Lösungen zu bieten) ...aber das Thema hat mich halt seeehr interessiert, da ich ähnliche Dinge für ein kleines, befreundetes Unternehmen brauchen kann...
Gruss
sarotti