Wie kann ich eine Grafik einfügen ?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Cheesy77
Beiträge: 2
Registriert: So, 26.09.2004 23:13

Wie kann ich eine Grafik einfügen ?

Beitrag von Cheesy77 »

Hallo allerseits,

bin verzweifelt am Versuchen, eine Grafik per Makro in ein Textdokument einzufügen.

Ausgangssituation ist folgende:
Mit folgendem Code erzeuge ich ein neues Textdokument:

Code: Alles auswählen

Sub NeuesDokumentErzeugen
  Dim DeskNeu As Object
  Dim Url As String
  Dim NewDoc As Object
  Dim NoArgs()
  

  DeskNeu = createUnoService("com.sun.star.frame.Desktop")
  Url = "private:factory/swriter" 
  Doc = DeskNeu.loadComponentFromURL( Url,"_blank",0,NoArgs())
  
  
End Sub
Doc ist dabei ganz am Anfang definiert durch:

Code: Alles auswählen

Global Doc As Object
Wie kann ich jetzt an der aktuellen Cursor-Position ein *.jpg Bild einfügen und die ganzen Eigenschaften verändern ?

Habe schon ein Makro aufgezeichnet, das so aussieht:

Code: Alles auswählen

sub test
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(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = "file:///C:/Dokumente%20und%20Einstellungen/Matthias/Desktop/ICH_2.jpg"
args1(1).Name = "FilterName"
args1(1).Value = "<Alle Formate>"
args1(2).Name = "AsLink"
args1(2).Value = true
args1(3).Name = "Style"
args1(3).Value = "Grafik"

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


end sub
Damit komme ich aber überhaupt nicht zurecht.
Hab schon überall geschaut, ob ich Infos dazu finde, aber bisher (nach mehreren Stunden) hat mir das nichts gebracht :cry:

Vielleicht kann mir ja jemand helfen ? Danke schonmal.
Cheesy77
Beiträge: 2
Registriert: So, 26.09.2004 23:13

Beitrag von Cheesy77 »

Ich glaube, ich hab jetzt grad was gefunden ... ENDLICH....

Code: Alles auswählen

Sub insert_GraphicObject( )
  Dim oDoc, oCursor, oGraphic, oText

  oDoc = StarDesktop.CurrentComponent
  oText = oDoc.getText()
  oCursor = oText.createTextCursor()
  oCursor.goToStart(FALSE)
  oGraphic = oDoc.createInstance("com.sun.star.text.GraphicObject")

  With oGraphic
    .GraphicURL = ConvertToURL( "c:\test.jpg" )
    .AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
    .Width = 3000
    .Height = 3000
  End With

  'now insert the image into the text document
  oText.insertTextContent( oCursor, oGraphic, False )
End Sub
Kann ich, nachdem ich mehrere Grafiken und Textfelder eingefügt habe, diese auch wieder gezielt entfernen ?

bzw. eine so eingefügte Grafik um 90 Grad drehen ?
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Cheesy77,
Kann ich, nachdem ich mehrere Grafiken und Textfelder eingefügt habe, diese auch wieder gezielt entfernen ?
Sicher. Du musst sie nur finden. Grafiken und Textfelder... das sind alles Objekte. Hast du das passende Objekt identifiziert, kannst du es auch löschen. Grafiken sind dabei Unterobjekte des Hauptobjekts "Drawpage", das du erreichst mit

Code: Alles auswählen

oObject=thisComponent.drawpage
Hast du den Objekten keinen Namen gegeben (und das ist meist so...) musst du eine Nummerierung durchführen (createEnumeration) und anschliessend (am besten über eine Schleife) die Objekte ansprechen und - tia - mit irgendwelchen Eigenschaften vergleichen, so dass du gezielt dein gewünschtes Objekt herausfindest. Das kannst du dann löschen.

Na ja, ist noch ein Stück Arbeit.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten