[GastForen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Forenindex -- Lesezeichen

15 Lesezeichen für skript

Skript zum Index generieren
Mit folgendem Skript lassen sich Indexeinträge basierend auf einer Konkordanzliste (Liste mit aufzunehmenden Begriffen) erzeugen. Ein Dialog fordert zur Auswahl der Textdatei mit der Begriffsliste auf. Die Begriffe müssen durch Zeilenschaltung voneinander getrennt sein (je Begriff eine neue Zeile).

Code
// IndexFromList.jsx  
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.

var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();

var myWords = getWords(myList);
proceedWithList(myWords);
alert("Habe fertig!");


// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art und von RETURNs durch RETURNs
aText = aText.replace(/\s+/g, '\n');

var words = aText.split('\n');
aFile.close();
return words;
}
else {
exit();
}
}

// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();

app.findPreferences = app.changePreferences = null;

for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);

// Aktualisieurng des Index
myDoc.indexes[0].update();
}

// Indexeintrag erzeugen
function makeEntry(oneWord) {
var myResult = myDoc.search(oneWord, true, true, undefined);
for (var oneEntry = myResult.length-1; oneEntry >=0; oneEntry--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
myDoc.indexes[0].topics.add(oneWord);
// Hinzufügen der Referenz
myDoc.indexes[0].topics.item(myResult[oneEntry].contents).pageReferences.add(myResult[oneEntry], PageReferenceType.currentPage);
}
catch(e) {}
}
}


Das Skript basiert auf Peter Kahrels IndexFromCharacterStyle_shortVersion.js (Dank für die Vorlage).

Aktuell ist es so eingestellt, daß es Groß-/Kleinschreibung unterscheidet ("fischen" ungleich "Fischen") und daß es nach ganzen Worten sucht ("Fisch" findet "Fisch", aber nicht "Fischer").
Diese Einschränkung könnte bei Bedarf später per Dialog mit Optionen geöffnet werden.

Ferner ignoriert diese Version Fundstellen in Fußnoten.
Um letztere zu berücksichtigen, müßten die Fußnoten z.B. über das Skript notes2text.jsx von Peter Kahrel zunächst in Endnoten umgewandelt und nach der Erzeugung der Indexeinträge mit demselben Skript wieder in Fußnoten zurückkonvertiert werden.

edit (16.11.2007):
Eine aktualisierte Fassung (für InDesign CS2) findet sich in Indexhilfe erwünscht.
...
Martin Fischer
5. Mär 2007, 08:48
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[i]);
}catch(e){
alert(e + "\n" + i);
};
};
};

...
fabiantheblind
8. Mai 2012, 19:56
Neues Fußnotenproblem CS5
Beim Synchronisieren der Einstellungen der Linie bei 'fortgesetzten Fußnoten' mit der Linie über der 'ersten Fußnote in der Spalte' hilft das Skript continuingRule_Sync.jsx.


Ein ganzes Set mit Einstellungen zu den Fußnotenoptionen lässt sich mit dem Skript footnoteOptionsSet.jsx einrichten.
...
Martin Fischer
9. Mär 2011, 09:24
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
Doppelseiten alphabetisch ordnen nach Absatzformat?
So sollte es auch in CS2 laufen:

Code
d = app.activeDocument;   
l = d.layers.item ('Ebene 2');

for ( i = 0; i < d.spreads.length; i++ )
{
o = d.spreads[i].pageItems;
if ( o.length> 1 )
{
g = d.spreads[i].groups.add( o );
duppel( g );
g.ungroup();
}
else if ( o.length == 1 )
{
duppel(o[0] );
}
}
l.groups.everyItem().ungroup();

function duppel( x )
{
newObj = x.duplicate( [0,0] );
newObj.itemLayer = l;
}

...
Martin Fischer
1. Feb 2008, 10:03
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
Bestimmte Schrift in Pfade umwandeln
Chris,

das sollte damit gehen:
Code
// appliedCStoOutline.jsx 

app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;
app.findTextPreferences.appliedCharacterStyle = "Bold"; // hier Zeichenformat angeben
var myResult = app.activeDocument.findText();
for (i = myResult.length-1; i >= 0; i--)
myResult[i].createOutlines();

...
Martin Fischer
28. Nov 2007, 15: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
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
Eventskrips für CS3
Zitat aber Herr Singelmann hat gesagt

Holy smoke! Bitte meißelt meine Worte nicht in Marmor. Wenn überhaupt meißeln, dann in Vanillepudding, da kriegt man sie wenigstens wieder raus.

Ich habe nur den Scripting Guide zitiert (zu laden unter http://www.adobe.com/...scripting/index.html in der Mitte auf "Scripting resources" klicken), weil ich es plausibel finde, auch diesen Part unser Scripte sprachneutral zu halten.

Dort steht
Zitat in InDesign scripting, menuItems, menus, menuActions,and submenus are all referred to by name. Because of this, scripts need a method of locating these objects that is independent of the installed locale of the application. To do this, you can use an internal database of strings that refer to a specific item, regardless of locale

und
Zitat Note:It is much better to get the locale-independent name of a menuAction than of a menu, menuItem, or submenu, because the title of a menuAction is more likely to be a single string. Many of the other menu objects return multiple strings when you use the getKeyStrings method.


Das Beispielscript im Guide zum finden des neutralen Strings ist
Code
var myString = ""; 
var myMenuAction = app.menuActions.item("Convert to Note");
var myKeyStrings = app.findKeyStrings(myMenuAction.name);
if(myKeyStrings.constructor.name == "Array"){
for(var myCounter = 0; myCounter < myKeyStrings.length; myCounter ++){
myString += myKeyStrings[myCounter] + "\r";
}
}
else{
myString = myKeyStrings;
}
alert(myString);


Um daraus die momentan aktuelle Sprache zu machen
Code
var myString = app.translateKeyString("$ID/NotesMenu.ConvertToNote"); 


So, jetzt ist alles wieder schön relativiert und eingeebnet :)

Danke
...
Gerald Singelmann
28. Jun 2007, 23:09

Aktuell

Photoshop / Lightroom
Lightroom_-Detailkontrast_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
12.12.2019

Ortsunabhängig
Donnerstag, 12. Dez. 2019, 10.00 - 10.30 Uhr

Webinar

In diesem ca. halbstündigen kostenlosen Webinar stellen wir Ihnen die Neuerungen in der Version 2019 von Enfocus PitStop Pro vor.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Detlef Grimm, E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=249

Enfocus PitStop 2019
Veranstaltungen
19.12.2019

Ortsunabhängig
Donnerstag, 19. Dez. 2019, 10.00 - 10.30 Uhr

Webinar

Wir stellen Ihnen anhand konkreter Workflows die Möglichkeiten und Vorteile einer automatischen PDF-Prüfung und -Korrektur vor.

halbstündig, kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: Detlef Grimm, E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=113

Switch PDF Automation Server
Hier Klicken