[GastForen Programme Print/Bildbearbeitung Adobe InDesign Automatische Rahmenhöhe

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Automatische Rahmenhöhe

blenio23
Beiträge gesamt: 38

12. Okt 2008, 21:20
Beitrag # 1 von 23
Bewertung:
(8685 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,
ich habe mal ein PlugIn für InDesign gehabt, welches per Tastenkombination die Höhe von einem Textrahmen entsprechend dem Inhalt geändert hat. Standardmäßig kann man ja Rahmen an Inhalt anpassen sagen. Dabei berechnet er aber auch die Rahmenbreite. Ich will aber nur die Rahmenhöhe.
Das PlugIn ist aber ziemlich teuer. Daher meine Frage kennt ihr ein Script oder irgendwie ein Trick wie ich das Geld was ich sonst für dieses PlugIn ausgeben muss lieber für Weizenbier ausgeben kann! ;)
X

Automatische Rahmenhöhe

Martin Fischer
  
Beiträge gesamt: 12778

12. Okt 2008, 22:06
Beitrag # 2 von 23
Beitrag ID: #369982
Bewertung:
(8675 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Simon,

ich wüßte da schon was, wenn Du Dein Geld für mein Clausthaler ausgeben wolltest. ;-)

Wenn Dir Dein Weizen aber näher ist, dann möchte ich Dich ermuntern, hier im Forum auf die Suche nach so einem Skript zu gehen. Ich kann nicht ausschließen, dass so was bereits veröffentlicht ist.

Kennst Du das kostenlose Plugin AutoFit?
Schau mal hier nach: http://www.hilfdirselbst.ch/...i?post=362486#362486


als Antwort auf: [#369978]
(Dieser Beitrag wurde von Martin Fischer am 12. Okt 2008, 22:10 geändert)

Automatische Rahmenhöhe

blenio23
Beiträge gesamt: 38

12. Okt 2008, 22:08
Beitrag # 3 von 23
Beitrag ID: #369983
Bewertung:
(8671 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
wieso willst du dein Wissen nur gegen Flüssigkeit tauschen?! ;)

Hilf' mir auf die Sprünge .. ich habe nichts gefunden!


als Antwort auf: [#369982]

Automatische Rahmenhöhe

Gerald Singelmann
  
Beiträge gesamt: 6269

12. Okt 2008, 22:08
Beitrag # 4 von 23
Beitrag ID: #369984
Bewertung:
(8670 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Machen Sie einen Doppelklick auf den mittleren Anfasser der oberen oder unteren Kante.


als Antwort auf: [#369978]

Automatische Rahmenhöhe

blenio23
Beiträge gesamt: 38

12. Okt 2008, 22:11
Beitrag # 5 von 23
Beitrag ID: #369985
Bewertung:
(8665 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,
wie einfach die Welt doch sein kann! .. Danke! :)

Jetzt aber noch die alles entscheidende Frage, wenn ich jetzt 5000 Textrahmen habe. Was mache ich dann? (Ich will nicht jeden Textrahmen einzeln anklicken.)

Was für'n Bier soll nach Hamburg auf die Reise gehen?! ;)


als Antwort auf: [#369984]
(Dieser Beitrag wurde von sizu am 12. Okt 2008, 22:12 geändert)

Automatische Rahmenhöhe

Martin Fischer
  
Beiträge gesamt: 12778

12. Okt 2008, 22:18
Beitrag # 6 von 23
Beitrag ID: #369987
Bewertung:
(8655 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> wieso willst du dein Wissen nur gegen Flüssigkeit tauschen?! ;)
> Hilf' mir auf die Sprünge .. ich habe nichts gefunden!

Abgesehen davon, dass heute wohl manche Bank gerne flüssig wäre, bin ich doch keine Suchmaschine. ;-)

> Was für'n Bier soll nach Hamburg auf die Reise gehen?! ;)

Willst Du Eulen nach Athen tragen?
(Hamburger Bier hatte einen guten Ruf)


als Antwort auf: [#369983]
(Dieser Beitrag wurde von Martin Fischer am 12. Okt 2008, 22:24 geändert)

Automatische Rahmenhöhe

blenio23
Beiträge gesamt: 38

12. Okt 2008, 22:26
Beitrag # 7 von 23
Beitrag ID: #369989
Bewertung:
(8643 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Willst Du Eulen nach Athen tragen?


Wenn das der Preis ist, damit ich nicht alle 5000 Textrahmen per Hand einstellen muss! :D


als Antwort auf: [#369987]

Automatische Rahmenhöhe

Gerald Singelmann
  
Beiträge gesamt: 6269

12. Okt 2008, 23:42
Beitrag # 8 von 23
Beitrag ID: #369995
Bewertung:
(8603 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Script checkt alle markierten Objekte. Die die Textrahmen sind, werden an den Inhalt angepasst und daraufhin werden die x-Koordinaten wieder repariert.

Oder ich habe die Aufgabe nicht verstanden.


Code
if (app.selection.length > 0) {main();} 

function main() {
var allSel = app.selection;
for (var n = 0; n < allSel.length; n++) {
var aSel = allSel[n];
if (aSel.constructor.name == "TextFrame") {
var x1 = aSel.geometricBounds[1];
var x2 = aSel.geometricBounds[3];
aSel.fit(FitOptions.FRAME_TO_CONTENT);
var y1 = aSel.geometricBounds[0];
var y2 = aSel.geometricBounds[2];
aSel.geometricBounds = [y1,x1,y2,x2];
}
}
}



als Antwort auf: [#369989]

Automatische Rahmenhöhe

blenio23
Beiträge gesamt: 38

12. Okt 2008, 23:48
Beitrag # 9 von 23
Beitrag ID: #369996
Bewertung:
(8602 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,
> Oder ich habe die Aufgabe nicht verstanden.

Perfekt danke. Kannst du ja glatt in den Premium-Bereich reinstellen.
Einen kleinen Hacken gibt es aber noch. Wenn der Textrahmen aber Übersatz hat. Dann sieht er den Rahmen aber nicht wieder auf! ;) - Egal .. so ist 1a - Danke!


als Antwort auf: [#369995]

Automatische Rahmenhöhe

Martin Fischer
  
Beiträge gesamt: 12778

13. Okt 2008, 08:03
Beitrag # 10 von 23
Beitrag ID: #370002
Bewertung:
(8495 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,

ich habe mich an einer Lösung unter Umgehung der fit()/Anpassungs-Funktion versucht.
Allerdings muss dabei ein mgl. Versatz im Textrahmen unten berücksichtigt werden.

Außerdem muss unterschieden werden, ob im Textrahmen Text enthalten ist oder nicht.
Denn ein erster Versuch mit der Referenzierung der Grundlinie des letzten Einfügepunkts eines Textrahmens scheiterte bei verknüpften Textrahmen an der Stelle, wo Text von einem Textrahmen in den folgenden läuft. Hier scheint der letzte Einfügepunkt (insertionPoints[-1]) nicht mehr im referenzierten Textrahmen zu liegen, sondern bereits dem folgenden zugeordnet zu sein.

Das kann leicht mit folgendem Skriptle überprüft werden:

Code
app.selection[0].insertionPoints[-1].parentTextFrames[0].select(); 


(Vorraussetzung: es ist ein Textrahmen ausgewählt, aus dem der Text in einen anderen Textrahmen überläuft.)
Das Skript wählt den Textrahmen aus, in dem sich der letzte Einfügepunkt des ausgewählten Textrahmens befindet.

Ich hätte zunächst erwartet, dass es der Textrahmen sein müsste, der aktuell ausgewählt ist, dass sich also an der Auswahl nichts ändern würde.
Doch nein, dem ist nicht so. Der letzte Einfügepunkt liegt in diesem Fall (des Überlaufs des Textes) im folgenden Textrahmen und dürfte mit dem ersten Einfügepunkt (insertionPoints[0]) dieses zweiten Textrahmens identisch sein. Denn es wird der folgende Textrahmen ausgewählt.

Nun weiß man auch das. ;-)

Hier meine Studie unter Umgehung der fit()-Funktion:

Code
for ( x = 0; x < app.activeDocument.textFrames.length; x++ ) 
fitVertical(app.activeDocument.textFrames[x] );

function fitVertical( f )
{
var b = f.geometricBounds; // Koordinaten
var bl = (f.characters.length > 0) // Textrahmen mit oder ohne Text
? f.characters[-1].baseline
: f.insertionPoints[0].baseline;
var sp = f.textFramePreferences.insetSpacing[2]; // Versatz unten
f.geometricBounds = [ b[0], b[1], bl + sp, b[3] ]; // neue Koordinaten
}


Mein anfängliche Skepsis wg. den Unterlängen hat sich bei den Testläufen zerschlagen.
Wären diese zu berücksichtigen gewesen, hätte ich entweder schummeln oder mich vor der fit()-Variante geschlagen geben müssen. InDesign lässt aber die Unterlängen aus dem Textrahmen baumeln und akzeptiert die Textrahmenbegrenzung auf der Grundlinie des letzten Zeichens.
Selbst Tiefstellungen und Grundlinienversatz nach unten stören dabei nicht.


als Antwort auf: [#369995]

Automatische Rahmenhöhe

Gerald Singelmann
  
Beiträge gesamt: 6269

13. Okt 2008, 09:54
Beitrag # 11 von 23
Beitrag ID: #370014
Bewertung:
(8458 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

interessanter Ansatz. Ich habe jetzt noch mal eingebaut, dass auch Rahmen mit Übersatz angepasst werden.
Bei uns beiden fehlt noch, dass Rahmen, die nach unten ausgerichtet sind, nicht korrekt verarbeitet werden.


Zitat if (app.selection.length > 0) {main();}

function main() {
var allSel = app.selection;
for (var n = 0; n < allSel.length; n++) {
var aSel = allSel[n];
if (aSel.constructor.name == "TextFrame") {
var b = aSel.geometricBounds;
var marginBottom = app.activeDocument.documentPreferences.pageHeight - app.activeDocument.marginPreferences.bottom;
aSel.geometricBounds = [b[0], b[1], marginBottom, b[3]];
aSel.fit(FitOptions.FRAME_TO_CONTENT);
var b1 = aSel.geometricBounds;
aSel.geometricBounds = [b1[0],b[1],b1[2],b[3]];
}
}
}



als Antwort auf: [#370002]

Automatische Rahmenhöhe

zaphodbeeblebroxx
Beiträge gesamt: 408

13. Okt 2008, 10:09
Beitrag # 12 von 23
Beitrag ID: #370018
Bewertung:
(8452 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Herr Singelmann, Hallo Martin,

ich hätte noch eine Anregung zu dem Script der "Rahmenhöhe anpassen", da ich selbst mal an einem Script für die Anpassung der Rahmenhöhe "gebastelt" habe:
Anpassung der Rahmenhöhe, wenn mehr als eine Textspalte im Rahmen vorhanden ist. Ich hatte das so gelöst, dass anhand der Gesamtzeilenanzahl des Textes im Rahmen und der Anzahl der Textspalten die Rahmenhöhe ermittelt wird. Anbei ein Bsp., das ich mal zur Anpassung von 2spaltigen Textrahmen erstellt hatte. Ich hatte vor kurzem eine Rückmeldung von Ralf aus Istrien (mediteran), dass das Script auch unter CS3 funktioniert.

Code
//2ColumnsTextFrameHeight.jsx  
//DESCRIPTION:Höhe für Textrahmen bestimmen.
//
if (app.documents.length != 0){
}
else{
alert("Kein Dokument geöffnet. Bitte ein Dokument öffnen und den 2spaltigen Textrahmen auswählen.");
exit();
}
if (app.selection.length != 1){
alert("Bitte einen 2spaltigen Textrahmen auswählen.");
exit();
}
var myDoc = app.documents[0];
var mySel = app.selection[0];
if (mySel.constructor.name == "TextFrame"){
if (mySel.textFramePreferences.textColumnCount != "2"){
alert("Gewählter Rahmen ist nicht 2spaltig! Skript wird beendet.");
exit();
}
var myInset = mySel.textFramePreferences.insetSpacing[2];
var myFirstLine = mySel.texts[0].lines[0].baseline;
var myLines = mySel.texts[0].lines.length;
var myBounds = mySel.geometricBounds;
if (mySel.overflows == true){
var myNewBounds = [myBounds[0], myBounds[1], myBounds[0] + ((myLines+1)*mySel.texts[0].leading), myBounds[3]];
mySel.geometricBounds = myNewBounds;
var myBounds = mySel.geometricBounds;
}
var myLines = mySel.texts[0].lines.length;
var myColumns = mySel.textFramePreferences.textColumnCount;
var myHalfLines = myLines % 2;
var myLeftColumnLines = myLines/2;
var myMaxLines = Math.ceil(myLeftColumnLines) + 1;
try {
var myBaseline = mySel.lines[myMaxLines-myColumns].baseline;
}
catch(e){}
var myNewHeight = myBaseline - myBounds[0] + myInset;
var myNewBounds = [myBounds[0], myBounds[1], myBounds[0]+myNewHeight, myBounds[3]];
mySel.geometricBounds = myNewBounds;
}



als Antwort auf: [#370014]

Automatische Rahmenhöhe

Martin Fischer
  
Beiträge gesamt: 12778

13. Okt 2008, 10:23
Beitrag # 13 von 23
Beitrag ID: #370020
Bewertung:
(8442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,

auch interessant.

Funktioniert sogar überraschenderweise auch dann, wenn ein verankerter Textrahmen ausgewählt ist.

Nach etwas Nachdenken: warum sollte ein verankerter Textrahmen nicht bis zur unteren Satzspiegelkante ausgedehnt werden können? Man muss ich so weit ausgedehnt nicht zwingend zu Gesicht bekommen.

Allerdings sollte der ausgewählte Textrahmen nicht unterhalb der unteren Satzspiegelkante stehen (was bei einem ordentlichen Setzer nahezu ausgeschlossen werden kann). Sonst klebt er hinterher an dieser Kante.


als Antwort auf: [#370014]

Automatische Rahmenhöhe

Martin Fischer
  
Beiträge gesamt: 12778

13. Okt 2008, 10:33
Beitrag # 14 von 23
Beitrag ID: #370022
Bewertung:
(8436 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Matthias,

sehr schön.

Dabei kommt natürlich gleich der Wunsch nach einer Erweiterung auf eine unbestimmte Zahl an Spalten auf. ;-)


Gehe ich recht in der Annahme, dass Du von einem einheitlichen Zeilenabstand aller Zeilen im ausgewählten Textrahmen ausgehst und eine Unterbrechnung dieses einheitlichen Zeilenabstands beispielsweise bei einer Überschrift oder bei einem Absatzabstand davor oder danach Probleme in der Berechnung verursachen könnten?

Möglicherweise kämen auch noch Umbruchoptionen (zusammenhaltende Zeilen, nicht trennen von x Zeilen) in die Quere.

Aber für Text mit gleichmäßigem Zeilenabstand und ohne Sondergeschichten ist das eine gute Hilfe.


als Antwort auf: [#370018]

Automatische Rahmenhöhe

zaphodbeeblebroxx
Beiträge gesamt: 408

13. Okt 2008, 10:51
Beitrag # 15 von 23
Beitrag ID: #370025
Bewertung:
(8425 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Martin,

Du hast natürlich Recht, das Script war nur für Textrahmen mit einheitlichem Zeilenabstand gemacht. Mit Überschriften bzw. versch. ZABs funktioniert das nicht.

Eine Änderung für eine besliebige Anzahl an Spalten wäre ebenfalls denkbar. Mein Bsp. war nur für 2spaltige Rahmen gedacht.


als Antwort auf: [#370022]
X