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

20. Mär 2018, 14:21
Beitrag # 1 von 17
Bewertung:
(2064 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).


Viele Grüße
Martin


X

page.resize() bei Druckbogen mit mehreren Seiten

Kai Rübsamen
Beiträge gesamt: 4664

20. Mär 2018, 15:36
Beitrag # 2 von 17
Beitrag ID: #562973
Bewertung:
(2049 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 …

Gruß Kai Rübsamen


als Antwort auf: [#562968]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12491

20. Mär 2018, 15:55
Beitrag # 3 von 17
Beitrag ID: #562975
Bewertung:
(2045 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. :-(

Viele Grüße
Martin




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

page.resize() bei Druckbogen mit mehreren Seiten

Kai Rübsamen
Beiträge gesamt: 4664

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

Gruß Kai Rübsamen


als Antwort auf: [#562975]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12491

20. Mär 2018, 16:09
Beitrag # 5 von 17
Beitrag ID: #562977
Bewertung:
(2036 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.

Viele Grüße
Martin




als Antwort auf: [#562975]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12491

20. Mär 2018, 16:24
Beitrag # 6 von 17
Beitrag ID: #562979
Bewertung:
(2033 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. :-)

Viele Grüße
Martin




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

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12491

20. Mär 2018, 16:34
Beitrag # 7 von 17
Beitrag ID: #562980
Bewertung:
(2030 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.

Viele Grüße
Martin




als Antwort auf: [#562979]

page.resize() bei Druckbogen mit mehreren Seiten

Uwe Laubender
Beiträge gesamt: 4955

20. Mär 2018, 16:36
Beitrag # 8 von 17
Beitrag ID: #562981
Bewertung:
(2028 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.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#562975]

page.resize() bei Druckbogen mit mehreren Seiten

Uwe Laubender
Beiträge gesamt: 4955

20. Mär 2018, 16:44
Beitrag # 9 von 17
Beitrag ID: #562983
Bewertung:
(2023 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 ;

*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#562980]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12491

20. Mär 2018, 16:48
Beitrag # 10 von 17
Beitrag ID: #562985
Bewertung:
(2022 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.

Viele Grüße
Martin




als Antwort auf: [#562981]

page.resize() bei Druckbogen mit mehreren Seiten

WernerPerplies
Beiträge gesamt: 2651

20. Mär 2018, 17:05
Beitrag # 11 von 17
Beitrag ID: #562989
Bewertung:
(2006 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?

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
Kundenstimmen


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

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12491

21. Mär 2018, 06:19
Beitrag # 12 von 17
Beitrag ID: #562994
Bewertung:
(1936 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!

Viele Grüße
Martin




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

page.resize() bei Druckbogen mit mehreren Seiten

WernerPerplies
Beiträge gesamt: 2651

21. Mär 2018, 07:54
Beitrag # 13 von 17
Beitrag ID: #562997
Bewertung:
(1909 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.

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
Kundenstimmen


als Antwort auf: [#562994]

page.resize() bei Druckbogen mit mehreren Seiten

Martin Fischer
  
Beiträge gesamt: 12491

21. Mär 2018, 08:42
Beitrag # 14 von 17
Beitrag ID: #562998
Bewertung:
(1904 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.

Viele Grüße
Martin




als Antwort auf: [#562997]

page.resize() bei Druckbogen mit mehreren Seiten

WernerPerplies
Beiträge gesamt: 2651

21. Mär 2018, 09:34
Beitrag # 15 von 17
Beitrag ID: #563000
Bewertung:
(1889 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.

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
Kundenstimmen


als Antwort auf: [#562998]
X

Aktuell

InDesign / Illustrator
axaio_PR_Bild_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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
30.07.2021

Chur, SNF Academy Birol Isik
Freitag, 30. Juli 2021, 07.45 - 20.00 Uhr

Onlinekurs

Digitalisierung Chancen & Herausforderungen CRM / Kundenbetreuung Produkte digitalisieren Unternehmenskommunikation Content Publishing

Ja

Organisator: Birol Isik

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

https://www.snfa.ch/fitness-training-schweiz