[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skript für Textrahmen-/Grafikrahmen gesucht...

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

Skript für Textrahmen-/Grafikrahmen gesucht...

typomaniac
Beiträge gesamt: 250

23. Okt 2006, 08:12
Beitrag # 1 von 12
Bewertung:
(4148 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an allle Skript-Profis,
für ein 206-seitiges Dokument suche ich ein Skript, das folgende Aufgabe automatisiert:
Sämtliche Grafiken sollen auf einer Ebene platziert werden und sämtliche Textrahmen auf einer separaten. Da das Dokument eine endlose Menge an Einwort-Textrahmen enthält, ist das manuelle Verschieben auf eine andere Ebene eine ebenso endlose Sache. Zudem muss in einem zweiten Schritt jeder Textrahmen noch zusätzlich auf eine weitere, neue Ebene versetzt dupliziert werden, weil das Dokument anschliessend bilingual übersetzt wird. Dieser Job muss allerdings nicht zwingend per (wenn schon...) separatem Skript erfolgen, sondern kann allenfalls manuell erfolgen. Wer macht mir ein Angebot?

Merssi!
X

Skript für Textrahmen-/Grafikrahmen gesucht...

jkarl
Beiträge gesamt: 58

23. Okt 2006, 09:05
Beitrag # 2 von 12
Beitrag ID: #257960
Bewertung:
(4136 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo typomaniac,

das geht natürlich mit einem Script.

Allerdings solltest Du schon ein paar mehr Gedanken weitergeben, damit wir auch wissen, woher das Script die Informationen nehmen soll
- welche Rahmen auf welcher Seite platziert werden sollen
- an welcher geographischen Position die Rahmen erzeugt werden sollen
- welchen Textinhalt die Rahmen haben sollen
- ob die Texte auch noch passend formatiert werden sollen, ob pro Textrahmen ein Format verwendet wird oder ob die Formatierung innerhalb des Textes auch wichtig ist.
- ob Du ein Script für Windows oder Mac benötigts
- InDesign CS oder CS 2?
- und was Dir sonst noch so einfällt.

Viele Grüße
Joachim


als Antwort auf: [#257957]

Skript für Textrahmen-/Grafikrahmen gesucht...

Martin Fischer
  
Beiträge gesamt: 12775

23. Okt 2006, 09:13
Beitrag # 3 von 12
Beitrag ID: #257962
Bewertung:
(4130 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

> Sämtliche Grafiken sollen auf einer Ebene platziert werden und sämtliche Textrahmen
> auf einer separaten.

Quick & dirty geht das mit folgendem Schnipsel:
Code
// text2textLayer_graph2graphLayer.jsx 

with (app.activeDocument) {
textFrames.everyItem().itemLayer = layers.item("Text");
rectangles.everyItem().itemLayer = layers.item("Graphik");
ovals.everyItem().itemLayer = layers.item("Graphik");
}

Voraussetzung: Du hast vorher die Ebenen "Text" und "Graphik" angelegt.
Bei den Graphikobjekten habe ich ein bißchen geschummelt: Es werden nicht die Graphiken angesprochen, um deren Rahmen auf die Ebene "Graphik" zu verschieben, sondern alle Rechteckrahmen und Ovale (in welchen Graphiken enthalten sein können) - ungeprüft, ob Graphiken auch tatsächlich enthalten sind.

Beachte: Gruppierte Rahmen werden nicht berücksichtigt. Hier müßte ggf. entschieden werden, auf welche Ebene gemischte Gruppen verschoben werden sollen.


> Zudem muss in einem zweiten Schritt jeder Textrahmen noch zusätzlich
> auf eine weitere, neue Ebene versetzt dupliziert werden

Das Duplizieren der Textebene kannst Du bequem über die Palette erledigen oder mit folgendem Schnipsel ergänzen:
Code
app.activeDocument.layers.item("Text").duplicate(); 



als Antwort auf: [#257957]
(Dieser Beitrag wurde von Martin Fischer am 23. Okt 2006, 09:19 geändert)

Skript für Textrahmen-/Grafikrahmen gesucht...

typomaniac
Beiträge gesamt: 250

23. Okt 2006, 09:18
Beitrag # 4 von 12
Beitrag ID: #257964
Bewertung:
(4130 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Joachim,

sorry für meine dilettantische Problembeschreibung; also:

- sämtliche Textrahmen sollen auf einer Ebene, sämtliche Grafikrahmen auf einer anderen Ebene platziert werden. Momentan ist es einfach ein Dokument mit Text und Grafiken auf derselben Ebene.

- Die Rahmen müssen an der selben XY-Position verbleiben

- Die Textrahmen sind ja bereits bestehend. Einfach gesagt: in den USA wurde ein Manual erstellt, das für die englische Version druckfertig ist; nun müssen aber drei je zweisprachige Manuals daraus generiert werden.

- Die Formatierung der Textrahmen muss ich wohl manuell anpassen. Ist generell aber kein Problem.

- Arbeiten tue ich auf Mac OS 10.4.5 und ID CS2

- sonst fällt mir grad nix ein. Aber ich stelle natürlich gerne einen Auszug des Dokus zur Verfügung, damit Du Dir ein besseres Bild machen kannst.


als Antwort auf: [#257960]

Skript für Textrahmen-/Grafikrahmen gesucht...

typomaniac
Beiträge gesamt: 250

23. Okt 2006, 09:21
Beitrag # 5 von 12
Beitrag ID: #257966
Bewertung:
(4125 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Namensvetter,
Du bist einfach mal wieder unglaublich! Ich probier das aus und wenns funzt, ist mehr als nur eine Schachtel Pralinen fällig! Und das am Montag Morgen!

Bis bald

typomaniac


als Antwort auf: [#257962]

Skript für Textrahmen-/Grafikrahmen gesucht...

typomaniac
Beiträge gesamt: 250

23. Okt 2006, 10:06
Beitrag # 6 von 12
Beitrag ID: #257972
Bewertung:
(4101 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

van-das-disch! Das Skript funzt. Allerdings wurden die Grafiken nicht auf die "Graphik"-Ebene verschoben, sondern sind auf der Basis verblieben. Aber das ändert ja nix. Ich muss das Ganze jetzt mal durchgehen und probier dann das Textrahmen-Skript aus. Aber Du hörst von mir!

Merssi!!!!


als Antwort auf: [#257962]

Skript für Textrahmen-/Grafikrahmen gesucht...

Martin Fischer
  
Beiträge gesamt: 12775

23. Okt 2006, 10:18
Beitrag # 7 von 12
Beitrag ID: #257975
Bewertung:
(4092 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

schade, daß das mit den Graphiken nicht klappt.
Sind die verschachtelt oder gruppiert?

Falls Deine Graphiken nicht einbebunden, sondern verknüpft sind, geht es vielleicht mit dieser Alternative:
Code
with (app.activeDocument) {	 
textFrames.everyItem().itemLayer = layers.item("Text");
for (oneItem = 0; oneItem < links.length; oneItem++) {
var oneObject = links[oneItem].parent.parent;
if ((oneObject.parent.constructor.name == "Page") || (oneObject.parent.constructor.name == "Spread"))
oneObject.itemLayer = layers.item("Graphik");
}
}



als Antwort auf: [#257972]

Skript für Textrahmen-/Grafikrahmen gesucht...

typomaniac
Beiträge gesamt: 250

23. Okt 2006, 12:42
Beitrag # 8 von 12
Beitrag ID: #258013
Bewertung:
(4060 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für den zweiten Vorschlag! Ich habe aber Dein Skript von heute Morgen bereits so verwenden können, und da das Dokument doch relativ komplex ist und das Skript funktionierte, ist die Umbenennung der ursprünglichen Basisebene das kleinste Problem.

Zitat Das Duplizieren der Textebene kannst Du bequem über die Palette erledigen oder mit folgendem Schnipsel ergänzen:

Schon; aber die Sache ist ja, dass die duplizierten Textrahmen um die Höhe des ursprünglichen plus einen Wert (von vielleicht 5 mm) in der Y-Achse nach unten verschoben werden müssen. Weil: Da kommt dann eben die zweite Sprache - auf der zweiten Ebene - rein. Geht das?


als Antwort auf: [#257975]

Skript für Textrahmen-/Grafikrahmen gesucht...

Martin Fischer
  
Beiträge gesamt: 12775

23. Okt 2006, 13:04
Beitrag # 9 von 12
Beitrag ID: #258019
Bewertung:
(4049 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Da kann man die Objekte (es handelt sich doch ausschließlich um Textrahmen) auf einer bestimmten Ebene nachträchlich verschieben.

Den entsprechenden Code reiche ich nach dem Mittagessen nach.


als Antwort auf: [#258013]

Skript für Textrahmen-/Grafikrahmen gesucht...

kurtnau
Beiträge gesamt: 2170

23. Okt 2006, 13:19
Beitrag # 10 von 12
Beitrag ID: #258021
Bewertung:
(4044 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo ihr,

ist das nicht eine möglichkeit?

http://www.hilfdirselbst.ch/..._P188576.html#188576

gruß kurt


als Antwort auf: [#258019]

Skript für Textrahmen-/Grafikrahmen gesucht...

Martin Fischer
  
Beiträge gesamt: 12775

23. Okt 2006, 14:01
Beitrag # 11 von 12
Beitrag ID: #258033
Bewertung:
(4028 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kurt,

danke für den Hinweis.
Beinahe hätte ich das Skript neu geschrieben. ;-)

Hier eine kleine Abwandlung, die das Versetzen auf Objekte einer ausgewählten Ebene beschränkt:

Code
// moveObjectsOfOneLayer.jsx 


(Edit: Ich habe das Skript wieder rausgenommen, weil es bei Tests mit Textrahmen zu Abstürzen führt. Bei der Suche nach der Ursache tappe ich noch im Dunkeln. Es hängt mit der Überprüfung der Ebeneneigenschaft der Textrahmen zusammen. Bei graphischen Rahmen konnte ich bislang keine Probleme feststellen.)


als Antwort auf: [#258021]
(Dieser Beitrag wurde von Martin Fischer am 23. Okt 2006, 14:17 geändert)

Skript für Textrahmen-/Grafikrahmen gesucht...

Martin Fischer
  
Beiträge gesamt: 12775

23. Okt 2006, 21:35
Beitrag # 12 von 12
Beitrag ID: #258119
Bewertung:
(3987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Skript, das ich oben veröffentlicht hatte und dann wieder rausgenommen habe, war in Ordnung. Nicht in Ordnung waren jedoch meine Prefs. Nach dem Löschen der ID-Prefs lief das Skript bei mir wie erwartet.

Am folgenden Skript habe ich nochmals ein bißchen rumgefeilt.
Neben den Koordinaten für den Versatz der Objekte läßt sich nun auch die Ebene, auf die der Verschiebungsvorgang beschränkt werden soll, auswählen.

Code
// moveObjectsOfOneLayer.jsx  
//
var myDoc = app.documents[0];
var myPt = 0.35277777777777777777778; // value of conversion: Pt - mm
var myLayer

//store old measurement units
var myOldUnits = [myDoc.viewPreferences.horizontalMeasurementUnits, myDoc.viewPreferences.verticalMeasurementUnits];

//set measurement units
myDoc.viewPreferences.horizontalMeasurementUnits = myDoc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.millimeters;

// get move values
var myValues = displayDialog();

//move objects
myLayer.pageItems.everyItem().move(undefined, myValues)

//restore old measurement units
with (myDoc.viewPreferences) {
horizontalMeasurementUnits = myOldUnits[0];
verticalMeasurementUnits = myOldUnits[1];
}

// ------------------------------------------------------------------------------
// dialog box
// ------------------------------------------------------------------------------
function displayDialog() {
var myDialog = app.dialogs.add({name:"Objekte versetzen", canCancel:true});
var myWidth = 100;
with(myDialog){
with(dialogColumns.add()){
with(dialogRows.add()) {
with(dialogColumns.add()) {
staticTexts.add({staticLabel:"Ebene:",minWidth:myWidth});
}
with(dialogColumns.add()) {
var myLayerDropDown = dropdowns.add({stringList:myDoc.layers.everyItem().name, selectedIndex:myDoc.layers.length-1});
}
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"x-Versatz:",minWidth:myWidth});
// Bug: largeNudge = largeNudge*10 (multiplied with 10)
var myXDistField = measurementComboboxes.add({smallNudge:0.1, largeNudge:1, editUnits:MeasurementUnits.millimeters, stringList:["-100","-50","-25","-10","-5","0","5","10","25","50","100"], editValue:0});
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"y-Versatz:",minWidth:myWidth});
// Bug: largeNudge = largeNudge*10 (multiplied with 10)
var myYDistField = measurementComboboxes.add({smallNudge:0.1, largeNudge:1, editUnits:MeasurementUnits.millimeters, stringList:["-100","-50","-25","-10","-5","0","5","10","25","50","100"], editValue:10/myPt});
}
}
}
//display the dialog box
var myResult = myDialog.show();
if(myResult == true){
//get the values from the dialog box controls
var myXDist = myXDistField.editValue * myPt;
var myYDist = myYDistField.editValue * myPt;
myLayer = myDoc.layers[myLayerDropDown.selectedIndex];
myDialog.destroy();
return [myXDist, myYDist]
}
else {
myDialog.destroy();
exit();
}
}



als Antwort auf: [#258033]
(Dieser Beitrag wurde von Martin Fischer am 23. Okt 2006, 21:53 geändert)
X