von OObenutzer » Mi, 18.10.2006 16:57
Ich hab eine Lösung mir selbst erstellt, die zumindestens so funktioniert das der rechte Teil des Bildes abgeschnitten wird. Ich stelle sie deswegen hier hinein, weil ich persönlich es hasse, endlich in Foren genau auf mein Problem zu gestossen zu sein, aber keine Lösung angeboten wird.
Im Template wird im Rahmen genau an der Stelle an die das Bild soll ein neuer leerer Rahmen in der späteren Größe eingeführt. Der darf ein anders Format haben, zum Beispiel 3:3, oder 3:4. Je schmaler der Rahmen wird, destoweniger ist vom Originalbild zu sehen, das muss klar sein. Wichtig ist das die spätere Höhe im Quelltext exakt mit der Rahmengröße zusammenfällt, ausserdem sollte man die Umradung im Rahmen auf Null stellen.
Hier nun die Codeschnippsel:
Code: Alles auswählen
'Hier der Testaufruf
Sub TestLadeBildinTextFrame
Dim odoc
oDoc = StarDesktop.CurrentComponent
BildinTextFrameLaden odoc, "tfBild1"
BildinTextFrameLaden odoc, "tfBild2"
End Sub
Sub BildinTextFrameLaden(oDoc, sFrameName As String)
Dim oCursor, oGraphic, oText, oTextFrames, oTextFrame
'Vom übergebenen Dokument die Liste aller Textframes holen
oTextFrames=oDoc().getTextFrames()
'Das entsprechende TextFrame anhand des Namens identifizieren
oTextFrame=oTextFrames.getbyName(sFrameName)
'übliche Aufrufe um einen TextCursor zu basteln
oText = oTextFrame.getText()
oCursor = oText.createTextCursor()
oCursor.goToEnd(FALSE)
' Grafik instantiieren
oGraphic = oDoc.createInstance("com.sun.star.text.GraphicObject")
' URL, Verankerung, Höhe und Breite festlegen
With oGraphic
.GraphicURL = ConvertToURL( "C:\test\testbild.jpg" )
.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
.Width = 4546 'Die Breite ist größer als der Rahmen
.Height = 3460
End With
'Bild in Textrahmen einfügen
oTextFrame.insertTextContent( oCursor, oGraphic, False )
End Sub
Die Übergabe des oDoc als Parameter ist deshalb notwendig weil im Original der Aufruf von einer anderen Stelle erfolgt.
Das Bild wird nun links on die obere Ecke des Rahmen geheftet und der Rest der nach rechts über den Rahmen hinausragt wird nicht mehr angezeigt.
Ich weiß leider nicht, ob es auch die Möglichkeit gibt das Bild mit der rechten oberen Ecke rechts an den Rahmen zu heften, so dass der linke Rand nicht mehr dargestellt wird, weil er dann links aus dem Rahmen herausragt, vielleicht über Properties die die das Bild rechtsbündig einbinden. Vielleicht weiss jemand anders da mehr.
Ich selbst verwende diese Technik in einem Projekt in der Ausweise gedruckt werden und die Fotos von einer Webcam stammen.
So nun hab ich mir einen Kaffee verdient.
Mit freundlichen Grüßen
Georg
Ich hab eine Lösung mir selbst erstellt, die zumindestens so funktioniert das der rechte Teil des Bildes abgeschnitten wird. Ich stelle sie deswegen hier hinein, weil ich persönlich es hasse, endlich in Foren genau auf mein Problem zu gestossen zu sein, aber keine Lösung angeboten wird.
Im Template wird im Rahmen genau an der Stelle an die das Bild soll ein neuer leerer Rahmen in der späteren Größe eingeführt. Der darf ein anders Format haben, zum Beispiel 3:3, oder 3:4. Je schmaler der Rahmen wird, destoweniger ist vom Originalbild zu sehen, das muss klar sein. Wichtig ist das die spätere Höhe im Quelltext exakt mit der Rahmengröße zusammenfällt, ausserdem sollte man die Umradung im Rahmen auf Null stellen.
Hier nun die Codeschnippsel:
[code]
'Hier der Testaufruf
Sub TestLadeBildinTextFrame
Dim odoc
oDoc = StarDesktop.CurrentComponent
BildinTextFrameLaden odoc, "tfBild1"
BildinTextFrameLaden odoc, "tfBild2"
End Sub
Sub BildinTextFrameLaden(oDoc, sFrameName As String)
Dim oCursor, oGraphic, oText, oTextFrames, oTextFrame
'Vom übergebenen Dokument die Liste aller Textframes holen
oTextFrames=oDoc().getTextFrames()
'Das entsprechende TextFrame anhand des Namens identifizieren
oTextFrame=oTextFrames.getbyName(sFrameName)
'übliche Aufrufe um einen TextCursor zu basteln
oText = oTextFrame.getText()
oCursor = oText.createTextCursor()
oCursor.goToEnd(FALSE)
' Grafik instantiieren
oGraphic = oDoc.createInstance("com.sun.star.text.GraphicObject")
' URL, Verankerung, Höhe und Breite festlegen
With oGraphic
.GraphicURL = ConvertToURL( "C:\test\testbild.jpg" )
.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
.Width = 4546 'Die Breite ist größer als der Rahmen
.Height = 3460
End With
'Bild in Textrahmen einfügen
oTextFrame.insertTextContent( oCursor, oGraphic, False )
End Sub
[/code]
Die Übergabe des oDoc als Parameter ist deshalb notwendig weil im Original der Aufruf von einer anderen Stelle erfolgt.
Das Bild wird nun links on die obere Ecke des Rahmen geheftet und der Rest der nach rechts über den Rahmen hinausragt wird nicht mehr angezeigt.
Ich weiß leider nicht, ob es auch die Möglichkeit gibt das Bild mit der rechten oberen Ecke rechts an den Rahmen zu heften, so dass der linke Rand nicht mehr dargestellt wird, weil er dann links aus dem Rahmen herausragt, vielleicht über Properties die die das Bild rechtsbündig einbinden. Vielleicht weiss jemand anders da mehr.
Ich selbst verwende diese Technik in einem Projekt in der Ausweise gedruckt werden und die Fotos von einer Webcam stammen.
So nun hab ich mir einen Kaffee verdient.
Mit freundlichen Grüßen
Georg