[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Verankerte Rahmen lösen (WIN CS4 JS)

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

Verankerte Rahmen lösen (WIN CS4 JS)

cwenet
Beiträge gesamt: 1141

15. Apr 2010, 15:45
Beitrag # 1 von 7
Bewertung:
(2250 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

mit diesem Script (habe ich hier gefunden) möchte ich meine Mariginalflächen als Text wieder in den Fliesstext zurückführen. Wie schaffe ich es, das ich noch ein Absatzformat zuweisen kann?
Meine eingefügte Scriptzeile will nicht funktionieren.
Ausserdem soll der gefundene Marginaltext vor den aktuellen Absatz platziert werden.

Code
var myStartTag = "\r<Marg>";  
var myEndTag = "</Marg>\r";

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

if ((app.selection.length > 0) && (app.selection[0].isText))
{
var myItems = app.selection[0].allPageItems;
for (oneItem = myItems.length-1; oneItem >= 0; oneItem--)
{
if (myItems[oneItem].constructor.name == "TextFrame")
{
//myItems[oneItem].parent.insertionPoints[0].fillColor = "Red";
myItems[oneItem].parent.insertionPoints[0].contents = myStartTag; // Einfügen des Start-Tags

//myItems[oneItem].parent.insertionPoints[-1].fillColor = "Red";
myItems[oneItem].parent.insertionPoints[-1].contents = myEndTag; // Einfügen des End-Tags
// Verschieben des Inhalts des verankerten Textrahmens
myItems[oneItem].texts[0].move(LocationOptions.before, myItems[oneItem].parent.insertionPoints[0]);
myItems[oneItem].paragraphs[0].appliedParagraphStyle = "Marginalie";
myItems[oneItem].remove(); // Löschen des verankerten Textrahmens
}
}
}


Über Hilfe freut sich Christoph, Grüße
X

Verankerte Rahmen lösen (WIN CS4 JS)

Martin Fischer
  
Beiträge gesamt: 12812

16. Apr 2010, 07:41
Beitrag # 2 von 7
Beitrag ID: #439332
Bewertung:
(2215 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Du verschiebst erst den Text aus dem verankerten Textrahmen
myItems[oneItem].texts[0].move(LocationOptions.before, myItems[oneItem].parent.insertionPoints[0]);,

dann versuchst Du, dem ersten Absatz in dem verankerten Textrahmen ein Absatzformat zuzuweisen
myItems[oneItem].paragraphs[0].appliedParagraphStyle = "Marginalie";

und schließlich löscht Du den verankerten Textrahmen
myItems[oneItem].remove();.



Du solltest das Absatzformat vor dem Verschieben des Texts aus dem verankerten Textrahmen zuweisen. Und zwar dem gesamten Text im Textabschnitt des verankerten Textrahmens: myItems[oneItem].parentStory.texts[0].appliedParagraphStyle = "Marginalie";

Die Tags würde ich vor der Formatzuweisung oder danach (auf jeden Fall aber vor dem Verschieben) dem Text des verankerten Rahmens hinzufügen.

Die Position für den Start-Tag wäre myItems[oneItem].insertionPoints[0].
Die des End-Tags myItems[oneItem].parentStory.texts[0].insertionPoints[-1].
Bestimme jeweils deren contents.

----
Ach ja, das Ziel für das Verschieben wäre nicht die Position am Anker des verankerten Textrahmens, sondern am ersten Einfügepunkt des ersten Absatzes des Ankerpunkts.


als Antwort auf: [#439286]
(Dieser Beitrag wurde von Martin Fischer am 16. Apr 2010, 07:43 geändert)

Verankerte Rahmen lösen (WIN CS4 JS)

cwenet
Beiträge gesamt: 1141

16. Apr 2010, 08:33
Beitrag # 3 von 7
Beitrag ID: #439338
Bewertung:
(2199 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

nun habe ich das Script wie folgt umgebaut:

Code
if ((app.selection.length > 0) && (app.selection[0].isText))   
{
var myItems = app.selection[0].allPageItems;
for (var oneItem=0; oneItem<myItems.length; oneItem++)
{
if (myItems[oneItem].constructor.name == "TextFrame")
{

myItems[oneItem].parentStory.texts[0].appliedParagraphStyle = "Marginalie";

myItems[oneItem].insertionPoints[0].contents = myStartTag; // Einfügen des Start-Tags

myItems[oneItem].parentStory.texts[0].insertionPoints[-1].contents = myEndTag; // Einfügen des End-Tags

// Verschieben des Inhalts des verankerten Textrahmens
myItems[oneItem].texts[0].move(LocationOptions.before, myItems[oneItem].parent.texts[0].paragraphs[0].insertionPoints[0]);

myItems[oneItem].remove(); // Löschen des verankerten Textrahmens
}
}
}


Klappt sehr gut. Ich habe die Schleife umgedreht, damit die Reihenfolge der neu platzierten Marginal-Absätze stimmt.
Bin mir nicht sicher, ob das so in Ordnung geht. Kann ich in diesem Fall ohne Bedenken in beide Richtungen das Dokument durchgehen? Da bin ich mir auch nie sicher, wann vorwärts und wann rückwärts abgearbeitet werden soll.

Wie kann ich das Script noch anpassen, dass nich der gesamte Text markiert werden muss?

Gruss Christoph


als Antwort auf: [#439332]

Verankerte Rahmen lösen (WIN CS4 JS)

Martin Fischer
  
Beiträge gesamt: 12812

16. Apr 2010, 08:55
Beitrag # 4 von 7
Beitrag ID: #439339
Bewertung:
(2190 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

das sieht gut aus.
Bis auf die Richtungsumkehrung der Schleife.
Funktioniert diese so?

Bei jedem Durchgang der Schleife wird ein Element der Sammlung, durch die Du schleifst, weggenommen. Und zwar von vorne her. Damit veränderst Du die Indexierung der weiteren Elemente.
In so einem Fall würde ich sicherheitshalber die Elemente von hinten her abarbeiten.
Das hat keine Nachteile, verhindert aber ggf. Probleme, die durch die Veränderung der Indexe der Elemente der Sammlung entstehen könnten.

> Da bin ich mir auch nie sicher, wann vorwärts und wann rückwärts abgearbeitet werden soll.

Grundsätzlich ist rückwärts in den meisten Fällen sicherer.
Weitere Schritte innerhalb des Skripts können es aber auch gelegentlich erforderlich machen, dass von vorne nach hinten gearbeitet wird.
Und das Voranschreiten entspricht eher dem manuellen Vorgehen eines Anwenders.


> Wie kann ich das Script noch anpassen, dass nich der gesamte Text markiert werden muss?

Du hat oben sehr guten Gebrauch von parentStory gemacht.
Das hilft Dir auch hier weiter.


als Antwort auf: [#439338]

Verankerte Rahmen lösen (WIN CS4 JS)

cwenet
Beiträge gesamt: 1141

16. Apr 2010, 19:26
Beitrag # 5 von 7
Beitrag ID: #439400
Bewertung:
(2144 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin,

dankeschön. So habe ich es nun zum Laufen gebracht. Die Schleife habe sicherheitshalber wieder umgedreht.
Code
if ((app.selection.length > 0) && (app.selection[0].isText))   
{
var myItems = app.selection[0].parentStory.textFrames; /////////<--

for (oneItem = myItems.length-1; oneItem >= 0; oneItem--)
{

if (myItems[oneItem].constructor.name == "TextFrame")
{

myItems[oneItem].parentStory.texts[0].appliedParagraphStyle = "Marginalie";

myItems[oneItem].insertionPoints[0].contents = myStartTag; // Einfügen des Start-Tags

myItems[oneItem].parentStory.texts[0].insertionPoints[-1].contents = myEndTag; // Einfügen des End-Tags

// Verschieben des Inhalts des verankerten Textrahmens
myItems[oneItem].texts[0].move(LocationOptions.before, myItems[oneItem].parent.texts[0].paragraphs[0].insertionPoints[0]);

myItems[oneItem].remove(); // Löschen des verankerten Textrahmens
}
}
}

Die Zeile müßte in Ordnung sein, oder?

Was mir jetzt aufgefallen ist:

Sobald in einer Marginalfläche ein einzelnes Wort steht, das mehr als 16 Buchstaben hat, funktioniert der move nicht mehr.
Kannst Du das bestätigen?

Gruss
Christoph


als Antwort auf: [#439339]
(Dieser Beitrag wurde von cwenet am 16. Apr 2010, 19:28 geändert)

Verankerte Rahmen lösen (WIN CS4 JS)

Martin Fischer
  
Beiträge gesamt: 12812

16. Apr 2010, 21:13
Beitrag # 6 von 7
Beitrag ID: #439411
Bewertung:
(2130 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Sobald in einer Marginalfläche ein einzelnes Wort steht, das mehr als 16 Buchstaben hat, funktioniert der move nicht mehr.

Verschiebe nicht nur den Inhalt des Textrahmens (myItems[oneItem].texts[0]),
sondern den Textabschnitt im Textrahmen mit möglichem Überlauf:
myItems[oneItem].parentStory.texts[0]


als Antwort auf: [#439400]

Verankerte Rahmen lösen (WIN CS4 JS)

cwenet
Beiträge gesamt: 1141

17. Apr 2010, 08:14
Beitrag # 7 von 7
Beitrag ID: #439428
Bewertung:
(2100 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

so funktioniert es prima. Da wäre ich nie draufgkommen.

Grüße
Christoph


als Antwort auf: [#439411]
X

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
16.07.2024

Online
Dienstag, 16. 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. 16.07.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 30.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. Phoenix2Switch 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

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

So optimieren Sie Ihren LFP-Workflow
Veranstaltungen
30.07.2024

Online
Dienstag, 30. 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. 16.07.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 30.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. Phoenix2Switch 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

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

So optimieren Sie Ihren LFP-Workflow