hilfdirselbst.ch
Facebook Twitter gamper-media
Forenindex -- Lesezeichen

15 Lesezeichen für skript

Fussnoten in InDesign
Hallo zusammen,

Ich habe einen zweispaltigen Text mit Fussnoten in Adobe InDesign CS2, wuerde aber gern die Fussnoten als *eine* fortlaufende Spalte am Ende jeder Seite haben.

Hat jemand eine Idee, wie man das machen koennte?

Recht vielen Dank im Voraus!
Christoph....
Christoph29
12. Aug 2006, 17:07
Wörterbuch-Problem in CS6
Hallo zusammen,

bzgl. der Wörterbücher in InDesign mache ich entweder etwas falsch oder ich habe bis heute nicht verstanden wie das funktioniert…

Wir haben gerade einen Job abgeschlossen, bestehend aus knapp 500 einzelnen ID-Dateien. Im Laufe des Jobs habe ich immer mal wieder falsche oder unerwünschte Silbentrennungen (meist nicht-deutsche Wörter) ins Benutzerwörterbuch aufgenommen (siehe Screenshot "user_dictionary.pdf").

Selbstverständlich habe ich in den Voreinstellungen für die Dokumente die Option "Benutzerwörterbuch ins Dokument einlesen" aktiviert (siehe Screenshot "dictionary_preferences.pdf).

Etwa drei Wochen lang wurden die Dokumente immer wieder geöffnet und bearbeitet, mal auf Computer A, mal über's Netzwerk auf Computer B. Die Dokumente liegen und lagen stets am gleichen Ort auf Computer A. Ausschließlich auf Computer A wird das auch das Benutzerwörterbuch gepflegt. Es wurde nicht exportiert und auf Computer B übertragen. Nicht ein einziges Mal wurde beim Öffnen eines Dokumentes gemeckert, dass mit den Trennungsausnahmen etwas nicht stimmt. Weder auf Computer A noch auf Computer B.

Seit gestern weist InDesign plötzlich auf Computer A beim Öffnen eines beliebigen Dokumentes dieses Jobs auf abweichende Trennungsausnahmen hin (Screenshot "nervige_frage.pdf"). Ohne dass ich an den Einstellungen von InDesign oder sonstwas etwas verändert hätte. Auf Computer B kommt dieser Hinweis nicht. Gerade mit ca. 20 zufällig ausgewählten Dateien getestet.

Hat jemand eine Erklärung dafür oder kann mir eventuell die "Erleuchtung" geben? Die InDesign-Hilfe macht mich auch nicht schlauer…
...
Ralf Hobirk
15. Nov 2012, 18:00
|| Absatzformate aus JSON erzeugen
Hey,

beim rumspielen ist mir folgendes aufgefallen.
Man kann in die ".add()" Methode JSON rein schmeissen. Vielleicht wusstet ihr das schon. Wenn nicht hier mein Code zum Absatzformate erzeugen.
Viel Spass damit.
:F
Code
main(); 
function main(){


createParStyles(app.documents.add());

};


function createParStyles (theDoc) {

var parStyles = {
"styles":[
{"name":"h1" ,"appliedFont":app.fonts.item(0)/* bold */ , "pointSize":23},
{"name":"h2" , "pointSize":17},
{"name":"h3" , "pointSize":16},
{"name":"h4" , "pointSize":15},
{"name":"h5" , "pointSize":15},
{"name":"h6" , "pointSize":15},
{"name":"body" ,"appliedFont":app.fonts.item(0) , "pointSize":13,"alignToBaseline":true},
{"name":"ul" , "pointSize":13, "basedOn":theDoc.paragraphStyles.item("body")},
{"name":"ol" ,"pointSize":13, "basedOn":theDoc.paragraphStyles.item("body")},
{"name":"blockquote" ,"pointSize":12 ,"leftIndent":5}
],
};



for(var i in parStyles.styles){
try{
theDoc.paragraphStyles.add(parStyles.styles);
}catch(e){
alert(e + "\n" + i);
};
};
};

...
fabiantheblind
8. Mai 2012, 19:56
Tabellenbreite proportional skalieren
Das Script habe ich grade für eine (eigentlich unsympatische) Anfrage im englischen Forum erstellt.
War eh halb fertig ;)
Ich, nicht das Script.
Das war dreiviertelfertig.
Jetzt ist es ganz fertig.

Also dachte ich, hier hat vielleicht auch einer Freude daran:
Es rechnet die Breite einer Tabelle aus (ohne Konturen am Rand) und zeigt diese in einem Dialog an, so dass ich eine neue Breite eingeben kann. Alle Spalten werden dann proportional verbreitert oder -schmälert, um die neue Breite zu erreichen.

Code
tell application "Adobe InDesign CS3" 
set ms to selection
set aTable to parent of item 1 of ms
if class of aTable ? table then
set aTable to parent of aTable
if class of aTable ? table then
display dialog "no table selected"
return
end if
end if

set nC to count columns in aTable
set tWidth to 0.0
repeat with n from 1 to nC
set aWidth to (width of (column n of aTable))
set tWidth to tWidth + aWidth
end repeat

set myDialog to make dialog with properties {name:"Set Width of Table"}
tell myDialog
make dialog column
tell the result
set tNuWidth to make measurement editbox with properties {edit value:(tWidth * 2.83465), edit units:millimeters}
end tell
end tell
set nu to show myDialog
if nu is true then
set nuWidth to (edit value of tNuWidth) * 0.35278
set scaleClm to nuWidth / tWidth
repeat with n from 1 to nC
set aWidth to (width of (column n of aTable))
set width of column n of aTable to (scaleClm * aWidth)
end repeat
else
destroy myDialog
return
end if
end tell

...
Gerald Singelmann
11. Sep 2007, 19:13
Zeichen zählen
In http://www.adobeforums.com/webx?14@@.3c063846/5 hat Harbs heute ein erweitertes Skript zum Zählen von Zeichen, Wörtern, Zeilen und Absätzen in der Auswahl, dem ausgewählten Textabschnitt oder in allen Textabschnitten veröffentlicht:

Code
//TextCounter 
//An InDesign 3 JavaScript
//
//Counts text objects in the selection, in the selected story, or in all stories in a document.
//
//For more on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting.html
//or visit the InDesign Scripting User to User forum at http://www.adobeforums.com
//
if(app.documents.length != 0){
if(app.activeDocument.stories.length > 0){
myDisplayDialog();
}
else{
alert("The current document does not contain any text.");
}
}
else{
alert("No documents are open. Please open a document and try again.");
}

function myDisplayDialog(){
var myCountButtons, myRangeButtons;
var myDialog = app.dialogs.add({name:"TextCounter"});
with(myDialog.dialogColumns.add()){ with(borderPanels.add()){
staticTexts.add({staticLabel:"Count:"});
with(myCountButtons = radiobuttonGroups.add()){
radiobuttonControls.add({staticLabel:"Characters"});
radiobuttonControls.add({staticLabel:"Words", checkedState:true});
radiobuttonControls.add({staticLabel:"Lines"});
radiobuttonControls.add({staticLabel:"Paragraphs"});
}
}
with(borderPanels.add()){
staticTexts.add({staticLabel:"Range:"});
with(myRangeButtons = radiobuttonGroups.add()){
radiobuttonControls.add({staticLabel:"Selection", checkedState:true});
radiobuttonControls.add({staticLabel:"Selected Story"});
radiobuttonControls.add({staticLabel:"All Stories"});
}
}
}
var myReturn = myDialog.show();
if (myReturn == true){
//Get the values from the dialog box.
var myRangeType = myRangeButtons.selectedButton;
var myCountType = myCountButtons.selectedButton;
myDialog.destroy();
myTextCounter(myRangeType, myCountType);
}
else{
myDialog.destroy();
}
}
function myTextCounter(myRangeType, myCountType){
var myDocument, myTextCount, mySelection, myCountingUnit;
with (myDocument = app.activeDocument){
//Set the AlreadyCounted key of any stories in the document to false.
for (var myStoryCounter = 0; myStoryCounter < myDocument.stories.length; myStoryCounter ++){
myDocument.stories.item(myStoryCounter).insertLabel("AlreadyCounted", "False")
}
switch (myRangeType){
case 0:
//Count the text in the selection.
//If multiple text frames are selected, all of the
//text in the frames will be counted.
mySelection = selection;
if (mySelection.length == 1){
myTextCount = mySelectionSorter(mySelection[0], myRangeType, myCountType); }
else{
myTextCount = 0;
for (var myCounter = 0; myCounter < mySelection.length; myCounter++){
myTextCount = myTextCount + mySelectionSorter(mySelection[myCounter], myRangeType, myCountType);
}
}
break;
case 1:
//Count the text in the parent story (or stories) of the selection)
mySelection = selection;
if (mySelection.length == 1){
myTextCount = mySelectionSorter(mySelection[0], myRangeType, myCountType);
}
else{
myTextCount = 0;
//Now iterate through the items and count the text.
for (var myCounter = 0; myCounter < mySelection.length; myCounter++){
myTextCount = myTextCount + mySelectionSorter(mySelection[myCounter], myRangeType, myCountType);
}
}
break;
case 2:
//Count the text in all stories of the active document.
myTextCount = 0;
for(var myStoryCounter = 0; myStoryCounter < myDocument.stories.length; myStoryCounter ++){
myTextCount = myTextCount + myCountText(myDocument.stories.item(myStoryCounter), myCountType);
}
break;
}
switch(myCountType){
case 0:
if (myTextCount == 1){
myCountingUnit = "character";
}
else {
myCountingUnit = "characters";
}
break;
case 1:
if (myTextCount == 1){
myCountingUnit = "word";
}
else {
myCountingUnit = "words";
}
break;
case 2:
if (myTextCount == 1){
myCountingUnit = "line";
}
else {
myCountingUnit = "lines";
}
break;
case 3:
if (myTextCount == 1){
myCountingUnit = "paragraph";
}
else {
myCountingUnit = "paragraphs";
}
break;
}
var myDialog = app.dialogs.add({name:"TextCounter", canCancel:false});
with(myDialog){
//Add a dialog column.
with(dialogColumns.add()){
with(borderPanels.add()){
staticTexts.add({staticLabel:"InDesign found "});
with(dialogColumns.add()){
textEditboxes.add({editContents:myTextCount+""});
}
with(dialogColumns.add()){
staticTexts.add({staticLabel:myCountingUnit});
}
}
}
}
myDialog.show();
myDialog.destroy();
}
}
function mySelectionSorter(myObject, myRangeType, myCountType){
var myTextCount;
switch (myObject.constructor.name){
case "Text":
case "InsertionPoint":
switch (myRangeType){
case 0:
myTextCount = myCountText(myObject, myCountType);
break;
case 1:
myTextCount = myCountText(myObject.parentStory, myCountType);
break;
}
break;
case "TextFrame":
switch (myRangeType){
case 0:
myTextCount = myCountText(myObject.texts.item(0), myCountType);
break;
case 1:
//Has the parent story already been counted?
myStory = myObject.parentStory;
myCountedState = myStory.extractLabel("AlreadyCounted");
if (myCountedState != "True"){
myTextCount = myCountText(myStory, myCountType);
myStory.insertLabel("AlreadyCounted", "True");
}
else {
myTextCount = 0;
}
break;
}
break;
default:
//Selection is a not a text object.
//There's still a chance it could be a textPath object.
if (myObject.textPaths.length !=0){
myTextCount = 0;
if (myRangeType == 1){
for (myTextPathCounter = 0; myTextPathCounter < myObject.textPaths.length; myTextPathCounter ++){
myStory = myObject.textPaths.item(myTextPathCounter).parentStory;
myCountedState = myStory.extractLabel("AlreadyCounted");
if (myCountedState != "True"){
myTextCount = myTextCount + myCountText(myObject.textPaths.item(myTextPathCounter).parentStory, myCountType);
myObject.textPaths.item(myTextPathCounter).parentStory.insertLabel("AlreadyCounted","True");
}
else{
myTextCount = 0;
}
}
}
else {
for (myTextPathCounter = 0; myTextPathCounter < myObject.textPaths.length; myTextPathCounter ++){
myTextCount = myTextCount + myCountText(myObject.textPaths.item(myTextPathCounter).texts.item(0), myCountType);
}
}
}
else {
myTextCount = 0;
}
break; }
return myTextCount;
}
function myCountText(myTextObject, myCountType){
var myTextCount;
switch(myCountType){
case 0:
//count characters
myTextCount = myTextObject.characters.length;
break;
case 1:
//count words
myTextCount = myTextObject.words.length;
break;
case 2:
//count lines
myTextCount = myTextObject.lines.length;
break;
case 3:
//count paragraphs
myTextCount = myTextObject.paragraphs.length;
break;
}
return myTextCount;
}

...
Martin Fischer
27. Feb 2008, 23:36
for-Schleife einmal ohne, einmal mit geschweiften Klammern
Hallo, miteinander!
Kai und ich rätseln schon ein paar Tage. Weshalb funktioniert das folgende Script. Es soll abfragen, ob im Dokument die Farbe "Test" bereits vorkommt. Falls NEIN, die Farbe anlegen, falls JA, nichts weiter tun. Daß dieses (erfolgreich auszuführende) Script zustande kam, beruht übrigens auf einem Schreibfehler. Wir hatten schlicht und ergreifend die geschweiften Klammern zu setzen vergessen ;-)
Code
for (var n=0; n< app.activeDocument.swatches.length; n++) 
if(app.activeDocument.swatches[n].name == "Test"){
exit ();
}
else (app.activeDocument.swatches[n].name != "Test")
{app.activeDocument.colors.add({name:"Test", model:ColorModel.PROCESS, colorValue:[0, 100, 100, 0]});
};


Im folgenden Script hingegen wird ein Fehler geworfen: "Dieser Farbfeldname wird bereits verwendet. Wählen Sie einen anderen Namen." Logisch (jedenfalls denke ich mir das so), da das Script mehrmals versucht eine Farbe mit gleichem Farbfeldnamen anzulegen.
Code
//JS soll prüfen, ob ein Farbname im Dokument enthalten ist. 
//Falls JA, nichts weiter tun
//Falls NEIN eine Farbe mit dem geprüften Namen anlegen:

//DIES FUNKTIONIERT NICHT, DA DAS SCRIPT VERSUCHT DIE FARBE "Test" MEHRMALS ANZULEGEN.

for (var n=0; n< app.activeDocument.swatches.length; n++){
if(app.activeDocument.swatches[n].name == "Test"){
exit ();
}
else (app.activeDocument.swatches[n].name != "Test")
{app.activeDocument.colors.add({name:"Test", model:ColorModel.PROCESS, colorValue:[0, 100, 100, 0]})
};
};

Aber weshalb funktioniert die obere Version des Scripts ohne die geschweiften Klammern um die Anweisungen der for-Schleife herum?
...
Uwe Laubender
23. Sep 2009, 21:18
Textrahmen, die ein bestimmtes Absatzformat enthalten, auf andere Ebene kopieren per Skript
Damit?

Code
// Adobe InDesign CS3 Script 

Absatzformat = app.activeDocument.paragraphStyles.item( 'Normal' );
Ebene = app.activeDocument.layers.item( 'Ebene 1' );

app.findTextPreferences = app.changeTextPreferences = NothingEnum.nothing;
try { app.findTextPreferences.appliedParagraphStyle = Absatzformat; } catch(e) { alert( 'Fehler\rAbsatzformat ok?' )}

f = app.activeDocument.findText();
for ( i = 0; i < f.length; i++ )
try { f[i].parentTextFrames[0].itemLayer = Ebene; } catch(e) { alert('Fehler\rEbene ok?\rEventuell steckt der Absatz im Überlauf.' )}


Mist, Du brauchtest es für CS2.
Damit?

Code
// Adobe InDesign CS2 Script 

Absatzformat = app.activeDocument.paragraphStyles.item( 'Normal' );
Ebene = app.activeDocument.layers.item( 'Ebene 1' );

app.findPreferences = app.changePreferences = NothingEnum.nothing;
try { app.findPreferences.appliedParagraphStyle = Absatzformat;} catch(e) {alert('Fehler\rAbsatzformat ok?')}

f = app.activeDocument.search();
for (i = 0; i < f.length; i++)
try {f[i].parentTextFrames[0].itemLayer = Ebene;} catch(e) {alert('Fehler\rEbene ok?\rEventuell steckt der Absatz im Überlauf.')}

...
Martin Fischer
23. Jan 2008, 22:52
[JS] Barcode Generator Skript - TESTEN
 
Hallo,

im engl. Skripting-Forum wurde ein Skript zur Erstellung von EAN13/ISBN-Barcodes veröffentlicht.

Hat irgendjemand die Möglichkeit einen mit diesem Skript erzeugten Barcode mit einem Barcode-Leser zu prüfen?

Hier der Link:
http://www.adobeforums.com/...?14@581.kUhHholPQaO@
...
zaphodbeeblebroxx
26. Sep 2007, 14:33
Fensterchen „Scriptbezeichnung"
Hallo Gemeinde,

in InDesignCS2 gibt es ja das Fenster „Scriptbezeichnung". Was hat dieses Fensterchen für eine Aufgabe?
Ich sehe weder etwas in dem Fenster noch kann ich etwas reinschreiben. Ich habe mir gedacht, ich kann in dem Fenster eine kleine Erklärung zum aktivierten Script reintippen, da die meisten Scriptnamen keine sehr aussagekräftigen Namen haben. Vor Allem, wenn man eine große Scriptsammlung sein Eigen nennt. Aber dem ist nicht so. Das Fensterchen bleibt Stumm.
...
planobogen
15. Jan 2008, 17:04
Tabbellen aus Quark in InDesign automatisch umformatieren
 
Hallo,

von Martin Fischer gibt es ein Skript (für CS2), welches eine neue Tabelle aus einer markierten Tabelle erzeugt, bei der die Spalten-/Zeilenanordnung getauscht wird.

Allerdings gehen die Tabellen-/Zellformatierungen verloren.

Vielleicht als erster Ansatz verwendbar:
Code
// transposeTableCells.jsx 
//DESCRIPTION: Transponiert die Zellen einer Tabelle (Vertauschen von Reihen und Spalten)
var myCounter = 0;
// Objektdefinition Tabelle, je nach Auswahltyp  
if (app.selection.length > 0)
{
   switch (app.selection[0].constructor.name)
   {
      case "InsertionPoint": var myOldTable = app.selection[0].parent.parent; break;
      case "Text": var myOldTable = app.selection[0].parent.parent; break;
      case "Word": var myOldTable = app.selection[0].parent.parent; break;
      case "Character": var myOldTable = app.selection[0].parent.parent; break;
      case "Cell": var myOldTable = app.selection[0].parent; break;
      case "Table": var myOldTable = app.selection[0]; break;
      case "TextFrame": var myOldTable = app.selection[0].tables[0]; break;
   }
}

if ((myOldTable != undefined) && (myOldTable.constructor.name == "Table")) // nichts oder nichts, woraus sich eine Tabelle ableiten ließe, gewählt
{
   myOldTable.cells.everyItem().unmerge(); // es dürfen keine Zellen miteinander verbunden sein
   var  myNewInsPoint = myOldTable.storyOffset; // Einfügepunkt für neue Tabelle (direkt hinter der alten Tabelle)
   // Einfügen der neuen Tabelle mit Parametern für Spalten- und Zeilenzahl
   var myNewTable = myOldTable.parent.parentStory.insertionPoints[myNewInsPoint].tables.add({columnCount:myOldTable.bodyRowCount,  bodyRowCount:myOldTable.columnCount})
   // Schleife zum Verschieben der Zelleninhalte
   for (oneCol = 0; oneCol < myOldTable.columnCount; oneCol++)
   {
      for (oneRow = 0; oneRow < myOldTable.bodyRowCount; oneRow++)
      {
         // Verschieben der Zelleninhalte
         myOldTable.cells[oneRow * myOldTable.columnCount + oneCol].texts[0].move(LocationOptions.after, myNewTable.cells[myCounter].insertionPoints[0])
         myCounter+=1;
      }
   }
   myOldTable.remove(); // Löschen der alten Tabelle
   myNewTable.cells[0].insertionPoints[0].select(); // Plazieren des Cursors in der ersten Zelle der neuen Tabelle
}
else alert("Bitte Tabelle wählen.")

...
zaphodbeeblebroxx
11. Jan 2008, 12:34
Gruppen im gesamten Dokument auflösen
Hallo Michael,

dann versuche es doch mit diesem JavaScript:
Code
while (app.documents[0].groups.length !=0) { 
app.documents[0].groups.everyItem().ungroup();
}
alert ("Fertig.", "Schon gemacht");

Damit werden auch gruppierte Gruppen von Gruppen aufgelöst.

Gruss, Hans...
Hans Haesler
28. Nov 2007, 14:18
versionierung von dateien OHNE version cue?
Das Eventskript saveCopy.jsx für InDesign CS3 erstellt vor dem Sichern der aktuellen Datei automatisch eine Kopie der ursprünglichen Version in einem Unterordner namens "Sicherung", welcher bei Bedarf vom Skript angelegt wird.
...
Martin Fischer
9. Nov 2007, 18:34
Tabellenbreite proportional skalieren
Hallo Gerald,

aus aktuellem Anlaß (weil ich's grad selbst so brauche), habe ich in Deinem Skript eine kleine Modifikation gemacht:

Wenn die Tabelle in einem Textrahmen platziert ist, wird im Dialogfeld die Breite des Textrahmens als Ziel für die Gesamtbreite der Tabelle vorgeschlagen.

Andernfalls (z.B. wenn die Tabelle in einer Tabellenzelle platziert ist) wird weiterhin, wie in Deinem Skript, die aktuelle Tabellenbreite eingeblendet.

Code
bGoOn = true; 
aTable = app.selection[0];
if (aTable.constructor.name != "Table") {
aTable = aTable.parent;
if (aTable.constructor.name != "Table") {
aTable = aTable.parent;
if (aTable.constructor.name != "Table") {
alert("Es muss ein Text in einer Zelle markiert sein");
bGoOn = false;
}
}
}
if (bGoOn) {
nc = aTable.columns.length;
tWidth = 0.0;
for (n=0; n < nc; n++) {
tWidth += aTable.columns[n].width;
}
// die Tabelle befindet sich in einem Textrahmen
if (aTable.parent.constructor.name == "TextFrame") {
tfBounds = aTable.parent.geometricBounds;
// vorgeschlagener Wert für die Gesamtbreite der Tabelle = Breite des Textrahmens
myValue = tfBounds[3] - tfBounds[1];
}
else {
// vorgeschlagener Wert für die Gesamtbreite der Tabelle = aktuelle Tabellenbreite
myValue = tWidth;
}
var myDialog = app.dialogs.add({name:"Tabellenbreite"});
with(myDialog.dialogColumns.add()){
var nuWidthField = measurementEditboxes.add({editValue:(2.83465 * myValue), editUnits:MeasurementUnits.millimeters, smallNudge:0.5});
}

var myResult = myDialog.show();
if(myResult == true){
var nuWidth = nuWidthField.editValue * 0.35278;
myDialog.destroy();
scaleClm = nuWidth / tWidth;
for (n=0; n < nc; n++) {
aTable.columns[n].width = scaleClm * aTable.columns[n].width;
}
}
else{
myDialog.destroy();
}
}

...
Martin Fischer
17. Sep 2007, 09:25
Re: Didot-Punkt (Seitenzahlen in Literaturverweisen)
Antwort auf: Ach, hier gibts noch Leute die das Didot-System kennen. Ich hatte schon befürchtet ich wär' der Letzte dieser Gattung.


Übrigens:
Seit InDesign CS2 habe ich meinen Didot-Punkt wieder.

/InDesign/Voreinstellungen/Einheiten & Einteilungen/Punkt-/Pica-Größe = 67,553 Punkt/Zoll.


Per Script schalte ich bei Bedarf zwischen dem PostScript-Punkt und dem Didot-Punkt hin und her:
Code
// switchPointsPerInch.jsx 

with ( app.documents[0].viewPreferences )
{
pointsPerInch = (pointsPerInch == 72)
? 67.553
: 72;
alert( pointsPerInch + " Punkte/Zoll" );
}

...
Martin Fischer
17. Aug 2007, 16:04
JSFindschange vereinfachen
Quarz,

fillColor ist schon richtig.
Aber Du bist einem Bug auf die Schliche gekommen.

Die Farbe, nach der Du im Dokument suchst, muß - für das Script - auch auf Programmebene vorhanden sein (also da, wo kein Dokument geöffnet ist).

Wenn sie auch dort vorhanden ist, kannst Du sie im Dokument suchen - wahrscheinlich auch mit JSFindChange.

Diesem Bug sind wir vor ca. 2 Wochen im InDesign Scripting-Forum auf die Schliche gekommen (Dave Saunders hat den workaround gefunden).
...
Martin Fischer
9. Aug 2007, 17:37