[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: 35

21. Mai 2020, 08:20
Beitrag # 1 von 27
Bewertung:
(10850 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: 2683

21. Mai 2020, 08:58
Beitrag # 2 von 27
Beitrag ID: #575385
Bewertung:
(10834 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.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#575384]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 35

21. Mai 2020, 09:21
Beitrag # 3 von 27
Beitrag ID: #575387
Bewertung:
(10821 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: 12590

21. Mai 2020, 09:31
Beitrag # 4 von 27
Beitrag ID: #575388
Bewertung:
(10815 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.

Viele Grüße
Martin




als Antwort auf: [#575384]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 35

21. Mai 2020, 09:47
Beitrag # 5 von 27
Beitrag ID: #575389
Bewertung:
(10795 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: 6254

21. Mai 2020, 10:10
Beitrag # 6 von 27
Beitrag ID: #575392
Bewertung:
(10785 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: 35

21. Mai 2020, 10:18
Beitrag # 7 von 27
Beitrag ID: #575393
Bewertung:
(10780 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: 2683

21. Mai 2020, 10:58
Beitrag # 8 von 27
Beitrag ID: #575394
Bewertung:
(10769 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);
}
}


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#575389]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 35

21. Mai 2020, 11:30
Beitrag # 9 von 27
Beitrag ID: #575395
Bewertung:
(10764 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: 2683

21. Mai 2020, 12:04
Beitrag # 10 von 27
Beitrag ID: #575396
Bewertung:
(10749 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

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#575395]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 35

22. Mai 2020, 08:14
Beitrag # 11 von 27
Beitrag ID: #575406
Bewertung:
(10663 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: 2683

22. Mai 2020, 09:41
Beitrag # 12 von 27
Beitrag ID: #575409
Bewertung:
(10639 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);
}
}
}


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#575406]

zwei Seiten vertauschen

photojo
Beiträge gesamt: 35

22. Mai 2020, 10:00
Beitrag # 13 von 27
Beitrag ID: #575410
Bewertung:
(10632 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: 35

22. Mai 2020, 11:51
Beitrag # 14 von 27
Beitrag ID: #575411
Bewertung:
(10612 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: 2683

22. Mai 2020, 12:21
Beitrag # 15 von 27
Beitrag ID: #575413
Bewertung:
(10604 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.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#575411]
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
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/