[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt [Script] neue Seite anlegen und zwei unterschiedliche Spalten

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

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Clause
Beiträge gesamt: 28

4. Apr 2009, 17:02
Beitrag # 1 von 12
Bewertung:
(9452 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ihr,

Ich möchte per JavaScript eine neue Seite in einem neuen Dokument erzeugen lassen.

Wie kann es da machen, dass ich innerhalb meinem Dokument, wenn ich zwei Spalten anlegen lasse, dass ich z.B. die erste Spalte auf eine Feste breite Formatiere?
So dass ich eben eine "Marginalspalte" bekomme.
X

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Martin Fischer
  
Beiträge gesamt: 12783

4. Apr 2009, 17:54
Beitrag # 2 von 12
Beitrag ID: #392098
Bewertung:
(9441 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Clause,

eine neue Seite legst Du über den add()-Befehl an.

Benutzerdefinierte Spalten legst Du über die marginPreferences einer Seite an.
Und zwar über die columnsPositions (Positionen der Spalten):

Zitat von ScriptingReference Array of Measurement Unit (Number or String)=any
r/w

The distance that each column guide is placed from the left margin, formatted as an array in the format [guide1, guide2, guide3].


Hier ein Beispiel für zwei benutzerdefinierte Spalten (1. Spalte: 1/5 der Satzspiegelbreite, die zweite Spalte beginnt nach einer definierten Stegbreite; hier 4 mm):
Code
var p =  app.activeDocument.pages.firstItem(); // erste Seite 
var myColumnsGutter = 4; // Stegbreite
var pWidth =app.activeDocument.documentPreferences.pageWidth; // Seitenbreite
var pMargins = {left:p.marginPreferences.left, right:p.marginPreferences.right}; // Ränder links und rechts

// Spaltenkanten: linker Rand, Satzspiegelbreite/5, Satzspiegelbreite/5 plus Steg, rechter Rand.
p.marginPreferences.columnsPositions =
[
0,
(pWidth - pMargins.right - pMargins.left)/5 ,
(pWidth - pMargins.right - pMargins.left)/5 + myColumnsGutter,
pWidth - pMargins.right - pMargins.left
];



als Antwort auf: [#392094]
(Dieser Beitrag wurde von Martin Fischer am 4. Apr 2009, 17:55 geändert)

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Clause
Beiträge gesamt: 28

4. Apr 2009, 18:48
Beitrag # 3 von 12
Beitrag ID: #392100
Bewertung:
(9419 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Danke für Deine schnelle Hilfe, leider macht mir das keine kleinere Spalte... oder ich stehe total auf dem Schlauch.

Das ist mein Code bis jetzt... Mit sicherheit warscheinlich falsch...
Code
with (app.marginPreferences){ 
//Ränder als preferences schreiben
var myY1 = top;
var myX1 = left;
var myY2 = bottom;
var myX2 = right;
//Ränder definieren
top = "19mm";
left = "31mm";
bottom = "0mm";
right = "6mm";
}

//neues Dokument erstellen
var myDocument = app.documents.add();
myDocument.documentPreferences.pageWidth = "185mm";
myDocument.documentPreferences.pageHeight = "250mm";
myDocument.documentPreferences.pageOrientation = PageOrientation.portrait;

//Masseinheit des Dokumentes
with(myDocument.viewPreferences){
rulerOrigin = RulerOrigin.pageOrigin;
horizontalMeasurementUnits = MeasurementUnits.millimeters;
verticalMeasurementUnits = MeasurementUnits.millimeters;
}

//Beschnitt und Infobereich definieren
with(myDocument.documentPreferences){
//Beschnitt definieren
documentBleedBottomOffset = "3mm";
documentBleedTopOffset = "3mm";
documentBleedInsideOrLeftOffset = "3mm";
documentBleedOutsideOrRightOffset = "3mm";
//Infobereich
slugBottomOffset = "5mm";
slugTopOffset = "10mm";
slugInsideOrLeftOffset = "5mm";
slugRightOrOutsideOffset = "55mm";
}

//Ränder definieren
with (app.marginPreferences){
top = myY1;
left = myX1;
bottom = myY2;
right = myX2;
}

var p = app.activeDocument.pages.firstItem(); // erste Seite
var myColumnsGutter = 8; // Stegbreite
var pWidth =app.activeDocument.documentPreferences.pageWidth; // Seitenbreite
var pMargins = {left:p.marginPreferences.left, right:p.marginPreferences.right}; // Ränder links und rechts

// Spaltenkanten: linker Rand, Satzspiegelbreite/5, Satzspiegelbreite/5 plus Steg, rechter Rand.
p.marginPreferences.columnsPositions =
[
0,
(pWidth - pMargins.right - pMargins.left)/5 ,
(pWidth - pMargins.right - pMargins.left)/5 + myColumnsGutter,
pWidth - pMargins.right - pMargins.left
];


Müsste ich jetzt um die linke Spalte auf 43mm fest zu bekommen das so machen?
Code
 
// Spaltenkanten: linker Rand, Satzspiegelbreite/5, Satzspiegelbreite/5 plus Steg, rechter Rand.
p.marginPreferences.columnsPositions =
[
0,
43 ,
43 + myColumnsGutter,
pWidth - pMargins.right - pMargins.left - myColumnsGutter - 43
];



als Antwort auf: [#392098]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Martin Fischer
  
Beiträge gesamt: 12783

4. Apr 2009, 19:03
Beitrag # 4 von 12
Beitrag ID: #392102
Bewertung:
(9410 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Clause,

> Mit sicherheit warscheinlich falsch...

Nett gesagt. ;-)

Kannst Du irgendwo ein Beispieldokument (inx) zur Verfügung stellen, aus dem der Zielzustand ersichtlich ist.
Denn ich verstehe im Moment nicht mehr genau, was genau Du vorhast.


als Antwort auf: [#392100]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Martin Fischer
  
Beiträge gesamt: 12783

4. Apr 2009, 19:26
Beitrag # 5 von 12
Beitrag ID: #392103
Bewertung:
(9392 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Clause,

> Müsste ich jetzt um die linke Spalte auf 43mm fest zu bekommen das so machen?

Ja.
Sollte - bis auf die letzte Koordinate - so passen.


Die letzte Koordinate (vom linken Satzspiegelrand her gerechnet):

pWidth - pMargins.right - pMargins.left


als Antwort auf: [#392100]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Clause
Beiträge gesamt: 28

4. Apr 2009, 19:34
Beitrag # 6 von 12
Beitrag ID: #392104
Bewertung:
(9389 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

meine so, wie der Bildschirmschnappschuss.

eine kleine Spalte (feste Breite) und dann zwei extra Spalten, die sich den verbleibenden Platz aufteilen. Hoffe das ich es jetzt verständlicher gemacht habe...
Bildschirmschnappschuss


als Antwort auf: [#392102]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Martin Fischer
  
Beiträge gesamt: 12783

4. Apr 2009, 21:24
Beitrag # 7 von 12
Beitrag ID: #392106
Bewertung:
(9343 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Clause,

habe Dein Skript ausprobiert.
Ich finde, das sieht schon richtig gut aus.

Dank Deiner Skizze habe jetzt auch kapiert, was Du vorhast.
Es geht also um drei Spalten, wovon eine - nämlich die Marginalspalte - einen festen Wert bekommt, während die anderen sich aus dem Rest des Satzspiegels abzüglich des Stegs ergeben.

Die linke Kante der ersten Spalte ist klar: 0.
Die rechte Kante der letzten Spalte ist gemessen vom linken Rand gleich der Satzspiegelbreite: pWidth - pMargins.left - pMargins.right.

Die rechte Kante der ersten Spalte ist 0 + die Breite der Marginalspalte, also 43.
Die linke Kante der zweiten Spalte ist dasselbe zzgl. der Breite des Stegs: 43 + myColumnsGutter.

Dann kommt dir rechte Kante der zweiten Spalte. Hier ist etwas Mathematik gefragt.
Zu der linken Kante der zweite Spalte kommt die Hälfte des verbleibenden Rests abzüglich der Hälfte der Stegbreite hinzu: myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 - myColumnsGutter/2.

Fehlt noch die linke Kante der dritten Spalte. Die ist gleich der rechten Kante der zweiten Spalte plus der Stegbreite, also myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 + myColumnsGutter/2 .

Im Code versteht sich das leichter.
Weil wir die Breite der Marginalspalte mehrfach brauchen und Du sie vielleicht nachträglich noch verkleinern möchtest, wenn Du siehst, daß die Textspalten nur noch 44,5 mm breit sind, habe ich sie in ne extra Variable geschrieben.

Code
var myMarginalSpaltenbreite = 43; 
p.marginPreferences.columnsPositions =
[
0,
myMarginalSpaltenbreite ,
myMarginalSpaltenbreite + myColumnsGutter,
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 - myColumnsGutter/2 ,
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 + myColumnsGutter/2 ,
pWidth - pMargins.left - pMargins.right
];


Die Formel für die 4. und die 5. Hilfslinie ist, so wie sie hergeleitet ist, etwas kompliziert.
Mit etwas mathematischem Gespür sollte sie sich noch vereinfachen lassen.
Das ist Dein Job. ;-)


als Antwort auf: [#392104]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Clause
Beiträge gesamt: 28

5. Apr 2009, 12:17
Beitrag # 8 von 12
Beitrag ID: #392119
Bewertung:
(9248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Danke. Leider macht mir das Script jetzt nur drei gleich breite Spalten.

Meinst Du, das könnte daran liegen, dass die "CostumColums" nicht auf True steht?

Habe es mal versucht einzubauen, aber mit meinen geringen Kenntnissen bekomm ich das irgendwie nicht hin...


Code
with (app.marginPreferences){ 
//Ränder als preferences schreiben
var myY1 = top;
var myX1 = left;
var myY2 = bottom;
var myX2 = right;
//Ränder definieren
top = "19mm";
left = "31mm";
bottom = "0mm";
right = "6mm";
}

//neues Dokument erstellen
var myDocument = app.documents.add();
myDocument.documentPreferences.pageWidth = "305mm";
myDocument.documentPreferences.pageHeight = "250mm";
myDocument.documentPreferences.pageOrientation = PageOrientation.portrait;

//Masseinheit des Dokumentes
with(myDocument.viewPreferences){
rulerOrigin = RulerOrigin.pageOrigin;
horizontalMeasurementUnits = MeasurementUnits.millimeters;
verticalMeasurementUnits = MeasurementUnits.millimeters;
}

//Beschnitt und Infobereich definieren
with(myDocument.documentPreferences){
//Beschnitt definieren
documentBleedBottomOffset = "3mm";
documentBleedTopOffset = "3mm";
documentBleedInsideOrLeftOffset = "3mm";
documentBleedOutsideOrRightOffset = "3mm";
//Infobereich
slugBottomOffset = "5mm";
slugTopOffset = "10mm";
slugInsideOrLeftOffset = "5mm";
slugRightOrOutsideOffset = "55mm";
}

//Ränder definieren
with (app.marginPreferences){
top = myY1;
left = myX1;
bottom = myY2;
right = myX2;
///

var p = app.activeDocument.pages.firstItem(); // erste Seite
var myColumnsGutter = 8; // Stegbreite
var pWidth =app.activeDocument.documentPreferences.pageWidth; // Seitenbreite
var pMargins = {left:myX1, right:myX2}; // Ränder links und rechts
var myMarginalSpaltenbreite = 22;
p.MarginPreference.customColumns = true;
p.marginPreferences.columnsPositions =
[
0,
myMarginalSpaltenbreite ,
myMarginalSpaltenbreite + myColumnsGutter,
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 - myColumnsGutter/2 ,
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 + myColumnsGutter/2 ,
pWidth - pMargins.left - pMargins.right
];
}



als Antwort auf: [#392106]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Martin Fischer
  
Beiträge gesamt: 12783

5. Apr 2009, 12:25
Beitrag # 9 von 12
Beitrag ID: #392122
Bewertung:
(9247 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Clause,

auf die Schnelle ...

customMargins ist readonly.
Kannst Du also so nicht setzen.

Ich habe den Eindruck, daß es bei mir wie gewünscht funktioniert.
Teste mal diese Variante:

Code
with (app.marginPreferences){  
//Ränder als preferences schreiben
var myY1 = top;
var myX1 = left;
var myY2 = bottom;
var myX2 = right;
//Ränder definieren
top = "19mm";
left = "31mm";
bottom = "0mm";
right = "6mm";
}

//neues Dokument erstellen
var myDocument = app.documents.add();
myDocument.documentPreferences.pageWidth = "185mm";
myDocument.documentPreferences.pageHeight = "250mm";
myDocument.documentPreferences.pageOrientation = PageOrientation.portrait;

//Masseinheit des Dokumentes
with(myDocument.viewPreferences){
rulerOrigin = RulerOrigin.pageOrigin;
horizontalMeasurementUnits = MeasurementUnits.millimeters;
verticalMeasurementUnits = MeasurementUnits.millimeters;
}

//Beschnitt und Infobereich definieren
with(myDocument.documentPreferences){
//Beschnitt definieren
documentBleedBottomOffset = "3mm";
documentBleedTopOffset = "3mm";
documentBleedInsideOrLeftOffset = "3mm";
documentBleedOutsideOrRightOffset = "3mm";
//Infobereich
slugBottomOffset = "5mm";
slugTopOffset = "10mm";
slugInsideOrLeftOffset = "5mm";
slugRightOrOutsideOffset = "55mm";
}

//Ränder definieren
with (app.marginPreferences){
top = myY1;
left = myX1;
bottom = myY2;
right = myX2;
}

var p = app.activeDocument.pages.firstItem(); // erste Seite
var myColumnsGutter = 8; // Stegbreite
var pWidth =app.activeDocument.documentPreferences.pageWidth; // Seitenbreite
var pMargins = {left:p.marginPreferences.left, right:p.marginPreferences.right}; // Ränder links und rechts

var myMarginalSpaltenbreite = 22;
p.marginPreferences.columnsPositions =
[
0,
myMarginalSpaltenbreite ,
myMarginalSpaltenbreite + myColumnsGutter,
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 - myColumnsGutter/2 ,
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 + myColumnsGutter/2 ,
pWidth - pMargins.left - pMargins.right
];



als Antwort auf: [#392119]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Clause
Beiträge gesamt: 28

5. Apr 2009, 12:52
Beitrag # 10 von 12
Beitrag ID: #392124
Bewertung:
(9237 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich habe es...

Habe auf meinem InDesign DTPtools Page Control drauf.
Und das lässt mir das ändern der Spaltenbreite nicht zu.

Habe es jetzt mal deinstalliert und dann läuft das Script.

Dank Dir!


als Antwort auf: [#392122]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Martin Fischer
  
Beiträge gesamt: 12783

5. Apr 2009, 13:18
Beitrag # 11 von 12
Beitrag ID: #392128
Bewertung:
(9223 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Clause,

Antwort auf [ Clause ] Habe auf meinem InDesign DTPtools Page Control drauf.
Und das lässt mir das ändern der Spaltenbreite nicht zu.


Oha!
Interessante Beobachtung.

Ist es mit aktivem PageControl möglich, unterschiedliche Spaltenbreiten von Hand zu definieren?


Vielleicht möchtest Du DTP-Tools auf diese Umstände hinweisen.


als Antwort auf: [#392124]

[Script] neue Seite anlegen und zwei unterschiedliche Spalten

Clause
Beiträge gesamt: 28

6. Apr 2009, 17:47
Beitrag # 12 von 12
Beitrag ID: #392201
Bewertung:
(9096 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, mit aktivem PageControl kann ich die Spaltenhilfsinien verändern.
Nur nicht über das Script.

Habe jetzt mal die Damen und Herren von DTPtools darüber informiert...


als Antwort auf: [#392128]
X