[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt page.resize() bei Druckbogen mit mehreren Seiten

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

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

20. Mär 2018, 15:21
Beitrag # 1 von 17
Bewertung:
(2394 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe Kollegen,

ich stecke in einem Problem fest und weiß im Moment nicht weiter.

Gegeben ein Dokument mit einem Druckbogen mit insgesamt 4 Seiten (die Seiten stoßen in einer Reihe aneinander an).

Nun sollen die Seiten 1 und 3 um einen bestimmten Faktor verbreitert werden.

Der entsprechende Befehl lautet etwa folgendermaßen (Linealeinheit: Punkt):
Code
doc.pages.item(i).resize(CoordinateSpaces.SPREAD_COORDINATES, AnchorPoint.BOTTOM_LEFT_ANCHOR, ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH,[doc.documentPreferences.pageWidth*factor, doc.documentPreferences.pageHeight]); 


Am Ende stimmen zwar die Breiten, aber die Seite 1 ragt in die Seite 2 hinein und die Seite 3 in die Seite 4.

Gibt es eine Möglichkeit, dies zu verhindern?
Oder die Überlappung durch Verschiebung der nächsten Seite um einen bestimmten x-Wert aufzuheben?
Verwende ich für diesen Zweck ungeeignete Parameter im resize()-Befehl?

-----
Quick & dirty habe ich mir damit beholfen, dass ich in einer Schleife durch alle Seiten die Größe durch resize() verändere und ans Ende des Druckbogens verschiebe.
Das funktioniert soweit.
Aber ich könnte mir Situationen vorstellen, wo Schwierigkeiten zu erwarten sind (Seitenobjekte, die in die nächste Seite hineinragen).

X

page.resize() bei Druckbogen mit mehreren Seiten

Kai Rübsamen
Beiträge gesamt: 4670

20. Mär 2018, 16:36
Beitrag # 2 von 17
Beitrag ID: #562973
Bewertung:
(2379 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Martin, ich hab das jetzt nicht per Skript getestet. Aber das von dir beschriebene Verhalten, entspricht auch dem UI. D.h. nach dem Verbreitern musst du die Seiten verschieben. Deine Beobachtung im Skript passen da …


als Antwort auf: [#562968]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

20. Mär 2018, 16:55
Beitrag # 3 von 17
Beitrag ID: #562975
Bewertung:
(2375 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

hab Dank für Deine Bestätigung des Sachverhalts.

Antwort auf: D.h. nach dem Verbreitern musst du die Seiten verschieben.

Weißt Du auch noch, wie das geht, das Verschieben?
Um einen bestimmten x-Wert?
Da hänge ich noch.

Mit dem move()-Befehl kann ich ja nicht um einen Koordinatenwert x/y, sondern nur relativ zu einer anderen Seite oder zum Druckbogen verschieben.

Die bounds einer Seite sind readonly.
Aber möglicherweise lässt sich über einen Vergleich der Bounds zweier benachbarter Seiten etwas herausfinden und den nötigen Wert für die Verschiebung berechnen. Aber wie um einen x-Wert verschieben, so dass die Seiten wieder aneinander stoßen?

Oben hatte ich von einem Workaround mit Verschieben der Seiten ans Ende des Druckbogens geschrieben. Das hatte soweit funktioniert.
Nun dachte ich, wenn das funktioniert, sollte auch das Verschieben der nächsten Seite (nach der verbreiterten Seite) hinter die verbreiterte Seite so ähnlich funktionieren. Tut es aber nicht. Die bleibt dort stehen, wo sie ist. :-(


als Antwort auf: [#562973]
(Dieser Beitrag wurde von Martin Fischer am 20. Mär 2018, 17:00 geändert)

page.resize() bei Druckbogen mit mehreren Seiten

Kai Rübsamen
Beiträge gesamt: 4670

20. Mär 2018, 17:09
Beitrag # 4 von 17
Beitrag ID: #562976
Bewertung:
(2367 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mach doch mal für alle ein kleines Beispiel inkl. lauffähiger Version vom Verbreitern?!


als Antwort auf: [#562975]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

20. Mär 2018, 17:09
Beitrag # 5 von 17
Beitrag ID: #562977
Bewertung:
(2366 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Beim resize()-Befehl hatte ich es auch mal mit einem Array von zwei Zahlen als from-Parameter statt dem AnchorPoint versucht.

Das Ergebnis wird ein anderes als mit dem AnchorPoint.
Aber ich habe nicht herausgefunden, welche Koordinate zu verwenden wäre, um das gewünschte Ergebnis zu erzielen.


als Antwort auf: [#562975]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

20. Mär 2018, 17:24
Beitrag # 6 von 17
Beitrag ID: #562979
Bewertung:
(2363 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Mach doch mal für alle ein kleines Beispiel inkl. lauffähiger Version vom Verbreitern?!


Mist.
Es ist fast nicht zu glauben.

In dem vereinfachten Beispiel bleiben die benachbarten Seiten aneinander geschmiegt:
Code
var i = 0, 
factor = 1.3;
doc = app.documents.add();

doc.spreads.firstItem().allowPageShuffle = false;
doc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.POINTS;
doc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.POINTS;

for (i = 0; i < 3; i++)
doc.pages.add();

doc.pages.item(0).resize(CoordinateSpaces.SPREAD_COORDINATES, AnchorPoint.BOTTOM_LEFT_ANCHOR, ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH,[doc.documentPreferences.pageWidth*factor, doc.documentPreferences.pageHeight]);

doc.pages.item(2).resize(CoordinateSpaces.SPREAD_COORDINATES, AnchorPoint.BOTTOM_LEFT_ANCHOR, ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH,[doc.documentPreferences.pageWidth*factor, doc.documentPreferences.pageHeight]);


Da bedarf es keiner Verschiebung mehr.
Bin fasziniert!

Da hat sich in meinem komplexeren Konstrukt wohl an einem anderen Ort ein Fehler eingeschlichen.

Aber wenn wir soweit sind.
Hast Du ne Idee, wie man per Skript eine Lücke von - sagen wir 10 mm - zwischen die Seiten bekommen könnte?
Rein Interesse halber. :-)


als Antwort auf: [#562976]
(Dieser Beitrag wurde von Martin Fischer am 20. Mär 2018, 17:25 geändert)

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

20. Mär 2018, 17:34
Beitrag # 7 von 17
Beitrag ID: #562980
Bewertung:
(2360 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Muss für heute Schluss machen und bin gleich weg.

Aber spontan konnte ich das Hauptskript nicht dazu bringen, sich so zu verhalten, wie das kleine Beispiel oben. Da werde ich tiefer bohren müssen, wie es zu diesem unterschiedlichen Verhalten kommt. Aber ich werde mein Template, mit dem gearbeitet wird, noch genauer untersuchen.


als Antwort auf: [#562979]

page.resize() bei Druckbogen mit mehreren Seiten

Uwe Laubender
Beiträge gesamt: 5250

20. Mär 2018, 17:36
Beitrag # 8 von 17
Beitrag ID: #562981
Bewertung:
(2358 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
hilft Dir möglicherweise jetzt nicht weiter, aber nur so auf die Schnelle:

Falls die Seiten in einem "facing-pages"-Dokument stünden, hättest Du keine Probleme mit dem Überlappen. Da müssen die Seiten in der Horizontalen immer aneinander kleben. Da gibt's keine Überlappungen. Weder in der Horizontalen noch der Vertikalen.


als Antwort auf: [#562975]

page.resize() bei Druckbogen mit mehreren Seiten

Uwe Laubender
Beiträge gesamt: 5250

20. Mär 2018, 17:44
Beitrag # 9 von 17
Beitrag ID: #562983
Bewertung:
(2353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier noch ein wenig Code nachgeschoben. Ich gehe davon aus, dass der erste Spread über 4 Seiten verfügt.

Code
var doc = app.documents[0]; 
var facingPages = doc.documentPreferences.facingPages;
doc.documentPreferences.facingPages = true ;

var factor = 1.3;

doc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.POINTS ;
doc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.POINTS ;


doc.pages[0].resize
(
CoordinateSpaces.SPREAD_COORDINATES ,
AnchorPoint.BOTTOM_LEFT_ANCHOR ,
ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH ,
[
doc.documentPreferences.pageWidth*factor ,
doc.documentPreferences.pageHeight
]
);

doc.pages[2].resize
(
CoordinateSpaces.SPREAD_COORDINATES ,
AnchorPoint.BOTTOM_LEFT_ANCHOR ,
ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH ,
[
doc.documentPreferences.pageWidth*factor ,
doc.documentPreferences.pageHeight
]
);

doc.documentPreferences.facingPages = facingPages ;



als Antwort auf: [#562980]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

20. Mär 2018, 17:48
Beitrag # 10 von 17
Beitrag ID: #562985
Bewertung:
(2352 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Super Idee!
Im Template ist facing-pages false.
In meinen Standarddokumentvorgaben true.

Bin unterwegs und werde das morgen prüfen.


als Antwort auf: [#562981]

page.resize() bei Druckbogen mit mehreren Seiten

WernerPerplies
Beiträge gesamt: 2699

20. Mär 2018, 18:05
Beitrag # 11 von 17
Beitrag ID: #562989
Bewertung:
(2336 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
Zitat Verwende ich für diesen Zweck ungeeignete Parameter im resize()-Befehl?


Schonmal page.transform() anstelle von move probiert?


als Antwort auf: [#562968]
(Dieser Beitrag wurde von WernerPerplies am 20. Mär 2018, 18:07 geändert)

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

21. Mär 2018, 07:19
Beitrag # 12 von 17
Beitrag ID: #562994
Bewertung:
(2266 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Werner Perplies ] Schonmal page.transform() anstelle von move probiert?


page.transform() wäre wohl eher eine Alternative zu page.resize() als zu page.move().

Habe es kurz getestet:
Code
var doc = app.activeDocument;   
doc.spreads.firstItem().allowPageShuffle = false;

doc.documentPreferences.facingPages = true; // keine Seitenüberlappung
//~ doc.documentPreferences.facingPages = false; // ggf. Überlappung von benachbarten Seiten

while (doc.pages.length < 4)
doc.pages.add();

var pg = doc.pages.item(1);
var tf_matrix = app.transformationMatrices.add({horizontalScaleFactor:1.3});

pg.transform(
CoordinateSpaces.SPREAD_COORDINATES,
AnchorPoint.CENTER_ANCHOR,
tf_matrix
);


Die Probleme sind dieselben wie bei page.resize().
Auch die Lösung ist dieselbe:

Die Aktivierung von Doppelseiten (facingPages) in den Dokumenteinstellungen ist entscheidend.
Damit lassen sich unerwünschte Überlappungen von Seiten verhindern.

Lieber Uwe, herzlichen Dank dafür!


als Antwort auf: [#562989]
(Dieser Beitrag wurde von Martin Fischer am 21. Mär 2018, 07:25 geändert)

page.resize() bei Druckbogen mit mehreren Seiten

WernerPerplies
Beiträge gesamt: 2699

21. Mär 2018, 08:54
Beitrag # 13 von 17
Beitrag ID: #562997
Bewertung:
(2239 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat page.transform() wäre wohl eher eine Alternative zu page.resize() als zu page.move()

Das hängt wohl von den Werten der Transformationsmatrix ab. :-)
Zitat Die Probleme sind dieselben wie bei page.resize().

Ich habe da nichts anderes behauptet.
Zitat Auch die Lösung ist dieselbe

Auch die Lösung für Ihren Anwendungsfall ist dieselbe.

Eine generelle Lösung könnte über eine Erweiterungsmethode des Spread-Objects realisiert werden.

Aber das ist gerade nicht meine Baustelle.


als Antwort auf: [#562994]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12684

21. Mär 2018, 09:42
Beitrag # 14 von 17
Beitrag ID: #562998
Bewertung:
(2234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Werner Perplies ]
Zitat page.transform() wäre wohl eher eine Alternative zu page.resize() als zu page.move()

Das hängt wohl von den Werten der Transformationsmatrix ab. :-)

Diesen Hinweis verstehe ich nicht.
Oben wurde das mögliche Überlappen von Seiten bei horizontaler Skalierung problematisiert und eine Lösung zur Vermeidung dieser Überlappung bzw. zu ihrer Korrektur gesucht.

Heißt das, dass mit passenden Werten der Transformationsmatrix diese Überlappung auch bei deaktivierten facingPages vermieden oder korrigiert werden könnte?
Wie müsste die Transformationsmatrix dafür ausgestattet werden?

Antwort auf: Eine generelle Lösung könnte über eine Erweiterungsmethode des Spread-Objects realisiert werden.

Könnten Sie das skizzieren?

Antwort auf: Aber das ist gerade nicht meine Baustelle.

Sie haben zumindest eine Lösung mit anderen Methoden (transform() und nun zusätzlich auch noch über die Erweiterung des Spread-Objekts) als der ebenso einfachen wie pragmatischen Lösung über die passende Einstellung der facingPages angedeutet und für bemerkenswert erachtet.
Das machte mich neugierig.


als Antwort auf: [#562997]

page.resize() bei Druckbogen mit mehreren Seiten

WernerPerplies
Beiträge gesamt: 2699

21. Mär 2018, 10:34
Beitrag # 15 von 17
Beitrag ID: #563000
Bewertung:
(2219 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Heißt das, dass mit passenden Werten der Transformationsmatrix diese Überlappung auch bei deaktivierten facingPages vermieden oder korrigiert werden könnte?
Wie müsste die Transformationsmatrix dafür ausgestattet werden?

Ok, es ist schon eine Weile her, dass ich so etwas gemacht habe, aber ich werde in den nächsten Tagen versuchen, eine Lösung zu skizzieren.
Es wäre nett, wenn Sie zwei InDesign-Dateien (vor/nach) mit Aufgbenbeschreibung zur Verfügung stellen könnten.

Ich stelle mir eine Lösung vor, die in etwa so aussieht:
spread.resizePages(page|pages, resizeParameter).

Mehr kann ich im Moment nicht liefern.


als Antwort auf: [#562998]
X

Aktuell

PDF / Print
Wolken_300

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/