Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » InDesign CS - Java Script

InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

24. Jan 2006, 20:10
Bewertung:

gelesen: 9450

Beitrag als Lesezeichen
Hallo zusammen,
ich suche ein Java-Script für InDesign CS auf PC.
Es sollte einen Textrahmen erzeugen (kann auch ein Umrandung haben),
z.B. auf dem Infobereich (rechts), außerhalb der Seite.
Dort sollten folgende Infos stehen:
-Dokumentenname (automatisch)
-Datum (automatisch)
-Uhrzeit (automatisch)
-Benutzername der sich am PC angemeldeten Person (automatisch).

Wenn diese Script auchnoch dieses könnte (GENIAL!):
-Druckstiele auswählen zur Erzeugung einer [Dokumentenname.ps]-Datei
-PDF Export auswahl

Vielen Dank schonmal

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

24. Jan 2006, 20:26
Bewertung:

gelesen: 9436

Beitrag als Lesezeichen
Schau mal hier:
http://www.adobeforums.com/...RBNXe.22@.3bbe0f55/6

Könnte das ein Anfang sein?

Benutzername geht m.W. nicht, weil InDesign nichts von dem Benutzer weiß.
JavaScript für InDesign bleibt in der application und hat keinen Zugriff auf das Betriebssystem (kann nur das, was InDesign kann).

Das genannte Skript kann keine Druckstile auswählen und auch nicht PDF exportieren. :-(

Viele Grüße
Martin


InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

25. Jan 2006, 08:47
Bewertung:

gelesen: 9412

Beitrag als Lesezeichen
Das folgende Skript trägt ein paar Informationen zusammen, legt einen neuen Textrahmen neben der ersten Seite des Dokuments an und fügt die Infos dort ein.

Die Informationen sind:
- Dateinamen,
- Datum,
- Uhrzeit,
- Zeichenzahl,
- Anzahl der Verknüpfungen,
- verwendete Schriften.



Code
//someInfo.jsx 
//DESCRIPTION: Trägt Informationen über Dateinamen, Datum, Uhrzeit, Zeichenzahl, Anzahl der Verknüpfungen und verwendete Schriften in einem Textrahmen neben der ersten Seite des Dokuments zusammen.
var myDoc = app.documents[0];
var theDocName = myDoc.name;
var theResult = myDate();
var theDate = theResult[0] ;
var theTime = theResult[1];
var theCharacters = myDoc.stories.everyItem().characters.length;
var theLinks = myDoc.links.length;
var theFonts = myDoc.fonts.everyItem().name.join("\r\t");


myFrame = myDoc.pages[0].textFrames.add({geometricBounds:[0, - 100, 150, 0.1]});
myFrame.contents = "Dokument:\t" + theDocName + "\rDatum:\t" + theDate + "\rUhrzeit:\t" + theTime + "\rZeichen:\t" + theCharacters + "\rVerknüpfungen:\t" + theLinks + "\rSchriften:\t" + theFonts;

function myDate()
{
var d= new Date();
var myMonth = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var aDate = d.getDate() + ". " + myMonth[d.getMonth()] + " " + (d.getYear()*1 +1900)
var aTime = d.getHours() + ":" + d.getMinutes();
return [aDate, aTime];
}


Das Skript kann immer noch keine Druckstile auswählen und auch nicht PDF exportieren. :-(
Dafür gibt's andere Skripte (nicht hier, aber anderswo -> recherchieren).

Viele Grüße
Martin


InDesign CS - Java Script

Albert Schmitt
Beiträge gesamt: 28

25. Jan 2006, 13:39
Bewertung:

gelesen: 9379

Beitrag als Lesezeichen
Hallo Martin

könntest du bitte noch ein bißchen helfen?
Wie kriege ich das Script dazu, auch die Zeichenanzahl der Fußnoten zu zählen (wie die Info-Palette)?

Gruß
Albert

InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

25. Jan 2006, 13:45
Bewertung:

gelesen: 9372

Beitrag als Lesezeichen
Vielen Dank für dieses Script.
Hat suuuper geklappt.

Ich sollte unr noch eines machen können:
einfach den ganzen Text in einer anderen Schriftart und Schriftgrösse ausgeben.
(Wenn ein Textrahmen an der gleichen Stelle steht sollte dieser verwendet werden - geht das überhaupt????)

Ich hab zzwar was versucht, aber ich bekomme nur die erste Zeile (Dokumentenname)
in der Schriftart hin, die restlichen Zeilen werden immernoch falsch wiedergegeben.

Code
 
//Trägt Informationen über Dateinamen, Datum, Uhrzeit, verwendete Schriften in einem Textrahmen neben der ersten Seite des Dokuments zusammen.
var myDoc = app.documents[0];
var theDocName = myDoc.name;
var theCharacters = myDoc.stories.everyItem().characters.length;
var theLinks = myDoc.links.length;
var theFonts = myDoc.fonts.everyItem().name.join("\r\t");
var Datum = new (Date);
var Tag = Datum.getDate();
var Wochentag = Datum.getDay();
var Monat = Datum.getMonth();
var Jahr = Datum.getFullYear();
var Tagname = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
var Monatname = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
var Stunde = Datum.getHours();
var Minute = Datum.getMinutes();
if(Minute<10)
{
Minute = "0" + Minute;
}
if(Stunde<10)
{
Stunde = "0" + Stunde;
}

{
//Setzt den Text in diese Schriftart ein.
myFont = app.fonts.item("Helvetica LT");

//Legt einen Textrahmen an.
myFrame = myDoc.pages[0].textFrames.add({geometricBounds:[15, - 100, 150, -5]});

//Trägt INFOs in den Textrahmen ein.
myFrame.contents =theDocName + "\r" + "\r" + (Tagname[Wochentag]+", "+Tag+"."+Monatname[Monat]+"."+Jahr+" | "+Stunde+":"+Minute+" Uhr ")
+ "\r" + "\rSchriften:\t" + theFonts;
}



//Change the size of the text frame.
{
var myParagraph = myFrame.paragraphs.item(0);
myParagraph.appliedFont = myFont;
myParagraph.justification = Justification.leftAlign;
myParagraph.pointZSize = 30;
}


Wer kann helfen........

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

25. Jan 2006, 13:53
Bewertung: ||

gelesen: 9368

Beitrag als Lesezeichen
Hallo Albert,

ich hatte - ungeprüft - gehofft, die Fußnoten würden auch berücksichtigt.
Dem ist nicht so.
Im Moment fällt mir dazu auch nichts ein.
Die Fußnoteninhalte sind für Skripts etwas sperrig.

Mit "myDoc.footnotes.everyItem().texts[0].characters.length" (wie es etwa bei den Textrahmen ginge: "myDoc.textFrames.everyItem().texts[0].characters.length") kommst Du nicht weiter.

Die einzige Lösung, die mir einfällt:
Fußnoten kurzfristig in normale Textrahmen verschieben, Zeichen zählen, Fußnoten wieder zurückschieben.

Das ist ziemlich umständlich.
Wenn Du es dennoch probieren möchtest, könnte ich Dir die beiden Routinen zum kurzfristigen Verschieben der Fußnoten in Textrahmen und zum Zurückverschieben, die ich an anderer Stelle gebraucht habe, zukommen lassen.

Viele Grüße
Martin


InDesign CS - Java Script

Albert Schmitt
Beiträge gesamt: 28

25. Jan 2006, 15:03
Bewertung:

gelesen: 9349

Beitrag als Lesezeichen
Hallo Martin,

vielen Dank für dein Angebot. Das wäre auf jeden Fall ein Fortschritt gegenüber jetzt, da dein Script ja alle Textrahmen in die Zählung einbezieht (im Gegensatz zur Info-Palette).
Das ist genau, was ich brauche. Ich würde es also auf jeden Fall ausprobieren.

Gruß
Albert

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

25. Jan 2006, 16:40
Bewertung:

gelesen: 9329

Beitrag als Lesezeichen
Es handelt sich um die beiden Funktionen fn2en() und en2fn()

Code
function fn2en( st )  
{
var fn = st.footnotes
for( var myCounter = 0; myCounter < fn.length; myCounter++ )
{
tf = app.activeDocument.textFrames.add( { label : 'temp'+myCounter } )
fn[myCounter].texts[0].move(LocationOptions.after, tf.insertionPoints[0] )
}
}


Code
function en2fn( st )  
{
var tf = app.activeDocument.textFrames
var fn = st.footnotes
for( var myCounter = fn.length-1; myCounter > -1; myCounter-- )
{
tf.item( 'temp'+myCounter ).parentStory.texts[0].move( LocationOptions.after, fn[myCounter].insertionPoints[0] )
tf.item( 'temp'+myCounter ).remove()
}
}

Peter Kahrel hat mich auf diesen Trick hingewiesen: http://www.adobeforums.com/...XmNI9.0@.3bbc31b2/10

Falls Du das Skript entsprechend ausbaust, wäre es nett, wenn Du die erweiterte Version hier veröffentlichen würdest.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 25. Jan 2006, 16:42 geändert)

InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

25. Jan 2006, 17:28
Bewertung:

gelesen: 9318

Beitrag als Lesezeichen
Hallo Martin,
Danke nochmals für dein TOLLES Script.

Ich sollte nurnoch eines machen können:
einfach den ganzen Text in einer anderen Schriftart und Schriftgrösse ausgeben.
(Wenn ein Textrahmen an der gleichen Stelle steht sollte dieser verwendet werden - geht das überhaupt????)

Ich hab zwar was versucht, aber ich bekomme nur die erste Zeile (Dokumentenname)
in der Schriftart hin, die restlichen Zeilen werden immernoch falsch wiedergegeben.

Code
 

//Trägt Informationen über Dateinamen, Datum, Uhrzeit, verwendete Schriften in einem Textrahmen neben der ersten Seite des Dokuments zusammen.
var myDoc = app.documents[0];
var theDocName = myDoc.name;
var theCharacters = myDoc.stories.everyItem().characters.length;
var theLinks = myDoc.links.length;
var theFonts = myDoc.fonts.everyItem().name.join("\r\t");
var Datum = new (Date);
var Tag = Datum.getDate();
var Wochentag = Datum.getDay();
var Monat = Datum.getMonth();
var Jahr = Datum.getFullYear();
var Tagname = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
var Monatname = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
var Stunde = Datum.getHours();
var Minute = Datum.getMinutes();
if(Minute<10)
{
Minute = "0" + Minute;
}
if(Stunde<10)
{
Stunde = "0" + Stunde;
}

{
//Setzt den Text in diese Schriftart ein.
myFont = app.fonts.item("Helvetica LT");

//Legt einen Textrahmen an.
myFrame = myDoc.pages[0].textFrames.add({geometricBounds:[15, - 100, 150, -5]});

//Trägt INFOs in den Textrahmen ein.
myFrame.contents =theDocName + "\r" + "\r" + (Tagname[Wochentag]+", "+Tag+"."+Monatname[Monat]+"."+Jahr+" | "+Stunde+":"+Minute+" Uhr ")
+ "\r" + "\rSchriften:\t" + theFonts;
}



//Change the size of the text frame.
{
var myParagraph = myFrame.paragraphs.item(0);
myParagraph.appliedFont = myFont;
myParagraph.justification = Justification.leftAlign;
myParagraph.pointZSize = 30;
}


Grüßle
Volker [vhausw]

InDesign CS - Java Script

Albert Schmitt
Beiträge gesamt: 28

25. Jan 2006, 18:03
Bewertung:

gelesen: 9308

Beitrag als Lesezeichen
Hallo Martin

vielen Dank für die beiden Funktionen. Ich werde sehen, was ich hinkriege. Allerdings liegen meine JavaScriptfähigkeiten noch auf dem Level >Anfänger<, also rechne ich nicht gleich mit einem Erfolg. Aber versuchen kann ichs ja (morgen) und wenns klappt, machts auch Spass.

Bei der Gelegenheit: Dein >VertikalerKeil<-Script ist (fast) reine Magie, es spart mir gerade bei einem Buch mit vielen (kleineren) Zitaten eine Menge Arbeit und Zeit.

Danke und Gruß und schöner Feierabend
Albert

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

25. Jan 2006, 21:26
Bewertung:

gelesen: 9279

Beitrag als Lesezeichen
> Dein >VertikalerKeil<-Script ist (fast) reine Magie, es spart mir gerade bei einem Buch
> mit vielen (kleineren) Zitaten eine Menge Arbeit und Zeit.

So eine Rückmeldung läuft natürlich runter wie Öl.
Dann war dieses Skript also nicht für die Katz'.
Danke.

Auch mir ist das VertikalerKeil-Skript eine große Hilfe. Zuletzt habe ich es heute eingesetzt. ;-)
Und dabei hatte ich mir gewünscht, es ginge auch rückwärts.
Also daß es statt dem Austreiben auch das Einbringen verstünde.
Ich habe da so eine Idee im Hinterkopf ...

Viele Grüße
Martin


InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

25. Jan 2006, 21:48
Bewertung:

gelesen: 9274

Beitrag als Lesezeichen
Hallo Volker,

> Ich sollte nur noch eines machen können:
> einfach den ganzen Text in einer anderen Schriftart und Schriftgrösse ausgeben.
> Ich hab zwar was versucht, aber ich bekomme nur die erste Zeile (Dokumentenname)
> in der Schriftart hin, die restlichen Zeilen werden immernoch falsch wiedergegeben.

Bei Dir steht "var myParagraph = myFrame.paragraphs.item(0); "
myParagraph ist also der erste Absatz im Textrahmen.
Und diesem weist Du die Schrift myFont zu.
Die anderen Absätze bleiben unberücksichtigt.

Nun könntest Du eine Schleife machen und vom ersten (myFrame.paragraphs[0]) bis zum letzten (myFrame.paragraphs[-1]) die Schrift myFont und die anderen Attribute zuordnen.

Es geht aber auch einfacher: Du weist die Schrift dem gesamten Text vom Textrahmen myFrame zu. Der gesamte Text ist texts[0].
Die Zeile lautet also:
Code
myFrame.texts[0].appliedFont = myFont; 


Und so weiter mit den anderen Eigenschaften.

Noch einfacher wäre es aber, wenn Du mit einem speziellen Absatzformat arbeiten würdest.
z.B.
Code
// neues Absatzformat mit Eigenschaften definieren 
myStyle = myDoc.paragraphStyles.add(
{
name:"Info",
appliedFont:app.fonts.item("Helvetica LT"),
justification: Justification.leftAlign,
pointSize:30
}
)

Und dann könntest Du dem Text dieses Absatzformat zuweisen:
Code
myFrame.texts[0].appliedParagraphStyle = myStyle; 


> (Wenn ein Textrahmen an der gleichen Stelle steht sollte dieser verwendet werden -
> geht das überhaupt????)

Ja, wenn der Textrahmen über ein eindeutiges Merkmal zu identifizieren ist.
Ein Merkmal haben wir schon: er sitzt auf dem ersten Druckbogen (auch die Montagefläche zählt dazu). Ein weiteres Merkmal könnte der Inhalt (oder ein Teil davon sein).

Besser aber, wir verpassen ihm ein label (Skriptbezeichnung). Das ist so eine Art Etikett.
Der Textrahmen könnte z.B. das label "Info" bekommen (myFrame.label = "Info"). Und beim Aufruf des Skripts wäre zu prüfen, ob auf dem ersten Druckbogen ein Textrahmen mit label "Info" vorhanden ist (dann nimm den, sonst mach' 'nen neuen).

Allerdings würde ich den Textrahmen mit dem label "Info" vor dem Zählen löschen, sonst wird dessen Inhalt beim Zählen der Zeichen auch berücksichtigt.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 25. Jan 2006, 21:50 geändert)

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 08:27
Bewertung:

gelesen: 9249

Beitrag als Lesezeichen
Hallo Volker,

an Deinem Skript habe ich noch etwas rumgebastellt:
1. diverse Infos ergänzt (Seite von bis; Zeichen gesamt, im Text, in Fußnoten, in Tabelle; Verknüpfungen)
2. Wenn das Absatzformat "Info" nicht vorhanden ist, wird es mit bestimmten Eigenschaften angelegt.
3. Wenn auf dem ersten Druckbogen ein Textrahmen mit dem label "Info" vorhanden ist, wird er gelöscht. Die "Geometrie" dieses Rahmens wird zur Verwendung bei einem neu anzulegenden Rahmen gesichert.
4. Die Info wird anngezeigt.

Code
//someInfo_2.jsx 
// Trägt Informationen über Dateinamen, Datum, Uhrzeit, verwendete Schriften in einem Textrahmen neben der ersten Seite des Dokuments zusammen.
var myDoc = app.documents[0];
var myLabel = "Info";
var myFont = "Myriad";
var myBounds = [0, - 100, 150, -5];

// Textrahmen prüfen und ggf. löschen (Koordinaten sichern)
var myFSFrames = myDoc.spreads[0].textFrames;
for (oneFrame = myFSFrames.length -1; oneFrame >=0 ; oneFrame--)
{
if (myFSFrames[oneFrame].label == myLabel)
{
myBounds = myFSFrames[oneFrame].geometricBounds;
myFSFrames[oneFrame].remove()
}
}

// catch the info
var theDocName = myDoc.name;
var theCharacters = myDoc.stories.everyItem().characters.length;
var theFN = myDoc.search("^F");
if (theFN.length > 0) var theFNChars = myDoc.stories.everyItem().footnotes.everyItem().texts[0].characters.length else theFNChars = 0;
var theTableChars = myDoc.stories.everyItem().tables.everyItem().cells.everyItem().texts[0].characters.length
var theLinks = myDoc.links.length;
var theFonts = myDoc.fonts.everyItem().name.join("\r\t");

// Datumformatierung
var Datum = new (Date);
var Tag = Datum.getDate();
var Wochentag = Datum.getDay();
var Monat = Datum.getMonth();
var Jahr = Datum.getFullYear();
var Tagname = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
var Monatname = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
var Stunde = Datum.getHours();
var Minute = Datum.getMinutes();
if (Minute<10)
{
Minute = "0" + Minute;
}
if (Stunde<10)
{
Stunde = "0" + Stunde;
}

myStyle = myDoc.paragraphStyles.item("Info")

// neues Absatzformat anlegen mit bestimmten Eigenschaften
// wenn die gewählte Schrift nicht installiert ist, erfolgt Abbruch
try
{
myStyle.name;
}
catch (e)
{
if (app.fonts.item(myFont).status != FontStatus.installed)
{
alert("Schrift \"" + myFont + "\" nicht vorhanden.\rAbsatzformat \"Info\" konnte nicht angelegt werden.");
exit();
}

myTabList = [{position:'3.5mm', aligment:TabStopAlignment.leftAlign}, {position:'40mm', aligment:TabStopAlignment.leftAlign}];
myStyle = myDoc.paragraphStyles.add(
{
name:"Info",
appliedFont:app.fonts.item(myFont),
justification: Justification.leftAlign,
firstLineIndent:0,
leftIndent:0,
pointSize:10,
tabList:myTabList
}
)
}
//Legt einen Textrahmen an.
myFrame = myDoc.pages[0].textFrames.add
(
{
geometricBounds:myBounds,
contents:(theDocName
+ "\r" + myDoc.pages[0].name + "–" + myDoc.pages[-1].name
+ "\r\r" + Tagname[Wochentag]+", "+Tag+"."+Monatname[Monat]+"."+Jahr+" | "+Stunde+":"+Minute+" Uhr "
// jede Tabelle wird als ein Zeichen gezählt; deswegen wird unten die Anzahl der Tabellen von den Zeichen im Text wieder substrahiert
+ "\r\rZeichen:\t" + (theCharacters + theFNChars + theTableChars - myDoc.stories.everyItem().tables.length)
+ "\r\t(Text):\t" + (theCharacters - myDoc.stories.everyItem().tables.length)
+ "\r\t(Fußnoten):\t" + theFNChars
+ "\r\t(Tabellen):\t" + theTableChars
+ "\r\rVerknüpfungen:\t" + theLinks
+ "\r\rSchriften:\r\t" + theFonts + "\r"),
label:myLabel,
}
);

// Zuweisung des Absatzformats
myFrame.texts[0].appliedParagraphStyle = myStyle
showIt(myFrame);

function showIt(theObj)
{
// Selects object, turns to page and zooms in on it
myZoomFactor = app.activeWindow.zoomPercentage
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoom = ZoomOptions.fitPage;
app.activeWindow.zoomPercentage = myZoomFactor;
}


Viele Grüße
Martin


InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 08:36
Bewertung:

gelesen: 9249

Beitrag als Lesezeichen
Hallo Albert,

meine Behauptung, die Zeichen in den Fußnoten ließen sich auf dem direkten Weg nicht zählen, ist falsch. Weil ein falscher Befehl nicht funktionierte und weil die Fußnoten für Skripts tatsächlich etwas sperrig sind, habe ich fälschlicherweise gleich kurzgeschlossen und den Fehler beim eingeschränkten Skriptzugriff auf Fußnoten gesucht und nicht in einem falschen Befehl von mir.

Es ist richtig, daß "myDoc.footnotes.everyItem().texts[0].characters.length" nicht funktioniert, weil die Fußnoten nicht Kinder (children) des Dokuments sind, sondern der Textflüsse (stories).
Der Befehl muß also richtig lauten:
Code
myDoc.stories.everyItem().footnotes.everyItem().texts[0].characters.length 


Und schon werden die Zeichen in den Fußnoten gezählt.


Weil bei "myDoc.stories.everyItem().characters.length" die Zeichen der [b]Tabellen ebenfalls unberücksichtigt bleiben, habe ich diese extra hinzugenommen. Hier müssen die Zeichen in allen Zellen aller Tabellen aller Textflüsse gezählt werden:

Code
myDoc.stories.everyItem().tables.everyItem().cells.everyItem().texts[0].characters.length 


Tabellen in Fußnoten sind in dem Skript oben (someInfo_2.jsx) nicht berücksichtigt.

Wenn Du die Fußnoten dennoch über den Umweg über die "Verschiebefunktionen" gezählt hast, bin ich neugierig auf Deinen Code.

Bitte entschuldige meine voreilige Behauptung bzgl. der Zählung der Zeichen in den Fußnoten.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 26. Jan 2006, 08:50 geändert)

InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

26. Jan 2006, 08:57
Bewertung:

gelesen: 9228

Beitrag als Lesezeichen
Guten MORGEN Martin,
ich als kleines Anfängerwürmchen im Scripten, habe halt immernoch probleme.
Zuerst mal vielen Dank für die schnelle Info von dir.
Ich glaube, ich bin dir mal ne Tasse Kaffee schuldig.

Problem (Fehlermeldung)- Ich mach im InDesign CS2 ein NEUES-Doc auf, lasse dann dein "TOLLES" Script laufen, und es kommt nur:

Fehlernummer: 24
Zeile: 24
Quelle:
Code
var theTableChars = myDoc.stories.everyItem().tables.everyItem().cells.everyItem().texts[0].characters.length 

wenn jetzt noch was nicht geht, kann ich es nicht prüfen.

Ich muss schon sagen :
Dieses Script gefällt mir immer mehr.


Vielen Dank.
Grüßle
Volker

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 09:11
Bewertung:

gelesen: 3061

Beitrag als Lesezeichen
Guten Morgen Volker,

oh, da habe ich wohl wieder Bockmist gebaut.
Diese Fehlermeldung taucht auf, wenn im Dokument keine Tabellen vorhanden sind (dann gibt es dort keine Zeichen zu zählen).

Ersetze die Zeile 24 durch folgende Zeile:
Code
if (myDoc.stories.everyItem().tables.length > 0) var theTableChars = myDoc.stories.everyItem().tables.everyItem().cells.everyItem().texts[0].characters.length else theTableChars = 0; 


> Dieses Script gefällt mir immer mehr.
Du meinst VIRTUELL?
Denn praktisch konntest Du die Wirkung ja noch nicht überprüfen, oder?

Viele Grüße
Martin


InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

26. Jan 2006, 10:03
Bewertung:

gelesen: 3047

Beitrag als Lesezeichen
Echt SUPI,
nun schnurrt es , dein Script. :-)

Ich will jetzt aber nicht frech werden, aber würde noch was gehen?????!!!!!
Farben fehlen noch.
-Nur benutzte Farben (Anzahl)
-Farbraum (RGB, CMYK, Vollton / mit Werten)


Vilen Dank Martin

Grußle
Volker

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 10:21
Bewertung:

gelesen: 3046

Beitrag als Lesezeichen
Farben gehen schon (myDoc.swatches.everyItem().name.join("\r")).
Es gibt aber keine Eigenschaft, die besagt, ob die Farbe benutzt wird oder nicht.
Da mußt Du alle Objekte, die Farbe haben können abklappern.

Den Farbraum bekommst Du über "model" (swatches[mySwatch].model).
Die Werte über "colorValue" (swatches[mySwatch].colorValue).

Viele Grüße
Martin


InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

26. Jan 2006, 12:15
Bewertung:

gelesen: 3039

Beitrag als Lesezeichen
Hallo Martin,
ich bins mal wieder.

Hat alles soweit funktioniert.
Habe noch versucht etwas anders zu machen.
Ich wollte diesen Textrahmen noch auf eine Neue Ebene stellen,
das hat auch geklappt. Nur wenn es diese Ebene schon gibt, bricht das Script ab.

Ach ja, diesen erzeugten Textrahmen kann man auch verschieben, der Text wird dennoch aktualliesert. Das ist soweit ok.

Ich schick dir mal meinen Entwurf Nr.3.

Code
//someInfo_3.jsx  
// Trägt Informationen über Dateinamen, Datum, Uhrzeit, verwendete Schriften in einem Textrahmen neben der ersten Seite des Dokuments zusammen.
var myDoc = app.documents[0];
var myLabel = "Info";
var myFont = "Helvetica LT";
var myBounds = [0, - 100, 150, -5];

// Neue Ebene anlegen
var myNewLayer = myDoc.layers.add();
myNewLayer.move(LocationOptions.atBeginning, undefined);
myNewLayer.name = "Info-Ebene";


// Textrahmen prüfen und ggf. löschen (Koordinaten sichern)
var myFSFrames = myDoc.spreads[0].textFrames;
for (oneFrame = myFSFrames.length -1; oneFrame >=0 ; oneFrame--)
{
if (myFSFrames[oneFrame].label == myLabel)
{
myBounds = myFSFrames[oneFrame].geometricBounds;
myFSFrames[oneFrame].remove()
}
}

// catch the info
var theDocName = myDoc.name;
var theCharacters = myDoc.stories.everyItem().characters.length;
var theFN = myDoc.search("^F");
if (theFN.length > 0) var theFNChars = myDoc.stories.everyItem().footnotes.everyItem().texts[0].characters.length else theFNChars = 0;
if (myDoc.stories.everyItem().tables.length > 0) var theTableChars = myDoc.stories.everyItem().tables.everyItem().cells.everyItem().texts[0].characters.length else theTableChars = 0;
var theLinks = myDoc.links.length;
var theFonts = myDoc.fonts.everyItem().name.join("\r\t");

// Datumformatierung
var Datum = new (Date);
var Tag = Datum.getDate();
var Wochentag = Datum.getDay();
var Monat = Datum.getMonth();
var Jahr = Datum.getFullYear();
var Tagname = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
var Monatname = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
var Stunde = Datum.getHours();
var Minute = Datum.getMinutes();
if (Minute<10)
{
Minute = "0" + Minute;
}
if (Stunde<10)
{
Stunde = "0" + Stunde;
}

myStyle = myDoc.paragraphStyles.item("Info")

// neues Absatzformat anlegen mit bestimmten Eigenschaften
// wenn die gewählte Schrift nicht installiert ist, erfolgt Abbruch
try
{
myStyle.name;
}
catch (e)
{
if (app.fonts.item(myFont).status != FontStatus.installed)
{
alert("Schrift \"" + myFont + "\" nicht vorhanden.\rAbsatzformat \"Info\" konnte nicht angelegt werden.");
exit();
}

myTabList = [{position:'3.5mm', aligment:TabStopAlignment.leftAlign}, {position:'40mm', aligment:TabStopAlignment.leftAlign}];
myStyle = myDoc.paragraphStyles.add(
{
name:"Info",
appliedFont:app.fonts.item(myFont),
justification: Justification.leftAlign,
firstLineIndent:0,
leftIndent:0,
pointSize:9,
tabList:myTabList
}
)
}
//Legt einen Textrahmen an.
myFrame = myDoc.pages[0].textFrames.add
(
{
geometricBounds:myBounds,
contents:(theDocName
+ " | Seite: " + myDoc.pages[0].name + "–" + myDoc.pages[-1].name+" | "+
Tagname[Wochentag]+", "+Tag+"."+Monatname[Monat]+"."+Jahr+" | "+Stunde+":"+Minute+" Uhr " +" | Volker."),
label:myLabel,
}
);

// Zuweisung des Absatzformats
myFrame.texts[0].appliedParagraphStyle = myStyle
showIt(myFrame);

function showIt(theObj)
{
// Selects object, turns to page and zooms in on it
myZoomFactor = app.activeWindow.zoomPercentage
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoom = ZoomOptions.fitPage;
app.activeWindow.zoomPercentage = myZoomFactor;
}


Wenn ich nun eine Textverknüpfung , also 2 oder 3... Textrahmen mache, dann überträgt er nur in den ersten Rahmen den Inhalt, die anderen macht er nicht.
Schade.....


Grüßle
Volker

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 12:42
Bewertung:

gelesen: 3037

Beitrag als Lesezeichen
Hallo Volker,

> Ich wollte diesen Textrahmen noch auf eine Neue Ebene stellen,
> das hat auch geklappt. Nur wenn es diese Ebene schon gibt, bricht das Script ab.

Dein Skript versucht bei jedem Aufruf eine neue Ebene mit einem fest vorgegebenen Namen anzulegen. Wenn bereits eine Ebene mit diesem Namen vorhanden ist, scheitert da Skript: es kann keine Ebene angelegt werden, die den Namen einer bereits vorhandenen Ebene trägt.
Du mußt das Ganze in einen VERSUCH packen. Wenn die Ebene bereits vorhanden ist, soll sie nicht nocheinmal neu angelegt werden, sondern lediglich der Variable myNewLayer zugewiesen werden.

Code
// Neue Ebene anlegen  
try
{
var myNewLayer = myDoc.layers.add({name:"Info-Ebene"});
myNewLayer.move(LocationOptions.atBeginning, undefined);
}
catch(e)
{
var myNewLayer = myDoc.layers.item("Info-Ebene")
}


Den Textrahmen mußt Du nun auch auf die Ebene hieven (itemLayer:myNewLayer):

Code
//Legt einen Textrahmen an.       
myFrame = myDoc.pages[0].textFrames.add
(
{
geometricBounds:myBounds,
contents:(theDocName
+ " | Seite: " + myDoc.pages[0].name + "–" + myDoc.pages[-1].name+" | "+
Tagname[Wochentag]+", "+Tag+"."+Monatname[Monat]+"."+Jahr+" | "+Stunde+":"+Minute+" Uhr " +" | Volker."),
label:myLabel,
itemLayer:myNewLayer
}
);


> Wenn ich nun eine Textverknüpfung , also 2 oder 3... Textrahmen mache,
> dann überträgt er nur in den ersten Rahmen den Inhalt, die anderen macht er nicht.

Das verstehe ich nicht?
Wie verknüpfst Du die Rahmen?

Die Verknüpfung der Rahmen ist keine Methode, sondern eine Eigenschaft eines Textrahmens: nextTextFrame bzw. previousTextFrame.

Ich vermute aber, daß ich Dich falsch verstanden haben.
Welche Rahmen sollen zu welchem Zweck verknüpft werden?

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 26. Jan 2006, 12:43 geändert)

InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

26. Jan 2006, 13:14
Bewertung:

gelesen: 3031

Beitrag als Lesezeichen
Hallo Martin,
nochmals vielen :-) DANK.

Hat prima geklappt. ;-)

Was ich versucht hatte, war die Inhalte in verschiedene Rahmen eintragen zulassen.
Z.B.

[1.-Rahmen:] DocName
[2.-Rahmen:] Seitenzahl
[3.-Rahmen:] Datum
.
.
.

so was hatte ich gemeint.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ich hatte noch was vergessen :
Wenn ich die Ebene "Info-Ebene" gesperrt habe, geht das Script nicht.

Kann man diese Ebene entsperren und nach getaner Arbeit wieder sperren?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Grüßle
Volker

(Dieser Beitrag wurde von vhausw am 26. Jan 2006, 13:22 geändert)

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 14:04
Bewertung:

gelesen: 3028

Beitrag als Lesezeichen
> so was hatte ich gemeint.
Dann brauchst Du a) mehrere verknüpfte Rahmen (s.o.) und b) ein Kommando für Umbruch in neuen Rahmen (als Absatzattribut oder Spezialzeichen Rahmenumbruch).

> Kann man diese Ebene entsperren und nach getaner Arbeit wieder sperren?
Code
myNewLayer.locked = false; 
...
myNewLayer.locked = true;


Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 26. Jan 2006, 14:04 geändert)

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 15:12
Bewertung:

gelesen: 3017

Beitrag als Lesezeichen
Hallo Volker,

vergiß bitte nicht, das Zurückstellen der Suche-Ersetze Einstellungen (app.findPreferences = null; app.changePreferences = null;) vor der Zeile "var theFN = myDoc.search("^F");" unterzubringen.

Viele Grüße
Martin


InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

26. Jan 2006, 16:26
Bewertung:

gelesen: 3009

Beitrag als Lesezeichen
Hallo Martin,
danke nochmals.

Habe nun Mein/Dein/Unser-Script nochmals überarbeitet.
Nun geht noch ein Fenster auf zur PDF Erzeugung.

Code
// PDF_Info_2-Zeilig_Volker.jsx  
// Trägt Informationen über Dateinamen, Datum, Uhrzeit,
// verwendete Schriften in einem Textrahmen neben der ersten Seite des Dokuments zusammen.
var myDoc = app.documents[0];
var myLabel = "Info";
var myFont = "Helvetica LT";
var myBounds = [0, - 100, 150, -5];

// Neue Ebene anlegen
try
{
var myNewLayer = myDoc.layers.add({name:"Info-Ebene"});
myNewLayer.move(LocationOptions.atBeginning, undefined);

}
catch(e)
{
var myNewLayer = myDoc.layers.item("Info-Ebene")

}


// Ebene entsperren ("Info-Ebene")
myNewLayer.locked = false;

// Textrahmen prüfen und ggf. löschen (Koordinaten sichern)
var myFSFrames = myDoc.spreads[0].textFrames;
for (oneFrame = myFSFrames.length -1; oneFrame >=0 ; oneFrame--)
{
if (myFSFrames[oneFrame].label == myLabel)
{
myBounds = myFSFrames[oneFrame].geometricBounds;
myFSFrames[oneFrame].remove()
}
}

// catch the info
var theDocName = myDoc.name;
var theCharacters = myDoc.stories.everyItem().characters.length;
var theFN = myDoc.search("^F");
if (theFN.length > 0) var theFNChars = myDoc.stories.everyItem().footnotes.everyItem().texts[0].characters.length else theFNChars = 0;
if (myDoc.stories.everyItem().tables.length > 0) var theTableChars = myDoc.stories.everyItem().tables.everyItem().cells.everyItem().texts[0].characters.length else theTableChars = 0;
var theLinks = myDoc.links.length;
var theFonts = myDoc.fonts.everyItem().name.join("\r\t");

// Datumformatierung
var Datum = new (Date);
var Tag = Datum.getDate();
var Wochentag = Datum.getDay();
var Monat = Datum.getMonth();
var Jahr = Datum.getFullYear();
var Tagname = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
var Monatname = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
var Stunde = Datum.getHours();
var Minute = Datum.getMinutes();
if (Minute<10)
{
Minute = "0" + Minute;
}
if (Stunde<10)
{
Stunde = "0" + Stunde;
}

myStyle = myDoc.paragraphStyles.item("Info")

// neues Absatzformat anlegen mit bestimmten Eigenschaften
// wenn die gewählte Schrift nicht installiert ist, erfolgt Abbruch
try
{
myStyle.name;
}
catch (e)
{
if (app.fonts.item(myFont).status != FontStatus.installed)
{
alert("Schrift \"" + myFont + "\" nicht vorhanden.\rAbsatzformat \"Info\" konnte nicht angelegt werden.");
exit();
}

myTabList = [{position:'3.5mm', aligment:TabStopAlignment.leftAlign}, {position:'40mm', aligment:TabStopAlignment.leftAlign}];
myStyle = myDoc.paragraphStyles.add(
{
name:"Info",
appliedFont:app.fonts.item(myFont),
justification: Justification.leftAlign,
firstLineIndent:0,
leftIndent:0,
pointSize:9,
tabList:myTabList
}
)
}
//Legt einen Textrahmen an.
myFrame = myDoc.pages[0].textFrames.add
(
{
geometricBounds:myBounds,
contents:
(theDocName
+ " | Seite: " + myDoc.pages[0].name + "–" + myDoc.pages[-1].name + "\r" +
Tagname[Wochentag] +", "+ Tag +"."+ Monatname[Monat] +"."+ Jahr +" | "+ Stunde+":"+ Minute+" Uhr " +" | Volker."),
label:myLabel,
itemLayer:myNewLayer
}
);



// Zuweisung des Absatzformats
myFrame.texts[0].appliedParagraphStyle = myStyle
showIt(myFrame);

function showIt(theObj)
{
// Selects object, turns to page and zooms in on it
myZoomFactor = app.activeWindow.zoomPercentage
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoom = ZoomOptions.fitPage;
app.activeWindow.zoomPercentage = myZoomFactor;
}

//Ebene SPERREN ("Info-Ebene")
myNewLayer.locked = true;


// Dialog zur Erzeugung eines PDFs
if (app.documents.length == 0){

alert('No documents are open.');
exit();
}
if (app.version == 3)
pdfpreset = '[Press]';
else
pdfpreset = '[Press Quality]';
pdfname = app.activeDocument.name.replace('.indd', '.pdf');
if (!doDisplayDialog()){

exit();
}
pdfname = app.activeDocument.filePath + '/' + pdfname;
app.activeDocument.exportFile(ExportFormat.pdfType, File(pdfname), false, pdfpreset);


function doDisplayDialog(){
with (theDialog = app.dialogs.add({name:'PDF schreiben'})){

//Fenster geht auf
DialogColumn1 = dialogColumns.add();
with (DialogColumn1){

staticTexts.add({staticLabel:'PDF Name:'});
staticTexts.add({staticLabel:'PDF:'});
}
DialogColumn2 = dialogColumns.add();
with (DialogColumn2){

with (editpdfname = textEditboxes.add()){
editContents = pdfname;
minWidth = 250;
}
with (presetbox = dropdowns.add()){

stringList = app.pdfExportPresets.everyItem().name;
for (i = 0; i < stringList.length; i++){

if (stringList[i] == pdfpreset){

selectedIndex = i;
break;
}
}
}
}
if (theDialog.show()) {

pdfname = editpdfname.editContents;
pdfpreset = presetbox.stringList[presetbox.selectedIndex];
theDialog.destroy;
return(true);
}
else{

theDialog.destroy();
return(false);
}
}
}


Eines hätte ich noch,
manchmal nimmt er einfach einen "Zeichenstile" der im Doc schon drinnen ist.
Könnte man da auch noch so ein Zeichenformat "Info" anlegen, mit der gleichen Schrift wie der Absatz.


Grüßle
Volker

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 16:50
Bewertung:

gelesen: 3004

Beitrag als Lesezeichen
Hallo Volker,

Du hast, wie die meisten Programmierer, das kleine "i" als Zähler verwendet.
In der Kombination mit den eckigen Klammern "[]" wird dies hier im Forum als Anweisung für eine Kursivauszeichnung interpretiert.

Kannst Du Dein Skript nochmal editieren und den Zähler "i" global (ganzes Wort) durch "myCounter" o.ä. ersetzen?

Hier das Zeichenformat:
Code
// neues Zeichenformat anlegen mit bestimmten Eigenschaften  
// wenn die gewählte Schrift nicht installiert ist, erfolgt Abbruch
myCharStyle = myDoc.characterStyles.item("Info")
try
{
myCharStyle.name;
}
catch (e)
{
if (app.fonts.item(myFont).status != FontStatus.installed)
{
alert("Schrift \"" + myFont + "\" nicht vorhanden.\rZeichenformat \"Info\" konnte nicht angelegt werden.");
exit();
}

myCharStyle = myDoc.characterStyles.add(
{
name:"Info",
appliedFont:app.fonts.item(myFont),
pointSize:10,
}
)
}


Viele Grüße
Martin


InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

26. Jan 2006, 19:58
Bewertung:

gelesen: 2995

Beitrag als Lesezeichen
Hallo Martin.
Den unteren Teil zum PDF erstellen hab ich ja aus einem anderen Script entnommen.

Gibt es im InDesign CS2 eigentlich die Möglichkeit "einen Button" mit Script zu hinterlegen, sodaß ein Script ablaufen kann?
Oder kann ich so ein Script auf eine Tastenbelegung bringen?

:-)

Bis dann
Volker

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

26. Jan 2006, 21:00
Bewertung:

gelesen: 2991

Beitrag als Lesezeichen
Hallo Volker,

wenn ich mir die Anforderungen anschaue, die Du in Deiner Einstiegsnachricht formuliert hast, dann hast Du doch nun das, was Du haben wolltest:

Zitat ich suche ein Java-Script für InDesign CS auf PC.
Es sollte einen Textrahmen erzeugen (kann auch ein Umrandung haben),
z.B. auf dem Infobereich (rechts), außerhalb der Seite.
Dort sollten folgende Infos stehen:
-Dokumentenname (automatisch)
-Datum (automatisch)
-Uhrzeit (automatisch)
-Benutzername der sich am PC angemeldeten Person (automatisch).

Wenn diese Script auchnoch dieses könnte (GENIAL!):
-Druckstiele auswählen zur Erzeugung einer [Dokumentenname.ps]-Datei
-PDF Export auswahl


Das PDF-Export-Modul funktioniert auch.

Ich hoffe, Dir hat die Entwicklung Spaß und Lust auf mehr gemacht.

> Gibt es im InDesign CS2 eigentlich die Möglichkeit "einen Button" mit Script zu
> hinterlegen, sodaß ein Script ablaufen kann?

Schau mal hier:
http://www.hilfdirselbst.ch/..._P207292.html#207292


> Oder kann ich so ein Script auf eine Tastenbelegung bringen?

Ja, Schau mal bei den Tastenbelegungen. Da gibts einen Bereich Skripte.


Hier noch ein Beispielskript zum Drucken mit Dialog.
Das Skript schickt jeweils "myRange" Seiten (Druckbögen) an den Drucker. Wenn mein Drucker zu viel Seiten auf einmal bekommt, steigt er (trotz seiner 98 MB) aus, macht einen Reset und fängt wieder von vorne an. Deswegen füttere ich ihn mit kleineren Häppchen.

Das Skript könnte Dir eine Orientierung für Deinen Wunsch "Druckstiele auswählen zur Erzeugung einer [Dokumentenname.ps]-Datei" bieten.

Code
// printWithDialog.jsx 

myPageRange=5;
myDoc=app.documents[0];
myDocName = myDoc.name;

var myPrintProperties = myDisplayDialog(myDocName);
var myStartSpread = myPrintProperties[0];
var myEndSpread = myPrintProperties[1];
var myPrinterPreset = myPrintProperties[2];

if ((myEndSpread-myStartSpread)>myPageRange){
for (myCounter=myStartSpread;myCounter<myEndSpread-myPageRange;myCounter+=myPageRange){
var myFirstPage=myDoc.spreads[myCounter].pages[0].name;
var myLastPage=myDoc.spreads[myCounter+myPageRange-1].pages[-1].name;
var myRange=myFirstPage + "-" + myLastPage;
myPrintProcess(myRange,myPrinterPreset);
}
}
else {
var myLastPage=(myDoc.spreads[myStartSpread].pages[0].name -1)
}

var myRange=((myLastPage*=1) +1) + "-" + myDoc.spreads[myEndSpread].pages[-1].name;
myPrintProcess(myRange,myPrinterPreset);

function myPrintProcess(myR,myPr){
myDoc.printPreferences.pageRange = myR;
//alert(myRange);
myDoc.print(false, myPr);
}

function myDisplayDialog(myDocName){
var myPrinterPreset;
var myPrinterPresets = myGetPrinterPresets();
var myDialog = app.dialogs.add({name:"PrintPages"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Start: "});
}
with(dialogColumns.add()){
var myStartPageField = textEditboxes.add({editContents:(myDoc.spreads[0].pages[0].name +""), minWidth:30});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"End: "});
}
with(dialogColumns.add()){
var myEndPageField = textEditboxes.add({editContents:(myDoc.spreads[-1].pages[-1].name +""), minWidth:30});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Printer preset:"});
}
with(dialogColumns.add()){
var myPrinterPresetsDropdown = dropdowns.add({stringList:myPrinterPresets, selectedIndex:1});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
//Umrechnung der Seiten für die Berechnung des Druckbogens
var myStartPage= ((myStartPageField.editContents*1) -1)-myDoc.spreads[0].pages[0].name + 1
var myEndPage = ((myEndPageField.editContents*1) -1)-myDoc.spreads[0].pages[-1].name + 1
//Berechnung des Druckbogens
var myStartSpread = myDoc.pages[myStartPage].parent.index;
var myEndSpread = myDoc.pages[myEndPage].parent.index;

var myPrinterPreset = myPrinterPresets[myPrinterPresetsDropdown.selectedIndex];
//Remove the dialog box from memory.
myDialog.destroy();
}
else{
var myPrinterPreset = "";
myDialog.destroy();
}
return [myStartSpread, myEndSpread, myPrinterPreset];
}

function myGetPrinterPresets(){
var myPrinterPresets = new Array;
for(var myCounter = 0; myCounter < app.printerPresets.length; myCounter ++){
myPrinterPresets.push(app.printerPresets.item(myCounter).name);
}
return myPrinterPresets;
}


Viele Grüße
Martin


InDesign CS - Java Script

vhausw
Beiträge gesamt: 65

27. Jan 2006, 13:04
Bewertung:

gelesen: 2970

Beitrag als Lesezeichen
Hallo Martin,
nochmals ;-)

Dein Script ist soweit gut, nur bei mir kommt nicht der "Doc-Name.ps" sondern einer im Druckstiel hinterlegter "Doc-Name.ps". :-(

Kann man auch einen Druckstiel genau definieren, den er dann verwenden soll, oder geht nur die Reihenfolge in der Liste?


Ich glaube ja, dass wir mal reden sollten.
(Ich hätte da noch so einige Vorstellungen, was ich brauchen könnte.)


Grüßle
Volker

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

27. Jan 2006, 13:39
Bewertung:

gelesen: 2963

Beitrag als Lesezeichen
Hallo Volker,

in Deiner letzten Nachricht verstehe ich fast gar nichts.

Das Skript oben hatte ich nicht extra für Deine Zwecke geschrieben, sondern Dir als ein Muster geschickt, an dem Du Dich bei der Entwicklung Deines eigenen PS-Druckskripts orientieren und bedienen können solltest.

Mehr kann ich im Moment nicht leisten.

Viele Grüße
Martin


InDesign CS - Java Script

Gerald Singelmann
  
Beiträge gesamt: 6269

27. Jan 2006, 18:42
Bewertung:

gelesen: 2953

Beitrag als Lesezeichen
Zitat Ich hätte da noch so einige Vorstellungen, was ich brauchen könnte.

Faszinierend.
Ist wenigstens Dein kleiner Finger noch dran, Martin?

InDesign CS - Java Script

Martin Fischer
  
Beiträge gesamt: 12783

27. Jan 2006, 19:05
Bewertung:

gelesen: 676

Beitrag als Lesezeichen
andere Baustelle ...

Was fasziniert Dich?

Viele Grüße
Martin


InDesign CS - Java Script

Gerald Singelmann
  
Beiträge gesamt: 6269

28. Jan 2006, 22:58
Bewertung:

gelesen: 657

Beitrag als Lesezeichen
Zitat andere Baustelle ...

Was fasziniert Dich?


Die Selbstverständlichkeit, mit der Volker annimmt, dass Du noch mal 2 bis 6 Stunden investierst, um exakt das Skript zu implementieren, das er sich vorstellt.
Das erinnert mich so an meinen Neffen, wenn der was will, findet er das auch selbstverständlich, dass er das kriegt.
Ich finde das faszinierend.