[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Kurze Textzeilen finden (CS6, Win7)

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Kurze Textzeilen finden (CS6, Win7)

cwenet
Beiträge gesamt: 1054

23. Okt 2013, 19:06
Beitrag # 1 von 8
Bewertung:
(1957 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

hiermit versuche ich gerade in ausgewählter Story kurze Textzeilen aufzuspüren und anzuspringen:

Code
#targetengine "session";  

var win = new Window("palette", 'Kurze Zeilen finden', [0,0,155,132]);
var weiter = win.add( "button", [5,105,75,127], 'Weiter' );

win.center();


weiter.onClick = function()
{
var curSel = app.selection;
var curStory = curSel[0].parent;
var allLines = curStory.lines;

for (var p=0; p<allLines.length; p++) {

if (allLines[p].length < 5) {
allLines[p].select();
}
}

}

var result = win.show();


Wie kann ich nun auch alle nachfolgende kurze Zeilen finden?
Also nach jedem Buttonklick soll die nächste kurze Zeile angesprungen werden.
Im Moment wird nur die erste Stelle angesprungen.

Bitte um Hilfe.
Kleines Demodok anbei.

Gruss
Christoph

Anhang:
zeilenweise.idml (27.6 KB)
X

Kurze Textzeilen finden (CS6, Win7)

Hans Haesler
  
Beiträge gesamt: 5816

23. Okt 2013, 21:50
Beitrag # 2 von 8
Beitrag ID: #518868
Bewertung:
(1919 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Abend Christoph,

mit Deinem Code wird nach jedem Klick auf "Weiter" erneut der ganze Inhalt des Rahmens von Anfang an abgecheckt und jedes Mal wird das erste Vorkommen ausgewählt.

Eine mögliche Lösung: Die Schleife nicht jedes Mal mit p=0 starten, sondern nur zu Beginn mit p=oldCtr und dann mit dem aktuellen Wert von p plus 1:

Code
#targetengine "session"; 

var win = new Window("palette", "Kurze Zeilen finden", [0,0,155,132]);
win.center();
var weiter = win.add("button", [5,105,75,127], "Weiter");

var curSel = app.selection;
var curStory = curSel[0].parent;
var allLines = curStory.lines;
var oldCtr = 0;

weiter.onClick = function() {
for (var p=oldCtr; p<allLines.length; p++) {
if (allLines[p].length < 5) {
allLines[p].select();
oldCtr = p+1;
break;

}
}
}

var result = win.show();

Hier funktioniert es. Und bei Dir?

Gruss, Hans


als Antwort auf: [#518864]
(Dieser Beitrag wurde von Hans Haesler am 23. Okt 2013, 21:51 geändert)

Kurze Textzeilen finden (CS6, Win7)

cwenet
Beiträge gesamt: 1054

24. Okt 2013, 07:04
Beitrag # 3 von 8
Beitrag ID: #518873
Bewertung:
(1871 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Hans,

vielen Dank für die Scriptanpassung und auch die erklärenden Worte.
Es funktioniert, wie gewünscht.

Die If-Abfrage habe ich noch geändert, da sonst auch Leerzeilen angesprungen werden.

Code
if ((allLines[p].length > 1) && (allLines[p].length < 5)){ 


Schöne Grüße
Christoph


als Antwort auf: [#518868]

Kurze Textzeilen finden (CS6, Win7)

WernerPerplies
Beiträge gesamt: 2688

24. Okt 2013, 07:55
Beitrag # 4 von 8
Beitrag ID: #518874
Bewertung:
(1863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Chrstoph,

Ursache ist, wie von Hans erwähnt, der falsche Platz der Zählerdefinition.
Bei meinem Alternativorschlag löse ich dieses Problem, in dem ich die Zählervariable außerhalb der onClick-Methode definiere.

Ich würde die Sache insgesamt so angehen:
Code
#targetengine "session";   
#target indesign
main();

/*void*/function main()
{
try
{
var win = new Window("palette", 'Kurze Zeilen finden', [0,0,155,132]);
var weiter = win.add( "button", [5,105,75,127], 'Weiter' );
win.center();
// außerhalb onClick definieren, damit die Definition nicht mit jedem Klick wiederholt wird.
// ggf. für einen Neustart einen eigenen Button definieren -> neue Story wählen
var allLines = app.selection[0].parentStory.lines;
// Zähler außerhalb von onCLick definieren
var p = 0;
// auf die erste Fundstelle springen
next();
weiter.onClick = function()
{
next();
}
function next()
{
// Startvaiable nicht neu definieren
for (; p<allLines.length; p++)
{
if (allLines[p].length < 30)
{
// Zeile gefunden
allLines[p++].select();
if (p>=allLines.length)
p=0; // zurück auf Los!
// Schleife bis zum nächsten Klick verlassen
return;
}
}
return;
}
// welche Rückgabe erwartest Du hier?
// Palette ist ein nicht modales Fenster!
// var result = win.show();
win.show();
}
catch (error)
{
alert(error.message + "\ninSteile: " + error.line);
}
return;
}

Vielleicht wäre es auch noch gut, wenn Du ein Cancel-Button stiften würdest.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#518864]

Kurze Textzeilen finden (CS6, Win7)

Martin Fischer
  
Beiträge gesamt: 12623

24. Okt 2013, 09:09
Beitrag # 5 von 8
Beitrag ID: #518877
Bewertung:
(1840 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans und Christoph,

ein kleiner Tipp noch.

Mit der folgenden Zeile, einzufügen unter allLines[p].select(); wird die jeweils gefundene Stelle herangezoomt.

Code
app.activeWindow.zoomPercentage = app.activeWindow.zoomPercentage; 

Das ist vor allem dann hilfreich, wenn sich die gefundene Stelle nicht auf der aktiven Seite befindet.

Viele Grüße
Martin




als Antwort auf: [#518873]
(Dieser Beitrag wurde von Martin Fischer am 24. Okt 2013, 09:26 geändert)

Kurze Textzeilen finden (CS6, Win7)

cwenet
Beiträge gesamt: 1054

24. Okt 2013, 09:53
Beitrag # 6 von 8
Beitrag ID: #518880
Bewertung:
(1814 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner, Martin und Hans,

vielen Dank für die tollen Ergänzungen.
In der Tat, habe ich übersehen, dass select() nicht alleine reicht,
um auf nächste Seiten zu springen.
So ist es jetzt prima.

Hintergrund für das Script war:
Eine Art Endkontrolle für unschöne, kurze Absatzauslaufzeilen (sagt man so?).
Deshalb auch das nicht-modale Fenster um direkt nach Fund einzugreifen und
dort weiter zu suchen.

Danke und einen schönen Tag
Christoph


als Antwort auf: [#518877]
(Dieser Beitrag wurde von cwenet am 24. Okt 2013, 09:59 geändert)

Kurze Textzeilen finden (CS6, Win7)

WernerPerplies
Beiträge gesamt: 2688

24. Okt 2013, 10:02
Beitrag # 7 von 8
Beitrag ID: #518883
Bewertung:
(1801 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Zitat Deshalb auch das nicht-modale Fenster um direkt nach Fund einzugreifen und
dort weiter zu suchen.

Das war schon klar, ich wollte nur darauf hinweisen, das win.show() bei nicht modalen Fenstern keinen oder keinen vernünftigen Rückgabewert hat, deshalb ist
var result = win.show();
sinnlos.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#518880]

Kurze Textzeilen finden (CS6, Win7)

cwenet
Beiträge gesamt: 1054

24. Okt 2013, 10:10
Beitrag # 8 von 8
Beitrag ID: #518886
Bewertung:
(1792 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

achso. Vielen Dank für den Hinweis.

Schönen Tag
Christoph


als Antwort auf: [#518883]
X

Aktuell

PDF / Print
300_PDF20

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
29.09.2022

IDUGS#85 Press2id

Zoom Meeting
Donnerstag, 29. Sept. 2022, 19.00 - 21.00 Uhr

Vortrag

Kennst du WordPress? Vielleicht. Verwendest du WordPress? Ja, klar! WordPress ist das am weitesten verbreitete System für die Erstellung von Webseiten. Um Webseitenbau soll es auf dieser IDUG aber nicht gehen. Gregor zeigt press2id (github.com/grefel/press2id). Seine Open-Source-Lösung für die Verbindung von Web und InDesign. Richtig gelesen: InDesign liest mithilfe von press2id die Inhalte der WordPress-Webseiten und generiert daraus Zeitschriften, Kataloge, Programmhefte oder Bierdeckel (das zeigen wir natürlich auch!). So wird die „Content First“ Theorie zu einer konkret anwendbaren Praxis, ohne gleich die ganz großen Räder zu drehen. Versprochen: Jeder kann nach der IDUG innerhalb kürzester Zeit Daten von WordPress nach InDesign importieren. Aber Achtung: Prinzipiell kann press2id aus jeder Website, oder besser Contentmanagementsystem (CMS) Daten auslesen und nach InDesign importieren! Spannend, oder? Danach geht es in die Praxis: Stefan hat die Webseite des Parktheater Iserlohn (parktheater-iserlohn.de) gestaltet. Die gedruckten Spielpläne (parktheater-iserlohn.de/interaktive-spielplaene) werden mit press2id realisiert. Wir schauen in den Maschinenraum und zeigen, wie die Lösung des Projekts realisiert wurde.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs85.eventbrite.de/

Von Wordpress nach InDesign
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

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

Enfocus World Tour 2022