[GastForen

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

13 Lesezeichen für script

||||| Info-Fenster kurz auf dem Bildschirm anzeigen (Script UI)
Um noch einen Denkansatz in das Rund zu werfen:

$.sleep friert InDesign ein. Jedes Script verhindert, dass InDesign – während das Script läuft – irgendwas anderes machen kann. Ist halt Single Thread.

Deswegen habe ich vor einiger Zeit angefangen, mit onIdle zu experimentieren.

Das ist ein Event, der gefeuert wird, wenn InDesign grad der Meinung ist, nicht zu tun zu haben.

Man kann also, wenn das Script fertig ist, das Fenster anzeigen und sich in den onIdle-Event eintragen.
Alle soundso Sekunden fragt InDesign dann beim Script an, ob es was machen will, ist aber in der Zwischenzeit nicht blockiert.

Wichtig bei all dem ist, dass das Script nicht in der Script-Engine "main" läuft, sondern in einer eigenen, damit alle Funktionen und Variablen persistent sind.

Hier ein Code, um das Prinzip zu illustrieren.

Code
#targetengine "singels_idle_test" 

main();

function main() {
// -------------------------------------------------
// Platzhalter für das eigentliche Script
// -------------------------------------------------
do_something();

// -------------------------------------------------
// Wie lange anzeigen? in msec
// -------------------------------------------------
var time_to_keep_open = 3000;

// -------------------------------------------------
// Palette erzeugen
// -------------------------------------------------
var w = new Window( "palette" );
w.add("statictext", undefined, "FEDDICH");
w.add("statictext", undefined, "...warte rund " + Math.floor( time_to_keep_open / 1000 ) + " Sekunden...");
w.txt = w.add("statictext", [undefined, undefined, 400, 10], "...");
w.pb = w.add("progressbar", [undefined, undefined, 400, 10]);
w.pb.value = 0;
w.pb.maxvalue = time_to_keep_open;
w.show()

// -------------------------------------------------
// IdleHandler einrichten, um InDesign nicht zu blockieren
// -------------------------------------------------
var then = new Date().getTime();
var myIdleTask = app.idleTasks.add({name:"singels_idle_taks", sleep:100});
var onIdleEventListener = myIdleTask.addEventListener("onIdle", close_if_time);


// -------------------------------------------------
// Check, ob Zeit um ist
// -------------------------------------------------
function close_if_time() {
var now = new Date().getTime();
w.txt.text = (Math.round( (now-then) * 1000 ) / 1000).toString()
if ( now - then > time_to_keep_open ) {
w.close();
// --------------------------------------------------
// IdleTask wieder löschen, indem sleep auf 0 gesetzt wird.
// -------------------------------------------------
myIdleTask.sleep = 0;
} else {
w.pb.value = now - then;
}
}

// -------------------------------------------------
// Diese Funktion tut nichts zur Sache
// -------------------------------------------------
function do_something() {
var doc;
if ( app.documents.length ) {
doc = app.activeDocument;
} else {
doc = app.documents.add();
}
var pg = doc.layoutWindows[0].activePage;
var bd = pg.bounds;
var count = 100;
var w1 = new Window("palette");
w1.pb = w1.add("progressbar", [undefined, undefined, 300, 4] );
w1.pb.maxvalue = count;
w1.show();
for ( var n = 0; n < count; n++ ) {
w1.pb.value = n;
var t = bd[0],
l = bd[1],
b = bd[2],
r = bd[3],
pw = r - l,
ph = b - t,
minsize = 20,
x = Math.floor( Math.random() * (pw - minsize) ),
y = Math.floor( Math.random() * (ph - minsize) ),
xrest = pw - x - minsize,
yrest = ph - y - minsize,
w = minsize + Math.floor( Math.random() * xrest ),
h = minsize + Math.floor( Math.random() * yrest );
var swatch = doc.swatches.anyItem();
var tint = Math.floor( Math.random() * 100 );

var thing = pg.rectangles.add();
thing.geometricBounds = [ y + t, x + l, y+h+t, x+w+l ];
thing.strokeWeight = 0;
thing.fillColor = swatch;
thing.fillTint = tint;
}
w1.close();
}
}

...
Gerald Singelmann
23. Nov 2019, 11:25
||| Trimbox anzeigen (bzw. Maße der Trimbox) in Adobe Reader 8 möglich?
Hallo zusammen,

ein kurzes, kleines (und sicherlich aus der Sicht von Profiprogrammieren schreckliches) JavaScript kann da helfen:

Code
app.addToolButton({cName:"showtrimbox",cTooltext:"Trimbox",cExec:"showTrim()",cEnable:true,nPos:0,cLabel:"Trimbox"}); 
function showTrim() {
try {
app.removeToolButton({cName:"trimbox"});
} catch(err){}
try {
var r=this.getPageBox("Trim",this.pageNum);
var h=(r[1]-r[3])/2.834647623697917;
var b=(r[2]-r[0])/2.834647623697917;
} catch(err) { return; }
app.addToolButton({cName:"trimbox",cTooltext:"Trimbox",cExec:"",cEnable:false,nPos:1,cLabel:util.printf("%,2.1f mm x %,2.1f mm",b,h)});
}


Das als trimbox.js im JavaScript-Ordner von Acrobat (Pro oder Reader) ablegen, und in der Toolbar sollte ein neuer Button "Trimbox" auftauchen. Ein Betätigen desselben öffnet ein kleines Fenster, in dem die Maße der Trimbox der aktuellen Seite angezeigt werden.

Unter Windows 7 64bit ist der Reader-JavaScripts-Ordner unter C:\Program Files (x86)\Adobe\Reader x.x\Reader\Javascripts zu finden, bzw. C:\Program Files (x86)\Adobe\ Acrobat x.x\Acrobat\Javascripts für Acrobat Pro. Man benötigt Administrator-Rechte, um dort zu schreiben. Falls das also mit einem Texteditor nicht direkt funktioniert, erst auf dem Desktop speichern und dann dort hineinkopieren - UAC sollte dann anspringen.

Getestet hatte ich das Skript mit Acrobat 9, X und XI - jeweils Reader und Pro.
Ab Acrobat X ist der Button nur bei einem geöffnetem PDF unter der Rubrik "Erweitert - Zusatzprogramme" zu finden.

Der Theorie nach sollte das Skript auch unter Mac OS X funktionieren, das habe ich aber nie getestet.

Grüße,
Lars
...
Lars
5. Nov 2012, 20:01
[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
Ausgeblendete Objekte pauschal löschen
Hallo!

Versuch es mal mit dieser Version. Jetzt sollten auch ausgeblendete Objekte innerhalb von Gruppen gelöscht werden :)
...
Kai Rübsamen
15. Jun 2015, 15:24
Word-Dateien in ID platzieren
Hallo Quarz, Hallo Jörn,

das Skript ist nun aktualisiert:

https://www.rolanddreger.net/...ord-XML-Document.zip

Zeichenformate in Fuß- und Endnoten sollten nun übernommen werden.

Ein Tipp noch: Vor dem Speichern als Word-XML-Dokument die Option »Rechtschreibung/Grammatik während der Eingabe« deaktivieren (vereinfacht die XML-Struktur des Dokuments). »Alle Änderungen annehmen« – sofern vorhanden – schadet auch nicht, vor allem wenn Hyperlinks im Text vorhanden sind.

Ich vergleiche den Inhalt nach dem Import in InDesign meist nochmal als reinen Text mit Words »Dokumente vergleichen ...«.

Schöne Grüße
Roland
...
drerol74
17. Mai 2015, 15:22
CS6, Import Word 2010: Zuweisung von Schriftart & -größe, Beibehaltung Auszeichnungen
Hallo mtemp,

ich will kurz erklären, wie ich einen
Word-Text in InDesign layoute.

Grundlagen
1.
Wordtext platzieren (mit drag & drop)
2.
Script "CharStyle" (legt ZFe für Abweichungen an)
http://www.hilfdirselbst.ch/..._P461499.html#461499
oder
http://indesign.hilfdirselbst.ch/...aten-einfrieren.html
3.
Absatzformat mit 'Alt' zuweisen
4.
Script 'clearOverrides'
http://indesign.hilfdirselbst.ch/...chungen-loschen.html


Gruß
Quarz
_________________________
Win7 | InDesign CS6 ver 8.1
...
Quarz
26. Mär 2015, 15:46
GREP suche nach Zeilenende (automatischer Umbruch, nichts manuelles)
grep arbeitet mit dem Inhalt des Textes. Eine Absatzschaltung gehört zum Inhalt. Der Umbruch aber nicht. Ein Zeilenende ist kein Zeichen, nach dem man suchen könnte. Also geht das nicht mit grep.

Ein Script könnte helfen...

Code
#target indesign 
if (app.documents.length != 0){
if (app.selection.length == 1){
var s = app.selection[0].constructor.name;
switch (app.selection[0].constructor.name){
case "Text":
case "InsertionPoint":
case "Character":
case "Word":
case "Line":
case "TextStyleRange":
case "TextColumn":
case "Paragraph":
app.select( app.selection[0].parentTextFrames[0] );
main();
break;
case "TextFrame":
main();
break;
default:
}
}
else{
}
}
else{
}


function main() {
var tf = app.selection[0];
var story = tf.parentStory;
var lines = story.lines.everyItem().getElements();
for ( var n = lines.length-1; n >= 0; n--) {
if (lines[n].characters.lastItem().contents == " ") {
lines[n].characters.lastItem().underline = false;
}
}
}


Es erwartet, dass Text markiert ist und ändert alle Zeilen im Textfluss.

Da ist ne Menge Optimierungsotential, zum Beispiel vorher alle Leerzeichen, die nicht unterstrichen sind, wieder unterstreichen. Damit könnten Umbruchänderungen aufgefangen werden.

Aber zum Test erst mal nur die einfache Version.
...
Gerald Singelmann
25. Sep 2013, 17:39
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
Bücher, Tutorials und Scriptarchive für Perl
Diese Liste wird ständig erweitert, also ab und zu mal reinschauen.
Anregungen und Tips von Euch zur Erweiterung dieser Link-Liste können auch
per "Private Nachricht" gesendet werden.



Perl Dokumentation
===================

http://perldoc.perl.org/


Comprehensive Perl Archive Network
==================================

http://www.cpan.org/


Perl - Bücher
=============

http://books.google.de/...+B%C3%BCchern+suchen

http://de.wikibooks.org/.../Perl-Programmierung

http://www.oreilly.de/topics/perl.html



Deutsche Tutorials für Perl
===========================

Tipps, Tricks und Anleitungen.
http://perl-howto.de/

Perl-Handbuch mit vielen praktischen Beispielen:
http://www.infos24.de/...haltsverzeichnis.htm

Scripte und Tutorials
http://cgi.xwolf.de

Perl/CGI-Tutorial
http://www.webdesign-referenz.de/technikI_perl.shtml

Einführung in die Programmierung mit Perl
http://perl-seiten.homepage.t-online.de/

SEFLHTML - CGI/Perl
http://de.selfhtml.org/perl/

Perl Tutorial und Workshop
http://www.online-tutorial.de/?meineTutorials=Perl

Deutsche Übersetzung von Perls POD Dokumentation und Kommentare dazu
http://wiki.perl-community.de/...iew/Perldoc/WebStart

Deutsche Perl-Community
http://www.perl-community.de

Perl-Anwendungsbeispiele
http://www.perlmeister.com/art_ger.html

Perl-Einführung
http://www.tekromancer.com/perl2/inhalt.html


Perl - Scriptarchive und Skriptsammlungen
=========================================

Perl-Suchmaschine
http://perl-suchmaschine.de/

Perlscripts Suchmaschine
http://www.perlscripts.de/

Perl-Webanwendungen
http://www.perlunity.de/...ripts/download.shtml

Hotscripts
http://www.hotscripts.com/CGI_and_Perl/

The CGI Resource Index
http://cgi.resourceindex.com/...ms_and_Scripts/Perl/



Perl-News
=======

http://perl-nachrichten.de/...
SabineP
12. Feb 2004, 21:26
Matt Wright Forum vor Spam schützen
Taag,
wie kann ich denn am besten ein Matt Wright Forum vor Spam schützen?
Da gibt es doch so Texteingabemodule oder sowas.
Gruss Matthias
...
Moosbach
14. Jun 2007, 17:39
Einfache Banner-Rotation inkl. Counter
Hallo zusammen,

auf der suche nach einem einfachen Script bin ich über dieses gestolpert:
Simple Banner Rotation V1.0

Nur leider zeigt es keinen Banner an. Im CGI-Debugger erscheint auch keine Fehlermeldung.

Bevor ich mir jetzt einen Wolf suche, wollte ich mal fragen, ob jemand einen Tipp/Link für mich hat? :-)

1000 Dank!

Gruß
Bernhard
...
Bernhard Werner
19. Apr 2007, 11:47
Kompassnadel mit javascript?
hier ist noch schnell ein Beispiel für Variante 1.

http://vsrv.de/...pass/kompassmap.html


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)...
oesi50
19. Mär 2005, 16:49