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. 🤗

Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
ftomasch
Beiträge: 25
Registriert: Mi 18. Jul 2012, 08:29

Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von ftomasch » Fr 18. Mär 2016, 20:47

Hallo zusammen!

Ich möchte mehrere Bilder gleichzeitig in WRITER importieren und zwar so, dass die Bilder nicht eingebettet werden, sondern das eine Verknüpfung zur Originaldatei bestehen bleibt. (Zu einem späteren Zeitpunkt werden die Bilddateien gegen jeweils verbesserte Versionen ausgetauscht).

Wenn ich mehrere Bilder per "drag and drop" in WRITER importiere werden diese eingebettet. Es macht auch keinen Unterschied, ob die STRG-Taste gedrückt ist.
Über den Weg "Einfügen- Bild" besteht zwar eine Wahlmöglichkeit, aber es kann jeweils nur ein einziges Bild importiert werden.

Exisitiert ein Möglichkeit mehrere Bilder gleichzeitig in WRITER einzubetten?

Viele Grüße
-ftomasch

F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von F3K Total » Sa 19. Mär 2016, 09:37

Moin,
wohl nur per Makro:

Code: Alles auswählen

Sub S_insert_Pictures
    Dim O_S As New com.sun.star.awt.Size
    Dim S_M As New com.sun.star.awt.Size
    Dim N_S As New com.sun.star.awt.Size
    aUrl = F_get_pictures_Url
    oTextcursor = thisComponent.Text.createTextCursor
    oTextcursor.collapseToStart
    S_M.Width = 5000 'maximale Breite
    S_M.Height = 5000 'maximale Höhe
    For i = 0 to ubound(aUrl)
        oGraph = ThisComponent.createInstance("com.sun.star.text.GraphicObject")
        With oGraph
           .GraphicURL = aUrl(i)
           .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
           .HoriOrient = 0 'Linksbündig
        End With
        ThisComponent.Text.insertTextContent(oTextcursor,oGraph,False)'Bild einfügen
        'Skalieren
        O_S = oGraph.ActualSize
        Factor_Width = S_M.width/O_S.width
        Factor_Height = S_M.Height/O_S.Height
        if Factor_Width <= Factor_Height then 'bestimmen ob die Breite oder die Höhe der begrenzende Faktor ist
          factor = Factor_Width
        else
          factor = Factor_Height
        endif
        N_S.width = O_S.width * factor
        N_S.Height = O_S.Height * factor
        oGraph.size = N_S        
        'Text einfügen
        oTextCursor.gotoend(false)
        oTextCursor.breaktype = 0
        thisComponent.Text.insertControlCharacter(oTextCursor,0 , False)'0 = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
        oTextCursor.gotoend(false)
    next i
end sub

function F_get_pictures_Url
	oFilepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
    oFilePicker.Initialize(Array(com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE))
    oFilepicker.setMultiSelectionMode(true)
	oFilepicker.appendFilter( "Graphics Files (*.jpg,.png,.tif,.tiff,.gif,.bmp)","*.jpg;*.png;*.tif;*.tiff;*.gif;*.bmp")
	oFilepicker.Title = ("Bilddateien auswählen")
	iAccept = oFilepicker.execute()
	if iAccept = 0 Then exit function
	F_get_pictures_Url = oFilepicker.SelectedFiles
end function
Damit das Makro laufen darf, stellst du unter Extras/Optionen/Openoffice oder LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe Mittel ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Starten musst du dann

Code: Alles auswählen

S_insert_Pictures
Viel Erfolg
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

ftomasch
Beiträge: 25
Registriert: Mi 18. Jul 2012, 08:29

Re: Makro funktioniert bedauerlicherweise nicht richtig.....

Beitrag von ftomasch » Sa 19. Mär 2016, 20:31

Hallo R!

Das ist eine spannende Möglichkeit.
Vielen Dank für die schnelle Antwort!

Ich habe es gleich ausprobiert.
Leider wird nur das erste Bild aus einer Auswahl eingeladen.
Und dann kommt eine Fehlermeldung.

Leider gehöre ich zu den Nichtprogrammierern.
Was bedeutet die Fehlermeldung?
Kannst du mir weiterhelfen?
Ich habe die Meldung beigefügt.

Viele liebe Grüße
-ftomasch
Dateianhänge
Makro mehrere Bilder als Verküpfung importieren.png
Makro mehrere Bilder als Verküpfung importieren.png (63.68 KiB) 5955 mal betrachtet

musikai
Beiträge: 262
Registriert: Do 14. Mai 2015, 17:53

Re: Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von musikai » Sa 19. Mär 2016, 21:06

Da LibreOffice manchmal zu langsam ist um die Größe der Bild-Dateien auszulesen, liest es Größe=0. Da der Code durch diese Größe didvidiert gibt es einen Fehler. Eigentlich müsste man das Bild zuerst der Drawpage zufügen (hab ich später irgendwo gelesen) oder man löst es, indem man nachträglich jedes eingefügte Bild ändert. Hier mein Hack:

Code: Alles auswählen

Sub S_insert_Pictures
    aUrl = F_get_pictures_Url
    oTextcursor = thisComponent.Text.createTextCursor
    oTextcursor.collapseToStart
    For i = 0 to ubound(aUrl)
        oGraph = ThisComponent.createInstance("com.sun.star.text.GraphicObject")
        With oGraph
           .GraphicURL = aUrl(i)
           .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
           .HoriOrient = 0 'Linksbündig
        End With
        ThisComponent.Text.insertTextContent(oTextcursor,oGraph,False)'Bild einfügen
         oGraph.Width = 1000
         oGraph.Height = 1000 
        'Text einfügen
        oTextCursor.gotoend(false)
        oTextCursor.breaktype = 0
        thisComponent.Text.insertControlCharacter(oTextCursor,0 , False)'0 = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
        oTextCursor.gotoend(false)
        ResizeGraphicToOriginalSize
        ResizeGraphicToOriginalSize  '2x um sicherzugehen
    next i
    end sub

function F_get_pictures_Url
   oFilepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
    oFilePicker.Initialize(Array(com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE))
    oFilepicker.setMultiSelectionMode(true)
   oFilepicker.appendFilter( "Graphics Files (*.jpg,.png,.tif,.tiff,.gif,.bmp)","*.jpg;*.png;*.tif;*.tiff;*.gif;*.bmp")
   oFilepicker.Title = ("Bilddateien auswählen")
   iAccept = oFilepicker.execute()
   if iAccept = 0 Then exit function
   F_get_pictures_Url = oFilepicker.SelectedFiles
end function

Sub ResizeGraphicToOriginalSize
    Dim go,g
    go = ThisComponent.getGraphicObjects
     g = go.getByIndex(go.Count-1)
    g.Height = g.actualSize.Height
    g.Width = g.actualSize.Width
End Sub
In Linux (Lubuntu) funktioniert bei mir die multi-Selektion mit oFilepicker.SelectedFiles nicht. Geht das bei irgendjemandem?
Mit getFiles() funktioniert der wundervolle Code von F3K_Total (herzlichen Dank!!!) in Linux:

Code: Alles auswählen

Sub S_insert_Pictures
    aUrl = F_get_pictures_Url
    oTextcursor = thisComponent.Text.createTextCursor
    oTextcursor.collapseToStart
    For i = 1 to ubound(aUrl)
        oGraph = ThisComponent.createInstance("com.sun.star.text.GraphicObject")
        With oGraph
           .GraphicURL = aUrl(0) & aUrl(i)
           .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
           .HoriOrient = 0 'Linksbündig
        End With
        ThisComponent.Text.insertTextContent(oTextcursor,oGraph,False)'Bild einfügen
         oGraph.Width = 1000
         oGraph.Height = 1000 
        'Text einfügen
        oTextCursor.gotoend(false)
        oTextCursor.breaktype = 0
        thisComponent.Text.insertControlCharacter(oTextCursor,0 , False)'0 = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
        oTextCursor.gotoend(false)
        ResizeGraphicToOriginalSize
        ResizeGraphicToOriginalSize  '2x um sicherzugehen
    next i
end sub

function F_get_pictures_Url
   oFilepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
    oFilePicker.Initialize(Array(com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE))
    oFilepicker.setMultiSelectionMode(true)
   oFilepicker.appendFilter( "Graphics Files (*.jpg,.png,.tif,.tiff,.gif,.bmp)","*.jpg;*.png;*.tif;*.tiff;*.gif;*.bmp")
   oFilepicker.Title = ("Bilddateien auswählen")
   iAccept = oFilepicker.execute()
   if iAccept = 0 Then exit function
   F_get_pictures_Url = oFilepicker.getFiles()
end function

Sub ResizeGraphicToOriginalSize
    Dim go,g
    go = ThisComponent.getGraphicObjects
     g = go.getByIndex(go.Count-1)
    g.Height = g.actualSize.Height
    g.Width = g.actualSize.Width
End Sub
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

ftomasch
Beiträge: 25
Registriert: Mi 18. Jul 2012, 08:29

Re: Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von ftomasch » So 20. Mär 2016, 11:48

Das funktioniert perfekt!
Super! Und vielen Dank!

F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von F3K Total » So 20. Mär 2016, 12:31

Moin,
ftomasch hat geschrieben:Und dann kommt eine Fehlermeldung.
Ich denke, dass musikai Recht hat, wenn LO zu langsam ist die Größe des Bildes einzulesen, kommt es zu diesem Fehler. Mann kann es so lösen wie musikai, ich habe eine Alternative:

Code: Alles auswählen

        do
           wait 10
        loop until oGraph.ActualSize.width > 0
Damit wird erst dann weitergemacht, wenn die Bildgröße verfügbar ist. Alles zusammen:

Code: Alles auswählen

Sub S_insert_Pictures
    Dim O_S As New com.sun.star.awt.Size
    Dim S_M As New com.sun.star.awt.Size
    Dim N_S As New com.sun.star.awt.Size
    aUrl = F_get_pictures_Url
    oTextcursor = thisComponent.Text.createTextCursor
    oTextcursor.collapseToStart
    S_M.Width = 5000 'maximale Breite
    S_M.Height = 5000 'maximale Höhe
    For i = 0 to ubound(aUrl)
        oGraph = ThisComponent.createInstance("com.sun.star.text.GraphicObject")
        With oGraph
           .GraphicURL = aUrl(i)
           .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
           .HoriOrient = 0 'Linksbündig
        End With
        ThisComponent.Text.insertTextContent(oTextcursor,oGraph,False)'Bild einfügen
        do
           wait 10
        loop until oGraph.ActualSize.width > 0
        O_S = oGraph.ActualSize
        Factor_Width = S_M.width/O_S.width
        Factor_Height = S_M.Height/O_S.Height
        if Factor_Width <= Factor_Height then 'bestimmen ob die Breite oder die Höhe der begrenzende Faktor ist
          factor = Factor_Width
        else
          factor = Factor_Height
        endif
        N_S.width = O_S.width * factor
        N_S.Height = O_S.Height * factor
        oGraph.size = N_S        
        'Text einfügen
        oTextCursor.gotoend(false)
        oTextCursor.breaktype = 0
        thisComponent.Text.insertControlCharacter(oTextCursor,0 , False)'0 = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
        oTextCursor.gotoend(false)
    next i
end sub

function F_get_pictures_Url
	oFilepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
    oFilePicker.Initialize(Array(com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE))
    oFilepicker.setMultiSelectionMode(true)
	oFilepicker.appendFilter( "Graphics Files (*.jpg,.png,.tif,.tiff,.gif,.bmp)","*.jpg;*.png;*.tif;*.tiff;*.gif;*.bmp")
	oFilepicker.Title = ("Bilddateien auswählen")
	iAccept = oFilepicker.execute()
	if iAccept = 0 Then 
	    F_get_pictures_Url = ""
	    exit function
	end if
	F_get_pictures_Url = oFilepicker.SelectedFiles
end function
musikai hat geschrieben: multi-Selektion mit oFilepicker.SelectedFiles nicht. Geht das bei irgendjemandem?
Ist bei mir unter Linux Mint 17.3 kein Problem
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

ftomasch
Beiträge: 25
Registriert: Mi 18. Jul 2012, 08:29

Re und Nachfrage....

Beitrag von ftomasch » So 20. Mär 2016, 19:20

Whow!

Funktioniert perfekt!

Nun habe ich doch noch eine Nachfrage:
Ist es auch möglich, dass die Bilder, die importiert werden, auf eine vorher festgelegte Größe verkleinert werden können?

Liebe Grüße
-ftomasch

F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von F3K Total » So 20. Mär 2016, 20:13

Das ist doch gerade der Unterschied zwischen meinem und musikai's Version, hier stellst du die Größe in 1/1000 mm ein:

Code: Alles auswählen

    S_M.Width = 5000 'maximale Breite
    S_M.Height = 5000 'maximale Höhe
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

ftomasch
Beiträge: 25
Registriert: Mi 18. Jul 2012, 08:29

Re: Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von ftomasch » Mo 21. Mär 2016, 19:09

Hallo R!

Ja, vielen Dank für den Hinweis.
Ich konnte diese Angabe nicht im Code zuordnen.
Das ist ja genial!!!

Viele schöne Grüße aus dem Süden
-ftomasch

musikai
Beiträge: 262
Registriert: Do 14. Mai 2015, 17:53

Re: Importieren von mehreren Bildern gleichzeitig in Form einer Verknüpfung.

Beitrag von musikai » Mo 21. Mär 2016, 23:45

Edit:
F3K Total's Code funktionert tatsächlich auch unter Linux Mint 17.3 , meiner nicht. Dafür geht unter Lubuntu 15.10 nur mein Code. Komisch.


Ja, F3K Totals Code ist ne feine Sache.

Gute Lösung mit dem 0-Wert.
F3K Total hat geschrieben:
musikai hat geschrieben: multi-Selektion mit oFilepicker.SelectedFiles nicht. Geht das bei irgendjemandem?
Ist bei mir unter Linux Mint 17.3 kein Problem
Gruß R
Hallo F3K Total,

also die Multiselektion funktioniert bei mir bis zu dem Punkt, bis ich "öffnen" klicke, dann kommt "BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: SelectedFiles."

Unter Linux Mint kommt dieser Fehler bei Dir nicht?

Würde nämlich gerne den Code in einem multiplatform Project verwenden.

Was mich auch interessieren würde: Bekommst Du in der Bild-Vorschau unter Linux Mint die Bilder angezeigt?

Grüße
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

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