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

Grafik als Link einfügen

Alles zur Programmierung im LibreOffice.
Antworten
chemnitzer
Beiträge: 43
Registriert: Di 20. Jan 2015, 18:56
Wohnort: Hungen

Grafik als Link einfügen

Beitrag von chemnitzer » Fr 24. Aug 2018, 21:19

Hallo
ich benutze Version 6.1 unter Windows 10.
Das Einfügen einer Grafik (JPG) funktioniert und wird im Navigator unter Bilder z.Bsp.: als "Bild1" angezeigt im Dokument auch sichtbar.
Lasse ich mir die Eigenschaften anzeigen dann ist das Feld unter Bild -> "Verknüpfung Dateiname" leer.
Wird das Bild als Verknüpfung über den Menüweg eingefügt dann steht der Link dazu drinn z.Bsp. file:///c:/temp/myPic.jpg.
Hier der Code ( die Originalquelle kenne ich leider nicht mehr :?: ):
Sub InsertImage(Optional URL, Optional imageName, Optional imageDescription, Optional linkURL)
If IsMissing(URL) Then
URL = "C:\!C-DATEN\Bilder\Seite-0017.jpg"
End If

ImgUrl = ConvertToURL(URL)

rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(4) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = ImgUrl
args1(1).Name = "FilterName"
args1(1).Value = "<Alle formater>"
args1(2).Name = "AsLink"
args1(2).Value = false
args1(3).Name = "Style"
args1(3).Value = "Grafik"

dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())
end sub


Noch was: Wenn das Bild gedreht wurde komment noch eine Meldung ob es zurückgesetzt werden soll ?

Gibt es noch andere Möglichkeiten das Bild so einzufügen, dass ich dann aus dem Text einen Hyperlink darauf setzen kann ?

Vielen Dank schonmal im voraus
chemnitzer

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

Re: Grafik als Link einfügen

Beitrag von F3K Total » So 26. Aug 2018, 10:03

Moin, geht, habe ich schonmal programmiert:

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
           .HyperLinkURL =  aUrl(i)
        End With
        ThisComponent.Text.insertTextContent(oTextcursor,oGraph,False)'Bild einfügen
        do
           wait 10
        loop until oGraph.ActualSize.width > 0
        O_S = oGraph.ActualSize
        'xray 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
Bitteschön.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

chemnitzer
Beiträge: 43
Registriert: Di 20. Jan 2015, 18:56
Wohnort: Hungen

Re: Grafik als Link einfügen

Beitrag von chemnitzer » So 26. Aug 2018, 12:54

Hallo R
Danke für die schnelle Info. Ich hatte LO 6.1.0 64-Bit unter Win10 installiert, leider funktioniert das bei mir dann nicht.
Weder Dein Code noch meiner. Ich hab es jetzt so gelöst LO 6 runter und wieder 5.2.2 drauf, jetzt gehts wieder muss nur noch die Grafikgröße versuchen an den Platz im Blatt (Bsp.: A4 mit Rändern) anzupassen. Wenn ich die Lösung habe stell ich sie dann rein.

Schönen Sonntag noch von
Chemnitzer

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

Re: Grafik als Link einfügen

Beitrag von F3K Total » So 26. Aug 2018, 13:54

chemnitzer hat geschrieben:
So 26. Aug 2018, 12:54
muss nur noch die Grafikgröße versuchen an den Platz im Blatt (Bsp.: A4 mit Rändern) anzupassen
Das geht in meinem Code sehr leicht...Läuft bei mir unter LO 6.0.6 problemlos...
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

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

Re: Grafik als Link einfügen

Beitrag von musikai » So 26. Aug 2018, 21:35

F3K Total hat geschrieben:
So 26. Aug 2018, 13:54
chemnitzer hat geschrieben:
So 26. Aug 2018, 12:54
muss nur noch die Grafikgröße versuchen an den Platz im Blatt (Bsp.: A4 mit Rändern) anzupassen
Das geht in meinem Code sehr leicht...Läuft bei mir unter LO 6.0.6 problemlos...
Gruß R
Das elegante Einfügen via
ThisComponent.createInstance("com.sun.star.text.GraphicObject")
und
oText.insertTextContent(oCursor, oGraph, False)

scheint in der aktuellen 6.1.0.3 zu einem leeren Rahmen mit Lesefehler zu führen.
Ich vermute stark, das liegt an der neuen (eigentlich vielversprechenden weil schnelleren) Art, wie in LO6.1 Bilder verwaltet werden:
https://blog.documentfoundation.org/blo ... r-results/

Schnell mal einen Bug-Report geschrieben:
https://bugs.documentfoundation.org/sho ... ?id=119519
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

chemnitzer
Beiträge: 43
Registriert: Di 20. Jan 2015, 18:56
Wohnort: Hungen

Re: Grafik als Link einfügen

Beitrag von chemnitzer » Mo 27. Aug 2018, 11:32

Hallo
Danke für die Info. Vielleicht gibt es eine Version ohne den Bug 6.1.0.x oder dann in 6.2.x.y ?
Ich warte da einfach mal ab.
Hier noch eine Ergänzung : LO 5.2.2 Makro fügt die Bilder als Verlinkung ein, man sieht sie auch, aber beim Blättern durch die Seiten kommt wird der Link angezeigt anschließend Lesefehler und kein Bild. Das ist auch in der Druckvorschau so und LO ist komplett blockiert.
Die gleichen Erscheinungen tretten auch beim manuellen Einfügen auf !
Ist das ab einer bestimmten Version von LO so ?
Mfg
chemnitzer

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