[GastForen Programme Print/Bildbearbeitung Adobe InDesign kleines scripting detail - move page

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

kleines scripting detail - move page

Gerald Singelmann
  
Beiträge gesamt: 6295

27. Feb 2006, 22:51
Beitrag # 1 von 6
Bewertung: ||
(4900 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich wurde kürzlich von einem Kunden angesprochen, ob es einen Weg gibt, eine Seite zu duplizierren, ohne dass diese automatisch am Ende des Dokuments landet.
Darin steckt ein interessantes Detail, nämlich die Syntax des move page befehls. Für alle Interessierten:
Code
tell application "Adobe InDesign CS2" 
set myDoc to active document
set nPages to count pages in myDoc
try
set thisPage to active page of active window
on error
set thisPage to active spread of active window
end try
set myDialog to make dialog with properties {name:"Einzeln Transformieren"}
tell myDialog
make dialog column
tell the result
make static text with properties {static label:"hinter Seite:"}
end tell
make dialog column
tell the result
set dupPField to make integer editbox with properties {edit value:0}
end tell
end tell
set nu to show myDialog
if nu is true then
set dupP to (edit value of dupPField) as integer
else
destroy myDialog
return
end if

tell myDoc
set dupPage to duplicate thisPage
move dupPage to after page dupP of myDoc
-- move dupPage to after thisPage of myDoc
end tell
end tell


Falls das Duplikat direkt hinter der Auswahl stecken soll, einfach die beiden move befehle tauschen.

wie immer ist dieses skript nur oberflächlich getestet und es kann keine garantie übernommen werden, dass genau das passiert, was der ausprobierende erwartet.
(Das sollte wohl jeder Softwarehersteller einfügen: nicht fehlerfrei, sondern nicht erwartungskonform ;))
X

kleines scripting detail - move page

Martin Fischer
  
Beiträge gesamt: 12891

28. Feb 2006, 00:06
Beitrag # 2 von 6
Beitrag ID: #214261
Bewertung:
(4887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,

ich weiß nicht, ob ich Deine Aufgabenstellung falsch verstanden habe, aber eine Seite läßt sich auch ohne move-Befehl direkt an eine bestimmte Stelle hin duplizieren.
Das folgende AS kopiert die aktive Seite hinter die aktive Seite (duplicate [reference] [to]):
Code
tell application "Adobe InDesign CS2" 
set myActivePage to active page of layout window 1
set myNewPage to duplicate myActivePage to after myActivePage
end tell


In JS:
Code
var myActivePage = app.activeWindow.activePage; 
var myNewPage = myActivePage.duplicate(LocationOptions.after, myActivePage)


Freilich fehlt in den obigen Beispielen der Dialog zur Auswahl des Ziels.
Allerdings sollte nach der Erfassung der Zielseite über den Dialog auch eine Überprüfung stattfinden, ob die Zielseite auch vorhanden ist - zumal der Anfang mit "set nPages to count pages in myDoc" bereits gemacht ist. ;-)
Darum habe ich mich in den Beispielen oben herumgemogelt, weil die aktive Seite, hinter die die aktive Seite dupliziert werden soll, per definitionem existiert. :-)


als Antwort auf: [#214256]
(Dieser Beitrag wurde von Martin Fischer am 28. Feb 2006, 00:14 geändert)

kleines scripting detail - move page

Gerald Singelmann
  
Beiträge gesamt: 6295

28. Feb 2006, 09:30
Beitrag # 3 von 6
Beitrag ID: #214286
Bewertung: ||
(4857 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo martin,

ja mich interessierte unter anderem die möglichkeit, ein beliebiges ziel anzugeben. was ich gestern nicht mehr testete: ob das auch mit doppelseiten funktioniert. was es nicht tat. hier mein geändertes skript (diesmal mit dem dialog ausgegraut, es wird einfach die seite hinter die aktuelle gesetzt)
Code
tell application "Adobe InDesign CS2" 
set myDoc to active document
set nPages to count pages in myDoc
if facing pages of document preferences of myDoc then
set thisPage to active spread of active window
set keepTogether to keep together of thisPage
set keep together of thisPage to true
set isSpread to true
else
set thisPage to active page of active window
set isSpread to false
end if
(* set myDialog to make dialog with properties {name:"Einzeln Transformieren"}
tell myDialog
make dialog column
tell the result
make static text with properties {static label:"hinter Seite:"}
end tell
make dialog column
tell the result
set dupPField to make integer editbox with properties {edit value:0}
end tell
end tell
set nu to show myDialog
if nu is true then
set dupP to (edit value of dupPField) as integer
else
destroy myDialog
return
end if
*)
set dupP to index of thisPage
activate
tell myDoc
set dupPage to duplicate thisPage
if isSpread then
move dupPage to after spread dupP of myDoc
set keep together of thisPage to keepTogether
set keep together of dupPage to keepTogether
else
move dupPage to after page dupP of myDoc
end if
end tell
end tell



als Antwort auf: [#214261]

kleines scripting detail - move page

Martin Fischer
  
Beiträge gesamt: 12891

28. Feb 2006, 10:16
Beitrag # 4 von 6
Beitrag ID: #214293
Bewertung:
(4847 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> ja mich interessierte unter anderem die möglichkeit, ein beliebiges ziel anzugeben.
> was ich gestern nicht mehr testete: ob das auch mit doppelseiten funktioniert. was es nicht tat.

Das ist freilich seltsam.
Laut reference sollte auch ein spread ein Ziel sein: "The page, spread, or document in which to create the duplicate."

Beim Ziel spread versagen AS und JS ihren Dienst.

Hattest Du damit gerechnet und wolltest dies austesten oder warst Du überrascht, als es nicht ging?

Alternativ müßte man - wenn man unbedingt einen spread als Ziel wünscht, vom spread auf die erste oder letzte Seite des spreads runterrechnen, je nachdem, ob das Duplikat davor oder danach eingefügt werden soll:
Code
// gegeben myTargetSpread 
set myTargetPage to page -1 of myTargetSpread // letzte Seite des Druckbogens - für Plazierung danach
set myTargetPage to page 1 of myTargetSpread // erste Seite des Druckbogens - für Plazierung davor



als Antwort auf: [#214286]

kleines scripting detail - move page

Gerald Singelmann
  
Beiträge gesamt: 6295

28. Feb 2006, 10:23
Beitrag # 5 von 6
Beitrag ID: #214298
Bewertung:
(4842 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
soweit ich das verstanden habe, funzt "after spread" genau dann wenn du einen spread verschiebst und "after page" genau dann, wenn du eine page verschiebst. damit kann ich leben, obwohl man ja auch einen spread zwischen zwei spread-seiten schieben können müsste.
wichtig ist jedenfalls (aufgrund der bugs, die indesign beim verschieben von doppelseiten hat), das handling von dem keep together. insofern ist die fallunterschiedung schon ok, denke ich.

den einzigen sinn, den ich in diesem skript sehen kann ist eh, wenn man mit langen dokumenten arbeitet, so dass die letzte seite nicht in der seitenpalette auftaucht.

die zweite version läuft aber, oder?


als Antwort auf: [#214293]

kleines scripting detail - move page

Martin Fischer
  
Beiträge gesamt: 12891

28. Feb 2006, 10:49
Beitrag # 6 von 6
Beitrag ID: #214307
Bewertung:
(4835 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> die zweite version läuft aber, oder?

Ja freilich.
Die erste doch auch.

Mir war es ursprünglich nur ein Anliegen, Dich darauf hinzuweisen, daß der move-Befehl in diesem Fall gar nicht nötig ist, denn die Plazierung des Duplikats kann man auch dem duplicate-Befehl direkt mitteilen.

Auf diesen Sachverhalt bin ich gestern gestoßen, als ich neue Seiten nach einer bestimmten Seite einfügen wollte (das modifizierte ImageCatalog.js).


als Antwort auf: [#214298]
X