[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Grep Ergebnis cut&paste

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

Grep Ergebnis cut&paste

imagica
Beiträge gesamt: 14

11. Dez 2013, 14:58
Beitrag # 1 von 10
Bewertung:
(2841 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
ich möchte per script in einem ausgewählte Textrahmen mit GREP bestimmten Text suchen, diesen ausschneiden und in einen neuen Textrahmen einsetzen..

Hat jemand einen Tipp für mich?
Gruß


Code
app.findGrepPreferences = null; 
app.findGrepPreferences.findWhat = "(DIN )?(EN )?( )?\\d+(-)?\\d+";
numberList = app.activeDocument.findGrep(true);

for (i=0; i<numberList.length; i++)
{

}

X

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

11. Dez 2013, 17:45
Beitrag # 2 von 10
Beitrag ID: #520881
Bewertung:
(2791 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Wenn du etwas ausführlicher beschreiben würdest, was du machen möchtest, gäbe es viell. auch eine Antwort …

1. Wo ist der Sinn das rahmenweise zu machen?
2. Was bedeutet "neuen Textrahmen"?
a) Er ist schon da u. hat einen Namen im Ebenenbedienfeld?
b) Nein, ich sprech den sonstwie an …
c) Er muss erst noch erzeugt werden und soll xy liegen …

Und: Gibt es ein Beispiel-IDML? Vorher/Nachher?


als Antwort auf: [#520868]

Grep Ergebnis cut&paste

WernerPerplies
Beiträge gesamt: 2772

11. Dez 2013, 18:24
Beitrag # 3 von 10
Beitrag ID: #520883
Bewertung:
(2777 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo imagica,

wenn ich Dich richtig verstanden habe, macht mein Skript etwas ähnliches:

Weise per Grep Deinen Fundstellen ein eindeutiges Zeichenformat zu.
Erzeuge einen einen Musterrahmen.
Dann erzeugt mein Skript an allen Fundstellen neue Rahmen und setzt bei entsprechender Einstellung den gefundenen Text in den neuen Rahmen ein.
Der Rahmen wird verankert und entsprechend dem Musterrahmen positioniert:

WpsCreateAnchoredFrames – Adobe InDesign Skript zur automatischen Erzeugung verankerter Rahmen

Oder habe ich da etwas falsch verstanden?


als Antwort auf: [#520868]

Grep Ergebnis cut&paste

Martin Fischer
  
Beiträge gesamt: 12785

11. Dez 2013, 19:00
Beitrag # 4 von 10
Beitrag ID: #520888
Bewertung:
(2750 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,

Kai hat Recht.

Wenn die Aufgabenstellung etwas klarer wäre, könnte ggf. auf die eine oder ander fertige Lösung hier in der Skriptwerkstatt oder im Skriptarchiv hingewiesen werden.

Möglicherweise kostet es auch nur 5 Minuten ein vorhandenes Schnipsel auf die konkreten Anforderungen hin anzupassen.

Hast Du Lust, selbst scripten zu lernen?

Wenn es bei Deinem Anliegen z.B. um verankerte Rahmen geht, dann könntest Du in dem alten Thread Verankertes Objekt per Script erzeugen? einen Ausgangspunkt finden.

Oder recherchiere selbst nach verankert anchored o. Ä.


als Antwort auf: [#520881]

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

11. Dez 2013, 19:04
Beitrag # 5 von 10
Beitrag ID: #520889
Bewertung: ||
(2745 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab deswegen nachgefragt, weil ich bereits hier sowas ähnliches veröffentlicht habe:
http://www.hilfdirselbst.ch/..._P518330.html#518330

Nach Anpassen von wenigen Zeilen hätte ich schon mal das:
Code
if (app.selection.length == 1 && app.selection[0].constructor.name == "TextFrame") { 
var curSel = app.selection[0];
}
else {
alert ("Prüf mal deine Auswahl!");
exit();
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;
// Setzen der Sucheinstellungen
app.findGrepPreferences.findWhat= "(DIN |EN | )\\d+-?\\d+";

// Suchen und Ergebnisse in Variable speichern
var results = curSel.findGrep(true);

// Den Text in einen neuen Rahmen verschieben
for ( var n=0; n<results.length; n++ ) {
var curResult = results[n];
var a = curResult.insertionPoints[0];
var newTf = a.textFrames.add({geometricBounds: [ "0p", "0p", "6mm", "24mm"]});
newTf.appliedObjectStyle = app.activeDocument.objectStyles.itemByName("Marginalien");
curResult.move(LocationOptions.AFTER, newTf.insertionPoints[0]);
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;


Evtl. muss im GREP am Schluss noch ein Leerzeichen rein und das mit dem neuen Rahmen ist mir eben nicht klar.


als Antwort auf: [#520888]

Grep Ergebnis cut&paste

imagica
Beiträge gesamt: 14

12. Dez 2013, 13:21
Beitrag # 6 von 10
Beitrag ID: #520932
Bewertung:
(2636 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Erstmal großes Danke an alle, nettes Forum!

Das von Kai ist schon (fast) das was ich suche.

Ich erkläre am besten den komplette Hintergrund:

Aufgabe war es, in einem Printwerk einen zusätzlichen Index nur von DIN-Normen zu erstellen, die im Text vorkommen.

Dies habe ich ja schon erfolgreich umgesetzt, bei denen mit GREP den gefundenen DIN-Normen (DIN, DIN EN, EN) ein Zeichenformat zugewiesen wird und dann (mit Hilfe des Scriptes von Martin Fischer) diese automatisch in den Index aufgenommen werden.

Soweit, so gut. Nur dann stehen diese, wenn man den Index generiert an der entsprechenden alphabetischen Stelle.

Z.B:

D
Dämmstoff 62, 64, 70, 144
Deckeneinbauten 91, 177
DIN 4108-1 55, 124, 204

usw.

Da die DIN-Normen aber separat in einem Textrahmen auf einer Seite stehen sollen, wollte ich mit einem Script per GREP nach diesen Normen im erstellten Index suchen, diese dort ausschneiden, und in den neuen Textrahmen einfügen.

Im Prinzip funktioniert das mit dem Script von Kai Rübsamen, nur dort werden die Treffer an der Fundstelle als verankerter Rahmen eingesetzt, Sie sollen aber untereinander (am besten noch sortiert) in einem einzigen Textrahmen untereinander stehen..

Vielleicht kann mir noch jemand einen Tipp geben, wie ich dies am Script ändern muss?

Danke für eure Hilfe!

Gruß Marco



P.S: da fällt mir noch etwas ein, eigentlich würde es ja auch reichen, wenn die Fundstellen von GREP nicht in den Index aufgenommen werden, sondern einfach nur in die Zwischenablage, dann könnte ich diese einfach in meinen gewünschten Textrahmen einfügen, ohne meinen geplanten cut&paste Vorgang....


als Antwort auf: [#520889]
(Dieser Beitrag wurde von imagica am 12. Dez 2013, 13:29 geändert)

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

12. Dez 2013, 14:09
Beitrag # 7 von 10
Beitrag ID: #520941
Bewertung:
(2610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Marco, was soll mit deinen Seitenzahlen passieren?
Mach mal einen Screen vorher / nachher.

Anbei schon mal die nächste Version. Dein Zieltextrahmen auswählen u. über das Ebenenbedienfeld den Namen "ziel" vergeben. Dann Skript starten. Es kann sein, dass der GREP noch nicht ganz passt.

Code
if (app.selection.length == 1 && app.selection[0].constructor.name == "TextFrame") {  
var curSel = app.selection[0];
}
else {
alert ("Prüf mal deine Auswahl!");
exit();
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;
// Setzen der Sucheinstellungen
app.findGrepPreferences.findWhat= "(DIN EN |DIN |EN )\\d+-?\\d+.+\\r";

// Suchen und Ergebnisse in Variable speichern
var results = curSel.findGrep(true);

// Den Text in einen neuen Rahmen verschieben
for ( var n=0; n<results.length; n++ ) {
var curResult = results[n];
//~ var str = curResult;
var targetFrame = app.activeDocument.textFrames.itemByName("ziel");
curResult.move(LocationOptions.AFTER, targetFrame.insertionPoints[0]);
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;



als Antwort auf: [#520932]

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

12. Dez 2013, 14:21
Beitrag # 8 von 10
Beitrag ID: #520944
Bewertung:
(2599 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenn es nur um die Normen geht, diese Zeilen tauschen:
Code
app.findGrepPreferences.findWhat= "(DIN EN |DIN |EN )\\d+-?\\d+"; 

Code
    var targetFrame = app.activeDocument.textFrames.itemByName("ziel");     
curResult.move(LocationOptions.AFTER, targetFrame.insertionPoints[-1]);
targetFrame.insertionPoints[-1].contents = "\r";


Das -1 könnte man wohl auch in der o.g. Version noch ändern.


als Antwort auf: [#520941]

Grep Ergebnis cut&paste

imagica
Beiträge gesamt: 14

12. Dez 2013, 14:31
Beitrag # 9 von 10
Beitrag ID: #520945
Bewertung:
(2594 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey Kai,

super, es funktioniert so perfekt, wie in Deinem vorherigen Posting, die Seitenzahl soll ja mitgenommen werden!

Noch mal herzlichen Dank, hat mir auch zum Verständnis des scriptens generell geholfen.

Gruß Marco


als Antwort auf: [#520944]

Grep Ergebnis cut&paste

Kai Rübsamen
Beiträge gesamt: 4684

12. Dez 2013, 15:05
Beitrag # 10 von 10
Beitrag ID: #520948
Bewertung:
(2561 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das freut mich. In der aktuellen Version hab ich noch eine einfache Sortierung drangehängt. Teste mal, ob dir das so reicht.
Code
if (app.selection.length == 1 && app.selection[0].constructor.name == "TextFrame") {  
var curSel = app.selection[0];
}
else {
alert ("Prüf mal deine Auswahl!");
exit();
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;
// Setzen der Sucheinstellungen
app.findGrepPreferences.findWhat= "(DIN EN |DIN |EN )\\d+-?\\d+.+\\r";

// Suchen und Ergebnisse in Variable speichern
var results = curSel.findGrep(true);

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;

// Den Text in einen neuen Rahmen verschieben
for ( var n=0; n<results.length; n++ ) {
var curResult = results[n];
var targetFrame = app.activeDocument.textFrames.itemByName("ziel");
curResult.move(LocationOptions.AFTER, targetFrame.insertionPoints[-1]);
}
var curCont = targetFrame.parentStory.contents.split("\r");
curCont.sort();
var newCont = curCont.join("\r");
targetFrame.contents = newCont;



als Antwort auf: [#520945]
(Dieser Beitrag wurde von Kai Rübsamen am 12. Dez 2013, 15:07 geändert)
X

Aktuell

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
20.06.2024

Online
Donnerstag, 20. Juni 2024, 15.00 - 15.45 Uhr

Webinar

Etiketten-Workflows gehören zu den anspruchsvollsten in der grafischen Industrie. Ihre PDF-Dateien sind oft sehr komplex und erfordern eine spezielle Vorbereitung. pdfToolbox bietet viele Möglichkeiten, um diese Arbeit zu automatisieren. Nehmen Sie an unserem Webinar "pdfToolbox für den Etikettendruck" teil und lernen Sie einige der Funktionen kennen, die Ihren Etiketten-Workflow effizienter gestalten. Einige der Bereiche, die Sie kennenlernen werden, sind: Beschnitt erzeugen Beim Etikettendruck ist das Druckmotiv oft nicht rechteckig. Lernen Sie, wie Sie einen passenden Beschnitt für alle Arten von Formen hinzufügen können. Produktionsreife Dateien erstellen nutzen Sie bereits vorliegende Inhalte oder Seiteninformationen, um eine Weißform hinter dem Seiteninhalt hinzuzufügen, eine passgenaue Lackform für bestimmte Objekte zu erzeugen oder eine Stanzlinie mit korrektem Sonderfarbnamen zu erstellen. Ausschießen, Step & Repeat, N-Up Mit der Ausschieß-Engine von pdfToolbox lassen sich Seiten zu größeren Druckbögen zusammenfassen, wobei verschiedene Layouts und Komplexitäten unterstützt werden. Hochwertige Freigabe-Bögen Erstellen Sie automatisch Freigabe-Bögen mit Vorschaubildern Ihrer Produktionsdatei und Auftragsdaten aus dem MIS. Qualitätskontrolle pdfToolbox enthält Standard-Preflight-Profile, die die grundlegenden Anforderungen an PDF-Dateien in Etiketten-Workflows abdecken. Prüfen Sie ob Ihre Dokumente internationalen Standards wie ISO PDF/X oder GWG (Ghent Workgroup) Spezifikationen entspricht. Verpackungs- und etikettenspezifische Vorgaben, wie der ISO-Standard „Processing Steps“, werden ebenfalls unterstützt.

kostenlos

Ja

Organisator: callassoftware

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

pdfToolbox für den Ettikettendruck
Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

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

So optimieren Sie Ihren LFP-Workflow