hilfdirselbst.ch
Facebook Twitter gamper-media

**********************************************
        Facelifting HDS: Danke für deine Unterstützung!

**********************************************


« « 1 2 » »  
Martin Fischer  M  p
Beiträge: 11808
20. Mär 2018, 15:21
Beitrag #1 von 17
Bewertung:
(454 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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 Top
 
X
Kai Rübsamen  M  p
Beiträge: 4483
20. Mär 2018, 16:36
Beitrag #2 von 17
Beitrag ID: #562973
Bewertung:
(439 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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] Top
 
Martin Fischer  M  p
Beiträge: 11808
20. Mär 2018, 16:55
Beitrag #3 von 17
Beitrag ID: #562975
Bewertung:
(435 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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, 17:00 geändert)
Top
 
Kai Rübsamen  M  p
Beiträge: 4483
20. Mär 2018, 17:09
Beitrag #4 von 17
Beitrag ID: #562976
Bewertung:
(427 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


Mach doch mal für alle ein kleines Beispiel inkl. lauffähiger Version vom Verbreitern?!

Gruß Kai Rübsamen
_______________________
als Antwort auf: [#562975] Top
 
Martin Fischer  M  p
Beiträge: 11808
20. Mär 2018, 17:09
Beitrag #5 von 17
Beitrag ID: #562977
Bewertung:
(426 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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] Top
 
Martin Fischer  M  p
Beiträge: 11808
20. Mär 2018, 17:24
Beitrag #6 von 17
Beitrag ID: #562979
Bewertung:
(423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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, 17:25 geändert)
Top
 
Martin Fischer  M  p
Beiträge: 11808
20. Mär 2018, 17:34
Beitrag #7 von 17
Beitrag ID: #562980
Bewertung:
(420 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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] Top
 
Uwe Laubender S
Beiträge: 4039
20. Mär 2018, 17:36
Beitrag #8 von 17
Beitrag ID: #562981
Bewertung:
(418 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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] Top
 
Uwe Laubender S
Beiträge: 4039
20. Mär 2018, 17:44
Beitrag #9 von 17
Beitrag ID: #562983
Bewertung:
(413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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] Top
 
Martin Fischer  M  p
Beiträge: 11808
20. Mär 2018, 17:48
Beitrag #10 von 17
Beitrag ID: #562985
Bewertung:
(412 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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] Top
 
WernerPerplies
Beiträge: 2184
20. Mär 2018, 18:05
Beitrag #11 von 17
Beitrag ID: #562989
Bewertung:
(396 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#562968]
(Dieser Beitrag wurde von WernerPerplies am 20. Mär 2018, 18:07 geändert)
Top
 
Martin Fischer  M  p
Beiträge: 11808
21. Mär 2018, 07:19
Beitrag #12 von 17
Beitrag ID: #562994
Bewertung:
(326 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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, 07:25 geändert)
Top
 
WernerPerplies
Beiträge: 2184
21. Mär 2018, 08:54
Beitrag #13 von 17
Beitrag ID: #562997
Bewertung:
(299 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#562994] Top
 
Martin Fischer  M  p
Beiträge: 11808
21. Mär 2018, 09:42
Beitrag #14 von 17
Beitrag ID: #562998
Bewertung:
(294 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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] Top
 
WernerPerplies
Beiträge: 2184
21. Mär 2018, 10:34
Beitrag #15 von 17
Beitrag ID: #563000
Bewertung:
(279 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

page.resize() bei Druckbogen mit mehreren Seiten


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
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#562998] Top
 
« « 1 2 » »  
X