[gelöst] Bilder per Makro auf Seitenbreite skalieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] Bilder per Makro auf Seitenbreite skalieren

Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren

von turtle47 » Mo, 03.11.2008 22:30

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
Folgendes Makro erledigt diesen Job für Dich:

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
Jürgen

Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren

von dariuszmarek » So, 02.11.2008 21:37

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.

Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren

von turtle47 » So, 02.11.2008 21:25

dariuszmarek hat geschrieben:dann passen sie sich automatisch der Seite an...
???
dariuszmarek hat geschrieben:Also: Makro soll prüfen, ob eine Tabelle relative Breite hat, wenn nicht "relativ setzen".
Also bei mir kommt dann z.B. 83%. Soll das so bleiben, oder willst Du die Tabelle auf 100% setzen?

Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren

von dariuszmarek » So, 02.11.2008 20:46

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

Re: [gelöst] Bilder per Makro auf Seitenbreite skalieren

von turtle47 » So, 02.11.2008 19:29

Hallo Darius,
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]
Folgender Code berücksichtigt die Seiteneinstellungen für die Bildgrösse: :lol:

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[
Jürgen

Re: Bilder automatisch per Makro auf Seitenbreite skalieren

von dariuszmarek » So, 02.11.2008 16:28

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!!!!!!!!!!!!!!!!!!!!!!!!!!

Re: Bilder automatisch per Makro auf Seitenbreite skalieren

von turtle47 » So, 02.11.2008 14:45

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.

Re: Bilder automatisch per Makro auf Seitenbreite skalieren

von dariuszmarek » So, 02.11.2008 14:30

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?

Re: Bilder automatisch per Makro auf Seitenbreite skalieren

von turtle47 » So, 02.11.2008 08:34

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:

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
Viel Erfolg.

Jürgen

[gelöst] Bilder per Makro auf Seitenbreite skalieren

von dariuszmarek » Sa, 01.11.2008 20:58

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

Nach oben