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

15 Lesezeichen für skript

[Grep | JS] Ø oder ø finden…
n'abend zusammen,
ich bastel gerade für's büro ein skript, welches eine sammlung von grep-suchen abarbeitet. wir haben für viele dinge definierte abstände und schreibweisen. dazu gehören auch Ø uns ø vor oder nach Zahlen.

Kopiere ich diese Zeichen in das GREP-feld in ID, dann finde ich alle. kopiere ich meinen suchbegriff in mein JS dann findet er das nimmer im dokument. *grübel*

hier ein teil aus dem JS:


Zitat // Duchmesser ø/Ø vor Zahlen
//Suchfelder zurücksetzen
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
//Suchoptionen festlegen
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = true;
app.findChangeGrepOptions.includeLockedLayersForFind = true;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = true;
//Suchen
app.findGrepPreferences.findWhat = "(Ø|ø)[ ~m~>~S~s~|~%~<~4~3~.~/~f]?(\\d)";
//Ersetzen
app.changeGrepPreferences.changeTo = "$1 $2";
app.activeDocument.changeGrep ();


any ideas anybody?
...
madoho
1. Sep 2008, 22:09
|| Frage zu #include
Hallo Jürgen,

versuch's mal so:

Code
eval("#include " + Folder.userData + '/Sprachfiles/Sprachdaten.jsx'); 


#include ist keine gewöhnliche Javascript-Funktion sondern eine "Präprozessoranweisung" und kann nicht Variablen oder Ausdrücke als Argument annehmen. Der einzuschließende Dateipfad muss buchstäblich hinter include stehen. Mit eval() kann man das quasi simulieren.

Sauberer wäre es in diesem Fall aber, die Sprachdatei mit app.doScript() auszuführen:

Code
app.doScript(File(Folder.userData + '/Sprachfiles/Sprachdaten.jsx')); 


LG
Martin
...
Martin Braun
6. Dez 2012, 20:19
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
AutoFormat in InDesingn CS3
> Mit app.documents[0] läuft das eventScript mit dem event 'afterOpen'.

Aber Achtung:
Ist bereits ein Dokument geöffnet, dann wird mit app.documents[0] das zuletzt aktive (also das, welches vor dem Öffnen des neuen Dokuments aktiv war) adressiert.

Das gerade geöffnete Dokument kann sicherer mit app.documents[-1] adressiert werden. Nur wenige Sekunden später, wenn es angezeigt wird, stimmt diese Behauptung nicht mehr. ;-)
...
Martin Fischer
8. Jul 2008, 17:33
Druckordner erstellen mit InDesign CS
Mit dem Thema habe ich gerade auch rumgespielt, weil ein Kunde in CS3 ein Problem mit einem CS1-Skript hat, das die im Dokument verwendeten Schriften in einen bestimmten Ordner kopieren soll.

Das folgende kleine Skript hat den Vorteil, daß es auch auf dem Mac läuft.
Allerdings ist es wg. dem Preflight, der nicht zu unterdrücken ist, etwas langsam.
Immerhin lassen sich die Übertragung der verknüpften Graphiken, Preflight-Fehlermeldungen und ein Report verhindern.

Das Skript fragt nach einem Zielordner.
In diesen Zielordner wird die aktuelle Datei verpackt - und nimmt die (kopierberechtigten) Schriften in den Unterordner "Fonts" mit.
Im Zielordner wird die kopierte InDesign-Datei gelöscht und der Fonts-Ordner bekommt den Namen der InDesign-Datei + '.fonts'. Dort liegen die im Dokument verwendeten Fonts.
Also bei einer "haeberle.indd' bleibt ein Ordner "haeberle.fonts" übrig.

Code
//fontsPackage.jsx  
//DESCRIPTION: Kopiert die im Dokument verwendeten Schriften in einen auszuwählenden Ordner

var d = app.activeDocument;
var f = Folder.selectDialog( 'Verzeichnis für die Ablage der Schriften', new Folder() );
if ( f == null ) exit();

if (f.toString() == d.filePath)
{
var f = new Folder (f + '/Fonts');
f.create();
}
d.packageForPrint( f, true, false, false, false, true, false, 'Fonts', false );
File( f + '/' + d.name ).remove();
var fName = d.name.replace( /.indd/g, '.fonts' );
var renF = Folder( f + '/Fonts' ).rename( fName );
if (renF == false) // Fonts-Ordner mit Dateinamen bereits vorhanden
{
var r = confirm ( 'Achtung!\rAlten Fonts-Ordner \"' + fName + '\" löschen?');
if (r == false)
exit();
// Löschen der Fonts im alten Fonts-Ordner
var s = Folder( f + '/' + fName).getFiles();
for ( i = s.length-1; i >= 0; i--)
s[i].remove();
// Löschen des alten Fonts-Ordners
Folder( f + '/' + fName).remove();
var renF = Folder( f + '/Fonts' ).rename( fName );
}

Vielleicht kann's die eine oder der andere mal brauchen.
...
Martin Fischer
1. Feb 2008, 21:41
automatischer Textfluss
Hier die CS3-Version des obigen Skripts 'AppendPagesIfStoryOverflows.jsx':

Code
//AppendPagesIfStoryOverflows_CS3.jsx  
//
// thanks to Dave Saunders for the functions isText() and DumbRunPages()
// http://jsid.blogspot.com/2005/10/standard-methods-and-functions.html

Object.prototype.isText = function()
{
switch(this.constructor.name)
{
case "InsertionPoint":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
return true;
default :
return false;
}
}

if ((app.documents.length> 0) && (app.selection.length > 0) && (app.selection[0].isText())) {
var aStory = app.selection[0].parentStory;
var aDoc = app.documents[0];

DumbRunPages(aDoc, aStory)
}
else {
alert("Fehler\rBitte Text auswählen.")
}

function DumbRunPages(theDoc, theStory) {
// What makes this "dumb" is that default master pages are used.
var uRuler = theDoc.viewPreferences.rulerOrigin;
theDoc.viewPreferences.rulerOrigin = RulerOrigin.spreadOrigin;
while (theStory.textContainers[theStory.textContainers.length-1].overflows) {
//Seite nach der letzten Textrahmenseite einfügen
var backPage = aDoc.pages.add(LocationOptions.after, aStory.textContainers[theStory.textContainers.length-1].parent)

app.activeWindow.activePage = backPage;
backPage.appliedMaster = theDoc.pages[-2].appliedMaster;
var myPbounds = backPage.bounds;
var myNewTF = backPage.textFrames.add();
if ( (!theDoc.documentPreferences.facingPages) || (backPage.side == PageSideOptions.rightHand) ) {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.left,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.right];
} else {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.right,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.left];
}
myNewTF.itemLayer = theStory.textContainers[theStory.textContainers.length-1].itemLayer;
myNewTF.previousTextFrame = theStory.textContainers[theStory.textContainers.length-1];
myNewTF.textFramePreferences.textColumnCount = backPage.marginPreferences.columnCount;
myNewTF.textFramePreferences.textColumnGutter = backPage.marginPreferences.columnGutter;
if (myNewTF.characters.length == 0){
theDoc.viewPreferences.rulerOrigin = uRuler;
alert("Permanently overset"); // This indicates a permanent overset condition so break out of loop
}
}
theDoc.viewPreferences.rulerOrigin = uRuler;
}

...
Martin Fischer
22. Jan 2008, 05:38
vertikale Hilfslinien entfernen
Tut's das Script?


Code
allGuides = app.documents[0].guides; 
for (n = allGuides.length-1; n>=0; n--) {
if (allGuides[n].orientation == HorizontalOrVertical.VERTICAL) {
allGuides[n].remove();
}
}


(Martin kann das bestimmt auch in einer Zeile ;) )
...
Gerald Singelmann
18. Jan 2008, 09:41
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
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
||| Scripte unter ID CS3
Hallo,

ich habe mir die deutsche DemoVersion von ID CS3 auf meinen Rechner installiert.

Die Scripte von ID CS2 laufen auch unter ID CS3.
Dazu muß nur, nach Information von Gerald, ein neuer Ordner angelegt werden:

\Dokumente und Einstellungen\Name\Anwendungsdaten\Adobe\InDesign\Version 5.0\Scripts\Scripts Panel\
Version 4.0 Scripts

und dorthin dann die alten Scripte kopieren.

Leider stürzt mir ID CS3 bei Änderung und Hinzufügen nach ca. 30 Tastaturkürzeln ab.
Ich hoffe, dass das später bei der regulären Version nicht mehr passiert.

Gruß
Quarz
...
Quarz
15. Mai 2007, 14:15