[gelöst] Bilder per Makro auf Seitenbreite skalieren
Moderator: Moderatoren
-
- *
- Beiträge: 12
- Registriert: Mi, 11.06.2008 16:09
[gelöst] Bilder per Makro auf Seitenbreite skalieren
Hallo zusammen,
ich betreue unsere interne Firmen-Wiki. Daraus erstelle ich Dokumentationen.
Es läuft alles wunderbar, per Copy&Paste kann ich sehr lange Artikel in eine ott-Vorlage reinkopieren und (fast) alles ist schön so formatiert, wie ich es will.
Per Makro entferne ich z.B. auch "[bearbeiten]" Links aus dem Wiki
Es sind darunter auch Screenshots, die andere Kollegen in verschiedensten Auflösungen ins Wiki übertragen.
Per Copy&Paste werden die Grafiken 1:1 verknüpft, was über die Seitenbreite hinausgeht. Es sind auch kleinere Bildchen (z.B. Icons).
Richtig glüclich würde mich folgende Funktionalität (Makro) machen:
1. Bei eingebundenen oder verknüpften grafiken Grafiken (jpg, png, gif) schauen, ob das Bildchen breiter ist als 17cm.
2. Ist es kleiner - nichts tun (jene Icons oder kleinere Bilder die 1:1 aus dem Wiki kommen)
3. Ist es breiter - auf 17cm Breite proportional skalieren
Wäre seeeeehr dankbar, wer jemand eine Idee hätte, wie man das umsetzen könnte.
Danke und Gruß
Darius
ich betreue unsere interne Firmen-Wiki. Daraus erstelle ich Dokumentationen.
Es läuft alles wunderbar, per Copy&Paste kann ich sehr lange Artikel in eine ott-Vorlage reinkopieren und (fast) alles ist schön so formatiert, wie ich es will.
Per Makro entferne ich z.B. auch "[bearbeiten]" Links aus dem Wiki
Es sind darunter auch Screenshots, die andere Kollegen in verschiedensten Auflösungen ins Wiki übertragen.
Per Copy&Paste werden die Grafiken 1:1 verknüpft, was über die Seitenbreite hinausgeht. Es sind auch kleinere Bildchen (z.B. Icons).
Richtig glüclich würde mich folgende Funktionalität (Makro) machen:
1. Bei eingebundenen oder verknüpften grafiken Grafiken (jpg, png, gif) schauen, ob das Bildchen breiter ist als 17cm.
2. Ist es kleiner - nichts tun (jene Icons oder kleinere Bilder die 1:1 aus dem Wiki kommen)
3. Ist es breiter - auf 17cm Breite proportional skalieren
Wäre seeeeehr dankbar, wer jemand eine Idee hätte, wie man das umsetzen könnte.
Danke und Gruß
Darius
Zuletzt geändert von dariuszmarek am So, 02.11.2008 16:39, insgesamt 1-mal geändert.
Re: Bilder automatisch per Makro auf Seitenbreite skalieren
Hi Darius,
naja, bist relativ neu hier. Solche Fragen solltest Du besser in Rubrik "Basic und Java" hier im Forum reinstellen.
Veruche mal folgenden Code:
Viel Erfolg.
Jürgen
naja, bist relativ neu hier. Solche Fragen solltest Du besser in Rubrik "Basic und Java" hier im Forum reinstellen.
Veruche mal folgenden Code:
Code: Alles auswählen
Sub Image_Customize
Dim size As New com.sun.star.awt.Size
oDocument = thisComponent
page = oDocument.drawPage
nNumShapes = Page.getCount()
k = 0
For i = 0 To nNumShapes - 1
oShape = Page.getByIndex( i )
oImage = oShape.FrameStyleName
if oImage = "Graphics" then
CurWidth = oshape.Width
CurHeight = oshape.Height
if CurWidth > 17000 Then
Factor = 17000 / CurWidth
NewWidth = CurWidth * Factor
NewHeight= CurHeight * Factor
size.Width = NewWidth
size.Height = NewHeight
oshape.setSize(size)
k = k + 1
end if
end if
next i
msgbox "Es wurde(n) " & k & " Bild(er) angepasst." , 64, "Bildgrösse anpassen"
End Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
-
- *
- Beiträge: 12
- Registriert: Mi, 11.06.2008 16:09
Re: Bilder automatisch per Makro auf Seitenbreite skalieren
Hallo Jürgen,
sorry, ich werde mich bessern, ich habe es schlicht übersehen... (vielleicht kann man es dahin verschieben)
Und danke erstmal für Deine schnelle Hilfe.
Es läuft aber leider nicht wie erwünscht...
Ich bekommen zwar eine Meldung, dass 7 Bilder angepasst wurden - angepasst wurde keins.
Dann habe ich nachgezählt, wieviel solche Bilder über den Rand hinausgehen - es sind 15.....
Wo sitzt der Wurm?
sorry, ich werde mich bessern, ich habe es schlicht übersehen... (vielleicht kann man es dahin verschieben)
Und danke erstmal für Deine schnelle Hilfe.
Es läuft aber leider nicht wie erwünscht...
Ich bekommen zwar eine Meldung, dass 7 Bilder angepasst wurden - angepasst wurde keins.
Dann habe ich nachgezählt, wieviel solche Bilder über den Rand hinausgehen - es sind 15.....
Wo sitzt der Wurm?
Re: Bilder automatisch per Makro auf Seitenbreite skalieren
Hmm, kannst Du bitte mal nachsehen ob die Grösse vielleicht schreibgeschützt ist.
Rechtsklick auf ein zu gosses Bild > Kontextmenue Bild... > Reiter Zusätze
Edit: Daran kann es nicht liegen wie ich selber getestet habe.
Rechtsklick auf ein zu gosses Bild > Kontextmenue Bild... > Reiter Zusätze
Edit: Daran kann es nicht liegen wie ich selber getestet habe.
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
-
- *
- Beiträge: 12
- Registriert: Mi, 11.06.2008 16:09
Re: Bilder automatisch per Makro auf Seitenbreite skalieren
Komische Dinge passieren:
also - ich probiere es mal unter oo 3.0 auf einer Linux-Kiste (open Suse 10.3) - OO ist aus regulären Repos.
ES FUNKTIONIERT!!!!!
Nur: nehme ist Standard "Neu Dokument" unter Word, stelle ich fest, dass die Bilder automatisch von Wiki auf die Seitenbreite skaliert werden (ohne Dein Makro).
Ziehe ich es über den Rand und klicke auf Makro - es wird wunderbar wieder angepasst.
Mache ich das in meiner Wiki2Writer-Vorlage - werden die Bilder nicht automatisch skaliert, dein Makro funktioniert auch nicht.
Wo sitz diesmal der Wurm?
Dein Skript ist 100% in Ordnung. Danke schöööön!
Die Bilder sind natürlich nicht geschütz. ich probiere noch rum und berichte....
OOOH - bin ich dooooof!
Es funktioniert wunderbar - ich habe aus Versehen eine alte Vorlage genommen. Da waren die Ränder 2cm links und 3 cm rechts, kein Wunder, dass Bilder mit 17 cm Breite mit 1 cm über den Rand rechts rausguckten....
Komischerweise stelle ich fest, dass die Grafiken unter OO 3.0 auf Linux ohne weiteres auf die Seitenbreite skaliert werden.
Ich schaue mal auf dem Firmen-Windows-Notebook nach....
Also Problem gelöst. Danke!!!!!!!!!!!!!!!!!!!!!!!!!!
also - ich probiere es mal unter oo 3.0 auf einer Linux-Kiste (open Suse 10.3) - OO ist aus regulären Repos.
ES FUNKTIONIERT!!!!!
Nur: nehme ist Standard "Neu Dokument" unter Word, stelle ich fest, dass die Bilder automatisch von Wiki auf die Seitenbreite skaliert werden (ohne Dein Makro).
Ziehe ich es über den Rand und klicke auf Makro - es wird wunderbar wieder angepasst.
Mache ich das in meiner Wiki2Writer-Vorlage - werden die Bilder nicht automatisch skaliert, dein Makro funktioniert auch nicht.
Wo sitz diesmal der Wurm?
Dein Skript ist 100% in Ordnung. Danke schöööön!
Die Bilder sind natürlich nicht geschütz. ich probiere noch rum und berichte....
OOOH - bin ich dooooof!
Es funktioniert wunderbar - ich habe aus Versehen eine alte Vorlage genommen. Da waren die Ränder 2cm links und 3 cm rechts, kein Wunder, dass Bilder mit 17 cm Breite mit 1 cm über den Rand rechts rausguckten....
Komischerweise stelle ich fest, dass die Grafiken unter OO 3.0 auf Linux ohne weiteres auf die Seitenbreite skaliert werden.
Ich schaue mal auf dem Firmen-Windows-Notebook nach....
Also Problem gelöst. Danke!!!!!!!!!!!!!!!!!!!!!!!!!!
Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren
Hallo Darius,
Jürgen
Folgender Code berücksichtigt die Seiteneinstellungen für die Bildgrösse:dariuszmarek hat geschrieben:Da waren die Ränder 2cm links und 3 cm rechts, kein Wunder, dass Bilder mit 17 cm Breite mit 1 cm über den Rand rechts rausguckten....[/[uote]

Code: Alles auswählen
Sub Image_Customize_2
Dim size As New com.sun.star.awt.Size
oDocument = thisComponent
page = oDocument.drawPage
MyPageStyle = oDocument.createInstance( "com.sun.star.style.PageStyle")
PageWidth = MyPageStyle.width
L_Margin = MyPageStyle.LeftMargin
R_Margin = MyPageStyle.RightMargin
UsedWidth = PageWidth - L_Margin - R_Margin
nNumShapes = Page.getCount()
k = 0
For i = 0 To nNumShapes - 1
oShape = Page.getByIndex( i )
oImage = oShape.FrameStyleName
if oImage = "Graphics" then
CurWidth = oshape.Width
CurHeight = oshape.Height
if CurWidth > UsedWidth Then
Factor = UsedWidth / CurWidth
NewWidth = CurWidth * Factor
NewHeight= CurHeight * Factor
size.Width = NewWidth
size.Height = NewHeight
oshape.setSize(size)
k = k + 1
end if
end if
next i
msgbox "Es wurde(n) " & k & " Bild(er) angepasst." , 64, "Bildgrösse anpassen"
End Sub[
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
-
- *
- Beiträge: 12
- Registriert: Mi, 11.06.2008 16:09
Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren
Danke! Danke! Danke!
Einfach Klasse! Ich wollte nicht unverschämt sein... der 2. Skript ist einfach Klasse, passt die Bilder so an, egal, wie Ränder definiert sind, das kann ich in jeder Vorlage nutzen, egal wie sie formatiert ist....
Komische Bemerkung:
Unter OO-Windows werden die Bilder an die Seitenbreite nicht automatisch angepasst - aber der 2. Skript richtet es schon...
Ist da irgendwo eine Einstellung dafür?
Und noch etwas in diesem Bereich...
@Jürgen
Liesse sich so etwas auch für Tabellen einrichten?
Das Problem ist - Kollegen formatieren im Wiki Tabellen mit fester Pixelbreite.
Dann muss ich sie im Writer markieren, und "relative" Breite definieren, dann passen sie sich automatisch der Seite an...
Also: Makro soll prüfen, ob eine Tabelle relative Breite hat, wenn nicht "relativ setzen".
Danke im voraus und Gruß
Darius
Einfach Klasse! Ich wollte nicht unverschämt sein... der 2. Skript ist einfach Klasse, passt die Bilder so an, egal, wie Ränder definiert sind, das kann ich in jeder Vorlage nutzen, egal wie sie formatiert ist....
Komische Bemerkung:
Unter OO-Windows werden die Bilder an die Seitenbreite nicht automatisch angepasst - aber der 2. Skript richtet es schon...
Ist da irgendwo eine Einstellung dafür?
Und noch etwas in diesem Bereich...
@Jürgen
Liesse sich so etwas auch für Tabellen einrichten?
Das Problem ist - Kollegen formatieren im Wiki Tabellen mit fester Pixelbreite.
Dann muss ich sie im Writer markieren, und "relative" Breite definieren, dann passen sie sich automatisch der Seite an...
Also: Makro soll prüfen, ob eine Tabelle relative Breite hat, wenn nicht "relativ setzen".
Danke im voraus und Gruß
Darius
Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren
???dariuszmarek hat geschrieben:dann passen sie sich automatisch der Seite an...
Also bei mir kommt dann z.B. 83%. Soll das so bleiben, oder willst Du die Tabelle auf 100% setzen?dariuszmarek hat geschrieben:Also: Makro soll prüfen, ob eine Tabelle relative Breite hat, wenn nicht "relativ setzen".
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
-
- *
- Beiträge: 12
- Registriert: Mi, 11.06.2008 16:09
Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren
Ach so, eigentlich dasselbe Prinzip wie vorher, d.h.
die Tabellen sollen 100% der A4 Seite (zwischen Rändern versteht sich) befüllen.
Es kommt aber vor, dass eine Tabelle sehr klein sein kann, dann soll man sie nicht künstlich auf 100% ausblähen, dann sollen sie so bleiben, nur die, die nach dem Einfügen über den rechten Rand rausgucken.
die Tabellen sollen 100% der A4 Seite (zwischen Rändern versteht sich) befüllen.
Es kommt aber vor, dass eine Tabelle sehr klein sein kann, dann soll man sie nicht künstlich auf 100% ausblähen, dann sollen sie so bleiben, nur die, die nach dem Einfügen über den rechten Rand rausgucken.
Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren
Folgendes Makro erledigt diesen Job für Dich:dariuszmarek hat geschrieben:Es kommt aber vor, dass eine Tabelle sehr klein sein kann, dann soll man sie nicht künstlich auf 100% ausblähen, dann sollen sie so bleiben, nur die, die nach dem Einfügen über den rechten Rand rausgucken
Code: Alles auswählen
Sub Table_RelativeWidth_100
Dim oTable As Object
Dim tabs()
oDoc = ThisComponent
oTables = oDoc.GetTextTables()
Anzahl = oTables.getcount
page = oDoc.drawPage
MyPageStyle = oDoc.createInstance( "com.sun.star.style.PageStyle")
PageWidth = MyPageStyle.width
L_Margin = MyPageStyle.LeftMargin
R_Margin = MyPageStyle.RightMargin
UsedWidth = PageWidth - L_Margin - R_Margin
nNumShapes = Page.getCount()
for i = 0 to Anzahl -1
oTable = odoc.texttables(i)
Table_Width = otable.Width
if Table_Width > UsedWidth then
oTable.RelativeWidth = 100
oTable.RightMargin = 0
end if
next i
End Sub
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem