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

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

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

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

20. Mär 2018, 17:09
Beitrag # 4 von 17
Beitrag ID: #562976
Bewertung:
(2665 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: 12783

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

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

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

20. Mär 2018, 17:36
Beitrag # 8 von 17
Beitrag ID: #562981
Bewertung:
(2656 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: 5316

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

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

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

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

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

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

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

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
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!