[GastForen Programmierung/Entwicklung AppleScript ID CS4 Automatisches Skalieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

ID CS4 Automatisches Skalieren

OnkelFies
Beiträge gesamt: 4

7. Sep 2011, 15:51
Beitrag # 1 von 10
Bewertung:
(3811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Miteinander,

ich habe eine Frage zur Automatisierung in InDesign, bzw. die Automatisierung von InDesign mittels AppleScript.

Gestern habe ich hier im Forum bereits ein Skript gefunden, das mir lästiges öffnen und komprimieren in Photoshop abnimmt und mir dabei hilft, Zeit und Nerven einzusparen. Ein Grund genug auch mal für InDesign um Hilfe zu bitten.

Nun denn. Für eine Produktion, muss die fertige Doppelseite (Sonderformat, .indd) für eine Vertreter-Version vergrössert werden.

Heißt, das Dokument auf die Größe 307 x 420 mm einrichten, alle Elemente markieren, gruppieren und um 126.7 % skalieren.
Dokumentnamen um _VT erweitern und abspeichern.

Wie gehe ich da am besten ran, habe gestern bei dem Skript zum ersten mal überhaupt etwas von AppleScript gehört und dementsprechend wenig Ahnung.

Vielleicht hat ja wer eine Idee oder eine Lösung parat, ich bin für jede Hilfe dankbar :)
X

ID CS4 Automatisches Skalieren

Hans Haesler
  
Beiträge gesamt: 5818

7. Sep 2011, 17:22
Beitrag # 2 von 10
Beitrag ID: #479776
Bewertung:
(3787 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo OnkelFies,

herzlich willkommen im AppleScript-Forum auf HDS! :-)

Fragen:
– Umfasst das Dokument nur die eine Doppelseite?
– Wie gross ist eine Seite des Original-Dokuments?
– Kommen randabfallende Rahmen vor?

Gruss, Hans


als Antwort auf: [#479771]

ID CS4 Automatisches Skalieren

OnkelFies
Beiträge gesamt: 4

8. Sep 2011, 09:17
Beitrag # 3 von 10
Beitrag ID: #479795
Bewertung:
(3744 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

danke für deine schnelle Antwort.

Das Dokument besteht aus jeweils einer Doppelseite, mit 4 Ebenen. Bild-Ebene, Deutsch, Englisch und Italienisch. 2 Ebenen sind davon immer aktiv, 2 ausgeblendet. Insgesamt muss der ganze Prozess bei ca. 50 Dokumenten dieser Art vorgenommen werden.

Das Original-Dokument hat ein Seitenverhältnis von 240 x 335 mm + 3 mm Anschnitt an allen Seiten (o, u, l, r)

VG, Fies


als Antwort auf: [#479776]

ID CS4 Automatisches Skalieren

Hans Haesler
  
Beiträge gesamt: 5818

8. Sep 2011, 11:15
Beitrag # 4 von 10
Beitrag ID: #479813
Bewertung:
(3724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Fies,

danke für die Angaben. Happig, happig ...

Ich werde erst Freitag gegen Abend wieder zuhause sein und dann versuchen, die Machbarkeit zu prüfen.

Würdest Du mir bitte ein solches Dokument zustellen? Dann hätte ich schon mal die richtigen Voraussetzungen. Bitte stuffen oder zippen. Die E-Mail-Adresse findest Du in meinem Profil.

Danke im voraus.

Gruss, Hans


als Antwort auf: [#479795]

ID CS4 Automatisches Skalieren

OnkelFies
Beiträge gesamt: 4

8. Sep 2011, 11:30
Beitrag # 5 von 10
Beitrag ID: #479815
Bewertung:
(3718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

dachte mir schon das es sehr aufwändig wird. Irgendwie wie immer, einfacher Gedanke aber unfassbarer aufwand. Da weiß ich deine Hilfe echt zu schätzen. Vielen dank schonmal!

Ich mach gleich mal eine Musterseite Fertig und schick sie dir.

VG,
Fies


als Antwort auf: [#479813]

ID CS4 Automatisches Skalieren

Hans Haesler
  
Beiträge gesamt: 5818

8. Sep 2011, 12:54
Beitrag # 6 von 10
Beitrag ID: #479827
Bewertung:
(3701 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Fies,

bevor ich mich an die Arbeit machen werde:
- Weshalb muss das Dokument vergrössert werden?
- Müssen die Rahmen-Inhalte des vergrösserten Dokuments editierbar sein?
- Würde es nicht reichen, eine PDF-Datei zu erzeugen und sie in ein grösseres Dokument zu importieren?

Gruss, Hans


als Antwort auf: [#479815]

ID CS4 Automatisches Skalieren

TMA
Beiträge gesamt: 384

9. Sep 2011, 07:55
Beitrag # 7 von 10
Beitrag ID: #479884
Bewertung:
(3664 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] - Würde es nicht reichen, eine PDF-Datei zu erzeugen und sie in ein grösseres Dokument zu importieren?


Genauso würde ich es auch machen. Oder direkt vergrößert schicken (drucken).

Alles andere würde ich nicht empfehlen. Der Aufwand und die Fehlerquellen (z.B. evtl. Textumbruch, Rahmenversprung, etc.) sind einfach zu groß.

Es gibt auch eine Extension von Gluon die sich ProScale nennt:
http://www.gluon.com/product-proscale.html

Gruß
TMA


als Antwort auf: [#479827]

ID CS4 Automatisches Skalieren

Hans Haesler
  
Beiträge gesamt: 5818

9. Sep 2011, 22:39
Beitrag # 8 von 10
Beitrag ID: #479965
Bewertung:
(3633 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Fies,

hier ist eine erste Version des Scripts. Mit dem Testdokument, welches Du mir freundlicherweise gesandt hast, funktioniert es gut.

Bedingung: Die leeren Rahmen, welche sich ausserhalb der Seite befinden, müssen gelöscht werden. Sonst verfälschen sie das Resultat.

Für interessierte Mitleser: Das Dokument muss nach der Vergrösserung editierbar bleiben.

Code
tell application "Adobe InDesign CS4" 
activate

-- prüfen, ob ein Dokument offen ist
if not (exists document 1) then
display dialog "Bitte ein Dokument öffnen." buttons "OK" default button 1 with icon 2
error number -128
end if

tell layout window 1
-- den aktuellen Referenzpunkt speichern ...
set curRefPoint to transform reference point
-- ... und ihn auf "Mitte" stellen
set transform reference point to center anchor
end tell

tell document 1
-- die aktive Ebene feststellen, damit diese am Schluss wieder aktiviert werden kann
set actLayer to active layer of layout window 1
-- den Zustand der Ebenen notieren
set propsList to {}
repeat with k from 1 to count of layers
set active layer of layout window 1 to layer k
tell layer k
set curProps to {visible, locked}
set end of propsList to curProps
set properties to {visible:true, locked:false}
end tell
-- einen temporären Rahmen über die ganze Doppelseite aufziehen
set tmpFrame to make rectangle at beginning with properties ¬
{geometric bounds:{"0mm", "0mm", "335mm", "480mm"}, stroke weight:0, fill color:"None", label:"t-m-p"}
tell layer k
set properties to {visible:false, locked:false}
end tell
end repeat

-- das Dokument vergrössern
tell document preferences
set properties to {page width:"307mm", page height:"420mm"}
end tell

-- eine Schleife durch die Ebenen
repeat with k from 1 to count of layers
set properties of layer k to {visible:true}
set locked of every page item of layer k to false
set active layer of layout window 1 to layer k
-- eine neue Gruppe mit allen Objekten der aktuellen Ebene erzeugen
make group with properties {group items:(every page item of layer k)}
-- die Gruppe skalieren
tell group 1 of layer k
set properties to {horizontal scale:126.7, vertical scale:126.7}
end tell
-- die Gruppe entgruppieren ...
try
tell group 1 of layer k to ungroup
-- ... und das temporäre Rechteck löschen
delete page item "t-m-p" of layer k
end try
end repeat
end tell

-- den Referenzpunkt zurücksetzen ...
tell layout window 1
set transform reference point to curRefPoint
end tell

-- eine letzte Schleife durch die Ebenen und die alten Zustand wiederherstellen
tell document 1
repeat with k from 1 to count of layers
tell layer k
set curProps to {visible, locked}
set end of propsList to curProps
set curVis to item 1 of item k of propsList
set curLck to item 2 of item k of propsList
set properties to {visible:curVis, locked:curLck}
end tell
end repeat
set actLayer to active layer of layout window 1
end tell

-- das Ende der Aktion verkünden
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell

Nun hoffe ich, dass diese Version bereits brauchbar sein wird.

Gruss, Hans


als Antwort auf: [#479815]

ID CS4 Automatisches Skalieren

OnkelFies
Beiträge gesamt: 4

12. Sep 2011, 09:49
Beitrag # 9 von 10
Beitrag ID: #480038
Bewertung:
(3568 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Perfekt, vielen dank!

Hatte am Wochenende nicht die Gelegenheit es auszuprobieren, war aber das erste das ich gerade gemacht habe.

Eine kleine Frage hätte ich allerdings noch, ist es vlt. noch möglich, abspeichern mit _QR zu integrieren oder ist es eventuell sinnvoller lieber das Skript durchlaufen zu lassen und direkt zu kontrollieren ob alles gut gegangen ist und dann manuell speichern?

Ich bin jedenfalls restlos begeistert.

VG,
Fies


als Antwort auf: [#479965]

ID CS4 Automatisches Skalieren

Hans Haesler
  
Beiträge gesamt: 5818

12. Sep 2011, 10:15
Beitrag # 10 von 10
Beitrag ID: #480044
Bewertung:
(3557 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Fies,

bitteschön.

Das Abspeichern mit "_QR" sowie weitere Ergänzungen hatte ich für die zweite Version vorgesehen. Nachdem eine positive Rückmeldung von Dir eingetroffen ist. Das ist jetzt der Fall, deshalb werde ich mit einer weiteren Mitteilung diese zweite Version, welche soeben fertig geworden ist, zustellen.

Als weitere Ergänzungen habe ich eingefügt, dass geprüft wird, ob das Dokument gespeichert ist. Und dass die Masseinheiten stimmen. Und auch, dass das Seitenformat dem erwarteten entspricht (damit ein skaliertes Dokument nicht ein zweites Mal behandelt werden kann). Und dass nur ein Druckbogen, aber mit zwei Seiten vorhanden ist.

Die verwendeten Werte werden nun zu Beginn des Scripts in Variablen gegeben. Bei einer Änderung der Vorgaben können sie somit leichter angepasst werden.

Code
(* 
Skalieren_402d
Dieses Script vergrössert ein Dokument auf 307 x 420 mm und skaliert die Objekte auf 126.7%
© 12.09.11 / Hans Häsler, Châtelard 52, CH-1018 Lausanne / E-mail: [email protected]
*)

-- die Seitenbreite des Originaldokuments
set oldWidth to 240
-- die Seitenhöhe des Originaldokuments
set oldHeight to 335
-- die neue Seitenbreite
set newWidth to 307
-- die neue Seitenhöhe
set newHeight to 420
-- der horizontale Skalierungsfaktor
set horScale to 126.7
-- der vertikale Skalierungsfaktor
set verScale to 126.7
-- die Ergänzung des Dateinamens
set docNamePlus to "_QR"

-- ein paar Variablen als "global" deklarieren
global pW
global pH
global hMes
global vMes

tell application "Adobe InDesign CS4"
activate

-- prüfen, ob ein Dokument offen ist
if not (exists document 1) then
display dialog "Bitte ein Dokument öffnen." buttons "OK" default button 1 with icon 2
error number -128
end if

-- den Pfad und den Namen speichern und den neuen Pfad zusammensetzen
tell document 1
try
set folderPath to file path
set docName to name
if docName ends with ".indd" then
set docName to text 1 thru -6 of docName
end if
set newPath to (folderPath & docName & docNamePlus & ".indd") as string
on error
display dialog "Das Dokument zuerst speichern." buttons "OK" default button 1 with icon 0
error number -128
end try

-- die Masseinheiten prüfen und ändern (falls notwendig)
tell view preferences
set hMes to horizontal measurement units
set vMes to vertical measurement units
if hMes is not millimeters or vMes is not millimeters then
set properties to {horizontal measurement units:millimeters, vertical measurement units:millimeters}
end if
end tell

tell document preferences
-- das Dokument muss doppelseitig sein
if facing pages is false then
my restoreMeasurements()
display dialog "Das Dokument ist nicht doppelseitig angelegt." buttons "OK" default button 1 with icon 0
error number -128
end if
-- sicherstellen, dass die Grösse der Seite den definieren Werten entspricht
if page width is not oldWidth or page height is not oldHeight then
my restoreMeasurements()
display dialog "Die Seitengrösse des Dokuments
ist nicht " & oldWidth & " x " & oldHeight & " mm." buttons ¬
"OK" default button 1 with icon 0
error number -128
end if
end tell

-- sicherstellen, dass nur *eine* Doppelseite vorhanden ist
if (count of spreads) is 1 then
if (count of pages of spread 1) is not 2 then
my restoreMeasurements()
display dialog "Der Druckbogen muss *zwei* Seiten enthalten." buttons "OK" default button 1 with icon 0
error number -128
end if
else
my restoreMeasurements()
display dialog "Es darf nur *ein* Druckbogen vorhanden sein." buttons "OK" default button 1 with icon 0
error number -128
end if

-- den Nullpunkt auf [0,0] setzen
set zero point to [0, 0]

tell layout window 1
-- den aktuellen Referenzpunkt speichern ...
set curRefPoint to transform reference point
-- ... und ihn auf "Mitte" stellen
set transform reference point to center anchor
end tell

-- die aktive Ebene feststellen, damit diese am Schluss wieder aktiviert werden kann
set actLayer to active layer of layout window 1
-- den Zustand der Ebenen notieren
set propsList to {}
repeat with k from 1 to count of layers
set active layer of layout window 1 to layer k
tell layer k
set curProps to {visible, locked}
set end of propsList to curProps
set properties to {visible:true, locked:false}
end tell
-- einen temporären Rahmen über die ganze Doppelseite aufziehen
set tmpFrame to make rectangle at beginning with properties ¬
{geometric bounds:{0, 0, oldWidth, oldHeight}, stroke weight:0, fill color:"None", label:"t-m-p"}
tell layer k
set properties to {visible:false}
end tell
end repeat

-- das Dokument vergrössern
tell document preferences
set properties to {page width:newWidth, page height:newHeight}
end tell

-- eine Schleife durch die Ebenen
repeat with k from 1 to count of layers
set properties of layer k to {visible:true}
set locked of every page item of layer k to false
set active layer of layout window 1 to layer k
-- eine neue Gruppe mit allen Objekten der aktuellen Ebene erzeugen
try
make group with properties {group items:(every page item of layer k)}
-- die Gruppe skalieren
tell group 1 of layer k
set properties to {horizontal scale:horScale, vertical scale:verScale}
end tell
-- die Gruppe entgruppieren ...
tell group 1 of layer k to ungroup
end try
-- ... und das temporäre Rechteck löschen
delete page item "t-m-p" of layer k
end repeat
end tell

-- den Referenzpunkt zurücksetzen ...
tell document 1
tell layout window 1
set transform reference point to curRefPoint
end tell
end tell

-- eine letzte Schleife durch die Ebenen und die alten Zustand wiederherstellen
tell document 1
repeat with k from 1 to count of layers
tell layer k
set curVis to item 1 of item k of propsList
set curLck to item 2 of item k of propsList
set properties to {visible:curVis, locked:curLck}
end tell
end repeat
set actLayer to active layer of layout window 1
end tell

-- das Dokument unter dem neuen Namen speichern
save document 1 to newPath

-- das Ende der Aktion verkünden
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell

-- der Handler, welcher die Masseinheiten zurücksetzt (falls notwendig)
on restoreMeasurements()
tell document 1 of application "Adobe InDesign CS4"
tell view preferences
if hMes is not millimeters or vMes is not millimeters then
set properties to {horizontal measurement units:hMes, vertical measurement units:vMes}
end if
end tell
end tell
end restoreMeasurements

Gruss, Hans


als Antwort auf: [#480038]
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/