[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

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

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

mgrams
Beiträge gesamt: 28

3. Jun 2011, 16:02
Beitrag # 1 von 10
Bewertung:
(7141 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich arbeite auf Mac OS X, Version 10.5.8 mit Adobe InDesign CS5, Version 7.0.4.

Mehrfach wurden schon Probleme geschildert, dass Scripte die Skriptetiketten betreffend im Gegensatz zu CS3 oder CS4 bei CS5 nicht mehr laufen. Das Script Name statt Etikett soll hierbei Abhilfe schaffen, dieses habe ich auch eingesetzt.

Es geht darum, eine große Menge von Textrahmen im Dokument um einen bestimmten Wert zu verändern respektive zu verschieben. Nach dem Einsatz von Name statt Etikett bekomme ich zwar keine Fehlermeldung mehr, allerdings wird nur ein einziger Textrahmen im Dokument verschoben, es sollten aber alle sein, die einen bestimmten Namen tragen.

Der Code lautet:
Zitat tell application "Adobe InDesign CS5"

-- Initialisierung
set myDocument to active document
set myTextFrame to text frame "Tabellenkopf_VA" of myDocument
set aSel to text frame "Tabellenkopf_VA" of active document
if aSel = {} then
return

end if


set myDialog to make dialog with properties {name:"Tabellenkopf VA"}
tell myDialog
make dialog column
tell the result
set moveThisGroup to make enabling group with properties {static label:"Anpassen", checked state:true}
tell moveThisGroup
make dialog column
tell the result
make static text with properties {static label:"B:"}
make static text with properties {static label:"H:"}
end tell
make dialog column
tell the result
set moveXField to make real editbox with properties {edit value:168}
set moveYField to make real editbox with properties {edit value:0}
end tell
end tell
end tell
end tell

set nu to show myDialog
if nu is true then
set moveThis to checked state of moveThisGroup
set moveX to edit value of moveXField
set moveY to edit value of moveYField
else
destroy myDialog
return
end if



repeat with aThing in aSel
tell aThing
if moveThis then
set t to (item 1 of geometric bounds)
set l to (item 2 of geometric bounds)
set b to t + moveY
set r to l + moveX
set geometric bounds to {t, l, b, r}
end if
end tell
end repeat
end tell



Ist es möglich (mit every an richtiger Stelle?) wieder alle im Dokument vorkommenden Textrahmen eines Namens zu verschieben, alle bisherigen Versuche sind bis jetzt gescheitert. Es wäre sehr wichtig, weil ich in mehreren Dokumenten hunderte von Rahmen neu dimensionieren bzw. verschieben muss.

Viele Grüße,

Michael Grams
mg
Hier Klicken X

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

Martin Fischer
  
Beiträge gesamt: 12093

3. Jun 2011, 17:14
Beitrag # 2 von 10
Beitrag ID: #473027
Bewertung:
(7113 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

ich bin mir nicht sicher, ob das funktioniert, aber ein Versuch ist es wert.

Hans gibt in CS4-Script funktioniert nicht in CS5. Hilfe. den Tipp, die Werte der name-Eigenschaft der pageItems mit den Werten der labels gleichzusetzen und liefert auch gleich den Link zum passenden Skript dazu.

Zitat von Hans Haesler 1. bestehende Dokumente können mit dem Script NameStattEtikett_501d.js "behandelt" werden.

Erhältlich hier http://www.fachhefte.ch / Link "JavaScripts" und je nach Plattform den "CS5"-Ordner öffnen.

Dieses Script kopiert die Etiketten ins Attribut "Name". Die kopierten Namen sind im Bedienfeld "Ebenen" sichtbar. Und Scripts, welche die Objekte per Etikett ansprechen, funktionieren wieder, ohne dass sie angepasst werden müssen.


Viele Grüße
Martin




als Antwort auf: [#473022]
(Dieser Beitrag wurde von Martin Fischer am 4. Jun 2011, 07:26 geändert)

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

Martin Fischer
  
Beiträge gesamt: 12093

3. Jun 2011, 17:23
Beitrag # 3 von 10
Beitrag ID: #473028
Bewertung:
(7109 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hm, nun gleich eine Frage an Hans. ;-)

Hans, ich habe mehrere Textrahmen mit dem Namen 'x'.

Nun hatte ich angenommen, ich bekomme diese Textrahmen folgendermaßen zu fassen:
Code
var f = app.documents.firstItem().textFrames.itemByName('x'); 


Erwartet hatte ich, dass mir f eine Sammlung mit allen Textrahmen, die den Namen 'x' tragen, liefert.
Allerdings wird nur ein einziger Textrahmen mit dem Namen 'x' zurückgegeben.
Und zwar der oberste (dasselbe, wenn ich pageItems statt textFrames nehme).

Hast Du eine Idee, wie an alle Textrahmen mit dem Namen 'x' heranzukommen ist?

Viele Grüße
Martin




als Antwort auf: [#473027]
(Dieser Beitrag wurde von Martin Fischer am 4. Jun 2011, 07:28 geändert)

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

Hans Haesler
  
Beiträge gesamt: 5738

3. Jun 2011, 17:34
Beitrag # 4 von 10
Beitrag ID: #473030
Bewertung:
(7101 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael, hallo Martin,

ja, das stimmt. Wenn mit CS5 gleichnamige Rahmen über den Ebenen-Objekt-Namen adressiert werden, dann wird nur der vorderste erkannt.

Die Lösung für JavaScript werde ich später posten.

Mit AppleScript aber, funktioniert die whose clause und die Liste aller Textrahmen, deren Skriptetikett "Tabellenkopf_VA" ist, kann so erstellt werden:

Code
tell application "Adobe InDesign CS5" 

-- Initialisierung
set myDocument to active document
tell myDocument
set aSel to every text frame whose label is "Tabellenkopf_VA"
end tell
if aSel = {} then
return
end if

So sollte es klappen. Der Rest des Scripts bleibt unverändert.

Gruss, Hans


als Antwort auf: [#473028]

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

Martin Fischer
  
Beiträge gesamt: 12093

3. Jun 2011, 17:39
Beitrag # 5 von 10
Beitrag ID: #473031
Bewertung:
(7095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

man könnte alle pageItems auf den Namen prüfen und diejenigen, auf die der Name 'x' zutrifft, in einem Array speichern.

Etwa so:
Code
var f = get_item_by_name( app.documents.firstItem().pageItems, 'x'); 

function get_item_by_name( all_items, a_name)
{
var a = new Array;
for (var i = 0; i < all_items.length; i++)
{
if (all_items.item(i).name == a_name)
{
a.push(all_items.item(i));
}
}
return a;
}


In diesem Fall könnte man die Benennung der Objekte nach den Skriptetiketten aber auch gleich sein lassen und in der obigen Funktion statt auf die Namen auf die Etiketten zurückgreifen.


Code
var f = get_item_by_name( app.documents.firstItem().pageItems, 'x'); 

function get_item_by_name( all_items, a_name)
{
var a = new Array;
for (var i = 0; i < all_items.length; i++)
{
if (all_items.item(i).label == a_name)
{
a.push(all_items.item(i));
}
}
return a;
}


Viele Grüße
Martin




als Antwort auf: [#473030]
(Dieser Beitrag wurde von Martin Fischer am 3. Jun 2011, 17:40 geändert)

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

mgrams
Beiträge gesamt: 28

3. Jun 2011, 18:05
Beitrag # 6 von 10
Beitrag ID: #473032
Bewertung:
(7066 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans, Hallo Martin,

vielen Dank für die umgehenden Antworten.

Die Modifikation der ersten Zeilen des AppleScript-Codes, wie in #473030 beschrieben, führt bereits zum gewünschten Ergebnis.

Alle Textrahmen im Dokument mit dem definierten Namen reagieren. Da ich im Dokument noch mehr Objekte anfassen muss, brauche ich nur die entsprechenden Etikett-Namen anzupassen, dann sollte es dafür auch funktionieren.

Nochmals Vielen Dank für die schnelle Hilfe und ein schönes Wochenende.

Viele Grüße,

Michael Grams
mg


als Antwort auf: [#473030]

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

Hans Haesler
  
Beiträge gesamt: 5738

3. Jun 2011, 18:23
Beitrag # 7 von 10
Beitrag ID: #473034
Bewertung:
(7052 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

bitteschön. Ja, es sollte funktionieren. Bedingung: Die Rahmen dürfen nicht gruppiert sein.

@ Martin: Ja, klar. Wenn man sowieso eine Schleife durchlaufen muss, macht es keinen Sinn, vorgängig die Etiketten in das Namens-Attribut zu kopieren.

Vielleicht macht es keinen grossen Unterschied, aber in der Lösung, welche ich für meine professionellen Scripts benutze, wird zuerst ein Array der Labels erzeugt und die Schleife durchläuft dann diese Liste. Bei Übereinstimmung wird der entsprechende Rahmen in die Liste aufgenommen. Siehe meinen separaten Beitrag: http://www.hilfdirselbst.ch/..._P473033.html#473033

Gruss, Hans


als Antwort auf: [#473032]

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

Martin Fischer
  
Beiträge gesamt: 12093

3. Jun 2011, 18:27
Beitrag # 8 von 10
Beitrag ID: #473035
Bewertung:
(7047 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

guter Hinweis!
Danke.

Viele Grüße
Martin




als Antwort auf: [#473034]

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

Hans Haesler
  
Beiträge gesamt: 5738

3. Jun 2011, 23:01
Beitrag # 9 von 10
Beitrag ID: #473043
Bewertung:
(6979 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

bitteschön.

@ Michael: Und hier noch die Variante, mit welcher auch gruppierte Textrahmen adressiert werden können.

Zuerst wird der Variablen allPageItems alle Objekte zugewiesen. Einzelne Rahmen, Gruppen, die Rahmen der Gruppen, Bilder.
Dann wird der Variablen allLabels die Skriptetiketten dieser Objekte zugewiesen.
In einer Schleife wird das Label jedes Objekts geprüft. Bei einer Übereinstimmung wird das betreffende Objekt an die Liste aSel angefügt.

Code
tell application "Adobe InDesign CS5" 

-- Initialisierung
set myDocument to active document
tell myDocument
set aSel to {}
set allPageItems to all page items
set allLabels to label of all page items
repeat with i from 1 to count of allLabels
set curItem to item i of allLabels
if curItem is "Tabellenkopf_VA" then
set end of aSel to item i of allPageItems
end if
end repeat
end tell
if aSel = {} then
return
end if

Wie gehabt, nur der Anfang des Scripts. Der Rest bleibt unverändert.

Gruss, Hans


als Antwort auf: [#473035]

Textrahmen mit Skriptetiketten in InDesign CS5 verschieben

mgrams
Beiträge gesamt: 28

6. Jun 2011, 09:17
Beitrag # 10 von 10
Beitrag ID: #473109
Bewertung:
(6904 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Einen schönen Guten Morgen,

die Variante funktioniert einwandfrei. Ich kann das Script jetzt wieder wie in CS3 anwenden, der Zwischenschritt Name statt Etikett ist nicht mehr notwendig, spart Zeit und Nerven. Besten Dank dafür.

Viele Grüsse,

Michael


als Antwort auf: [#473043]
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.

Veranstaltungen
27.08.2019

Die smarte PDF-Workflow-Lösung für Druckereien — powered by Enfocus

Impressed GmbH, Hamburg
Dienstag, 27. Aug. 2019, 10.00 - 10.30 Uhr

Webinar

Wir stellen Ihnen das neueste Produkt aus dem Hause Impressed vor. Den Impressed Workflow Server (IWS) Der Impressed Workflow Server (kurz: IWS) ist eine automatisiert arbeitende PDF-Workflow-Lösung für Druckereien mit einer zentralen, Datenbank-gestützten Jobverwaltung und einer Browser-basierten Jobsteuerung. Die Bedienoberfläche des IWS ermöglicht eine Übersicht über die aktuellen in der Produktion befindlichen Dateien und kann deren weiteren Verlauf steuern. Der IWS automatisiert und standardisiert somit die Produktion - Powered by Enfocus! Der Impressed Workflow Server ist das Ergebnis unserer jahrzehntelangen Erfahrung mit Workflows für die Druckvorstufe sowie die logische Weiterentwicklung auf Basis von bewährten Enfocus Technologien.

Nein

Organisator: Impressed GmbH

Kontaktinformation: Detlef Grimm, E-Mailschulungen AT impressed DOT de

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

Impressed Workflow Server (IWS)
Veranstaltungen
28.08.2019

8005 Zürich
Mittwoch, 28. Aug. 2019, 18.00 - 20.15 Uhr

Meetup

«Das Leseerlebnis optimal gestalten, die eigenen Botschaften wirkungsvoll verbreiten und bei der Inhaltserstellung und -verwaltung von schlanken Prozessen und Effizienz profitieren - Publishing erfordert heute den richtigen Umgang mit Tools und Systemen. Eine Mehrkanal-Strategie ist dabei in den meisten Fällen von den Lesern nicht nur gefordert, sondern verdichtet die bereits bestehenden Herausforderungen. Gerade Automatisierungen können hier Abhilfe verschaffen. Nicht nur ermöglichen sie ein durchgängiges und einheitliches Leseerlebnis auf allen Kanälen. Sie machen den Prozess vielmehr effizienter und effektiver. An diesem Publishing-Meetup zeigt Benjamin Linsi verschiedene Beispiele für automatisiertes Publishing - von der kostengünstigen Web-to-Print Lösung über eine ausgeklügeltes Mehrkanal-Publishing-System bis zu einem umfassenden, medienneutralen und browserbasiertem Redaktionssystem. - AGENDA - 18.00 Speech von Benjamin Linsi 19.30 Apéro & Networking 20.15 Check-out - SPEAKER - "Als Marketer denke ich immer von der Zielgruppe aus, lege die Botschaften fest und bestimme, welche Kanäle bespielt werden. Dabei ist ein effizienter Prozess meist massgebend für die eigene Zielerreichung." Benjamin Linsi ist im Marketing Zuhause und setzt sich dabei, sowohl für seine eigene Arbeit als auch im Kundenkontakt, stark mit digitalen Lösungen auseinander. In seiner Position bei der Medienmacher AG setzt er sich dabei fokussiert mit dem Mehrwert von Publishing-Systemen auseinander.»

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.meetup.com/de-DE/Publishing-Group-Switzerland/events/263255802/

Mit Automatisierung den Publishing-Workflow verbessern
Hier Klicken