Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt zwei Seiten vertauschen

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

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

21. Mai 2020, 08:20
Beitrag # 1 von 27
Bewertung:
(14764 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich würde gerne zwei ausgewählte Seiten per Script vertauschen: 12 -> 50 - 50 -> 14

Wie finde ich denn ganz allgemein heraus, wie ich in diesem Fall z. B. die Eigenschaft "Seitenzahl" einer selektierten Seite auslese?
Die Logik, die Seiten dann zu tauschen kriege ich, denke ich, dann schon hin.

Gruß
Jo
X

zwei Seiten vertauschen

WernerPerplies
Beiträge gesamt: 2760

21. Mai 2020, 08:58
Beitrag # 2 von 27
Beitrag ID: #575385
Bewertung:
(14748 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Jo,

zuerst einmal, Du bist hier im falschen Forum gelandet, Dein Beitrag gehört in die Skriptwerkstatt.
Zitat Wie finde ich denn ganz allgemein heraus, wie ich in diesem Fall z. B. die Eigenschaft "Seitenzahl" einer selektierten Seite auslese?

Hier stellt sich sich die Frage, welche Seitenzahl möchtest Du?

Da gibt es Erstens die Eigenschaft "name", üblicherweise steht darin die Seitenzahl, aber als Anwender kannst Du den Inhalt frei bestimmen.

Und dann gibt es noch die Eigenschaft "documentOffset", hier findest Du den Index der Seite innerhalb des Documents.

Also:
page.name
oder
page.documentOffset.


als Antwort auf: [#575384]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

21. Mai 2020, 09:21
Beitrag # 3 von 27
Beitrag ID: #575387
Bewertung:
(14735 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Werner,

sorry, wenn ich im falschen Forum gelandet bin. (kann das ein Admin verschieben)

Und Danke für deine Erklärung.

Gruß
Jo


als Antwort auf: [#575385]

zwei Seiten vertauschen

Martin Fischer
  
Beiträge gesamt: 12779

21. Mai 2020, 09:31
Beitrag # 4 von 27
Beitrag ID: #575388
Bewertung:
(14729 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: die Eigenschaft "Seitenzahl" einer selektierten Seite auslese?


Eigenschaften und Methoden zu Seiten/pages findest Du hier dokumentiert: Page

Eine (oder mehrere) Seite(n) in der Seitenpalette zu ermitteln geht nur auf einem indirekten Weg.
Uwe Laubender zeigt dies beeindruckend mit einer Einfärbenmethode in GetPages-SELECTED-IN-PAGES-PANEL-v2.0.jsx.


als Antwort auf: [#575384]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

21. Mai 2020, 09:47
Beitrag # 5 von 27
Beitrag ID: #575389
Bewertung:
(14709 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke euch!

Also "einfach" die Nummer zweier selectierter Seiten auslesen
so in der Art
var seiteA = app.selection[0].page.number
var seiteB = app.selection[1].page.number

und dann mit move verschieben

geht also nicht?


als Antwort auf: [#575388]

zwei Seiten vertauschen

Gerald Singelmann
  
Beiträge gesamt: 6269

21. Mai 2020, 10:10
Beitrag # 6 von 27
Beitrag ID: #575392
Bewertung:
(14699 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das page Objekt hat sowohl eine documentOffset Eigenschaft als auch eine name Eigenschaft.

documentOffset gibt an, die wievielte Seite im Dokument das ist.
name gibt an, was in der Seitennummerierungsvariable steht.

HTH


als Antwort auf: [#575384]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

21. Mai 2020, 10:18
Beitrag # 7 von 27
Beitrag ID: #575393
Bewertung:
(14694 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Gerald,

würdest du mir bitte noch einen Tipp geben, wie ich nun konkret die Nummer der ausgewählten Seite ermitteln kann?

Danke!

Gruß
Jo


als Antwort auf: [#575392]

zwei Seiten vertauschen

WernerPerplies
Beiträge gesamt: 2760

21. Mai 2020, 10:58
Beitrag # 8 von 27
Beitrag ID: #575394
Bewertung:
(14683 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Doch, move sollte schon funktionieren:

probiere mal das aus:
Code
var /*Page*/first = app.activeDocument.pages.itemByName("4"); 
var /*Page*/second = app.activeDocument.pages.itemByName("5");
exchangePages(/*Page*/first, /*Page*/second);

/*Boolean*/function exchangePages(/*Page*/first, /*Page*/second){
try{
var /*Page*/p = null;
if (first.documentOffset === 0)
p = app.activeDocument.pages.item(2);
else
p = app.activeDocument.pages.item(first.documentOffset+1);
first.move(LocationOptions.BEFORE,second);
second.move(LocationOptions.BEFORE,p);
}
catch (error){
alert(error.message);
}
}



als Antwort auf: [#575389]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

21. Mai 2020, 11:30
Beitrag # 9 von 27
Beitrag ID: #575395
Bewertung:
(14678 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke dir! Das klappt gut.
Und statt die Nummern einzugeben, die Seiten per Maus in der Seitenübersicht auswählen, geht eben nicht so tivial, oder? Habe ich das richtig verstanden?


als Antwort auf: [#575394]

zwei Seiten vertauschen

WernerPerplies
Beiträge gesamt: 2760

21. Mai 2020, 12:04
Beitrag # 10 von 27
Beitrag ID: #575396
Bewertung:
(14663 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Und statt die Nummern einzugeben, die Seiten per Maus in der Seitenübersicht auswählen, geht eben nicht so tivial, oder? Habe ich das richtig verstanden?

Richtig, Du kannst zwar die aktuelle Seite auslesen, aber wenn Du mehrere Seiten auslesen willst, brauchst Du entweder eine EventHandler-Lösung, einen nicht modalen Dialog, oder für jede Selection ein Skript, das die Selektionen sammelt und ein zweites Skript das die Selektionen verarbeitet.

Machbar, aber ich finde das sprengt den Rahmen einer kostenlosen Skriptlösung.

Ich füge Deine Anforderung auf jeden Fall mal der ToDo-Liste meines ProjektHandlers hinzu:
WpsProjectHandler


als Antwort auf: [#575395]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

22. Mai 2020, 08:14
Beitrag # 11 von 27
Beitrag ID: #575406
Bewertung:
(14577 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke dir für deine Antwort.

Ich erkläre mein Problem mal kurz: evtl. gibt es ja noch eine andere Lösung. Ich setze jedes Jahr für meine Schule den Jahresbericht. Sehr oft muss ich Seiten vertauschen, z.B. 17 mit 23. Wenn das über die Auswahl per Maus zu kompliziert ist, könntest du mir evtl. noch einen kleinen Lösungsansatz geben, wie ich dein o.g. Skript so umbauen kann, dass ich die beiden Seiten über ein Dialogfenster eingeben kann?
(Ich programmiere sehr viel in Angular und anderen Sprachen, aber irgendwie finde ich keinen Zugang zu diesen Skripten)

Herzlichen Dank und Grüße
Jo


als Antwort auf: [#575396]

zwei Seiten vertauschen

WernerPerplies
Beiträge gesamt: 2760

22. Mai 2020, 09:41
Beitrag # 12 von 27
Beitrag ID: #575409
Bewertung:
(14553 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Jo,

ich muss mit dem Klammerbeutel gepudert sein! :-)

Ich liefere normalerweise niemals solch anwenderunfreundlichen und nicht ausgetestete Skripte ab!

Das folgende Skript funktioniert so:

1. Start: Skript ist aktiv und efordert, dass Du die erste Seite anspringst und ein Element auf der Seite selektierst.
Danach springst Du die zweite Seite an und selektierst wieder ein Element.
Danach sollten die Seiten vertauscht sein.
Dies kannst du beliebig lange wiederholen.
Danach musst Du das Skript erneut starten.

Das alles machst Du bitte erst nachdem Du Dein Dokument gesichert hast und auf eigenes Risiko!!!!!!!!

Code
// AFTER_SELECTION_CHANGED 
// CC 2020;
#target indesign-15.064
// CS 6 not testet!!!!!
// #target indesign-8.0
#targetengine "mySelectionChangedSession"

if ((afterSelectionChanged === undefined) || (afterSelectionChanged == null)){
var afterSelectionChanged = new AfterSelectionChanged();
if (afterSelectionChanged != null)
alert("PageExchange is active");
}
else{
afterSelectionChanged.removeListener();
afterSelectionChanged = null;
alert("PageExchange is inactive");
}

/*Object*/function AfterSelectionChanged(){
var/*EventListener*/ afterSelectionChangedListener = app.activeDocument.eventListeners.add("afterSelectionChanged", listenerTest);

function listenerTest () {
var /*Page*/page = null;
if (!("pages" in this))
this.pages = [];
if (app.selection.length > 0)
page = wpsGetParentPageOfObjectIfPossible(app.selection[0]);
if (page != null){
this.pages.push(page);
if (this.pages.length > 1){
exchangePages(this.pages[0], this.pages[1]);
this.pages.length = 0;
}
app.selection = NothingEnum.NOTHING;
}
}
this.removeListener = function(){
if(afterSelectionChangedListener != null)
afterSelectionChangedListener.remove();
}
/*page*/function wpsGetParentPageOfObjectIfPossible(/*object*/o)
{
try
{
var /*String*/whatIsIt = null, /*Page*/parentPage = null;

if (o === undefined)
return null;
if (o === null)
return null;
if (!(o.isValid))
return null;

if ("parentPage" in o)
return o.parentPage;

parentPage = (("parentTextFrames" in o) && (o.parentTextFrames.length >0)) ? o.parentTextFrames[0].parentPage : null;

if (parentPage != null)
return parentPage;

while (o != null)
{
if ("parentPage" in o)
return o.parentPage;
var whatIsIt = o.constructor;
switch (whatIsIt) {
case Page : return o;
case Character : o = o.parentTextFrames[0]; break;
case Footnote :; // drop through
case Cell : o = o.insertionPoints[0].parentTextFrames[0]; break;
case Note : o = o.storyOffset.parentTextFrames[0]; break;
case XMLElement : if (o.insertionPoints[0] != null) { o = o.insertionPoints[0].parentTextFrames[0]; break; }
case Application : return null;
default: o = o.parent;
}
if (o == null) return null;
}
return o
}
catch (error)
{
alert(error.message + "\nin File: " + error.fileName + "\nZeile: " + error.line);
// throw error;
}
return null;
}
/*Boolean*/function exchangePages(/*Page*/first, /*Page*/second){
try{
var /*Page*/p = null;
if (first.documentOffset === 0)
p = app.activeDocument.pages.item(2);
else {
if ((first.documentOffset +1) === second.documentOffset){
second.move(LocationOptions.BEFORE,first);
}
else{
p = app.activeDocument.pages.item(first.documentOffset+1);
first.move(LocationOptions.BEFORE,second);
second.move(LocationOptions.BEFORE,p);
}
}
}
catch (error){
alert(error.message);
}
}
}



als Antwort auf: [#575406]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

22. Mai 2020, 10:00
Beitrag # 13 von 27
Beitrag ID: #575410
Bewertung:
(14546 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Grundgütiger! Werner! VIELEN DANK!

Ich weiß gerade echt nicht, was ich sagen soll!? Bin echt baff!
Ich probiere es gleich mal aus!

Herzliche Grüße
Jo


als Antwort auf: [#575409]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 38

22. Mai 2020, 11:51
Beitrag # 14 von 27
Beitrag ID: #575411
Bewertung:
(14526 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So, ich melde mich mit etwas Verspätung. Ich musste mein Projekt erst auf den Mac umziehen, da ich auf meinem Windows-Rechner ID 2020 nicht installiert habe.
Das Skript ist total genial. Allerdings werden die Seiten nicht immer korrekt vertauscht. In erster Linie dann nicht, wenn zwischen den Seiten noch andere sind, was ja im Prinzip der Kern der Problematik ist. Für das Tauschen zweier benachbarter Seiten brauch man ja auch kein Skript. Und zum Teil bekomme ich die Meldung "Ungültiger Wert für Parameter "reference" der Methode "move". Page or Spread erwartet, aber nothing erhalten."

Ich gebe hier einfach eine Rückmeldung! Ich möchte das bitte in keinster Weise als Kritik oder so verstanden wissen! Ich bin immer noch voller Anerkennung und Respekt für das, was Werner hier gemacht hat. Nochmals vielen Dank dafür!

Beste Grüße aus Regensburg
Jo


als Antwort auf: [#575410]

zwei Seiten vertauschen

WernerPerplies
Beiträge gesamt: 2760

22. Mai 2020, 12:21
Beitrag # 15 von 27
Beitrag ID: #575413
Bewertung:
(14518 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Jo,

Zitat So, ich melde mich mit etwas Verspätung. Ich musste mein Projekt erst auf den Mac umziehen, da ich auf meinem Windows-Rechner ID 2020 nicht installiert habe.

Ich glaube nicht, dass Du das musstest.
Sondern nur das machen:
Code
// AFTER_SELECTION_CHANGED  
// CC 2020;
// #target indesign-15.064
// CS 6 not testet!!!!!
#target indesign-8.0

Zitat Das Skript ist total genial.

Das kann nicht sein, wenn Du Probleme hast.
Zitat In erster Linie dann nicht, wenn zwischen den Seiten noch andere sind, was ja im Prinzip der Kern der Problematik ist.

Liefere mir bitte eine Datei, und beschreibe mir genau, was Du machst, wenn was nicht funktioniert.
Zitat Und zum Teil bekomme ich die Meldung "Ungültiger Wert für Parameter "reference" der Methode "move". Page or Spread erwartet, aber nothing erhalten."

s. o., ohne genaue Angaben hift selbst meine Kristallkugel nicht.
Zitat Ich gebe hier einfach eine Rückmeldung! Ich möchte das bitte in keinster Weise als Kritik oder so verstanden wissen! Ich bin immer noch voller Anerkennung und Respekt für das, was Werner hier gemacht hat.

Kritik und Rückmeldungen sind wichtig, davon lebt meine Arbeit, aber jetzt bist Du dran mit der Arbeit, aslo bitte Testdaten und eine genaue Fehlerbeschreibung.


als Antwort auf: [#575411]
X