Forenindex » Programmierung/Entwicklung » AppleScript » Automatisierter Bildaufbau ...

Automatisierter Bildaufbau ...

swish
Beiträge gesamt: 75

7. Apr 2004, 11:18
Bewertung:

gelesen: 2066

Beitrag als Lesezeichen
Hallo,

gibt es eine schnelle und einfache Möglichkeit ein Script zu erstellen, welches aus einem bestimmten Ordner eine Bildliste öffnet und diese Bilder mit Dateiname in XPress aufbaut? Also einfach nur ein Bildrahmen und einen Textrahmen füllen ....

Die Bildliste enthält die Pfadangaben der Bilddaten in der üblichen Form :
Servervolume:Ordner1:Ordner2:bildname.tif
Servervolume:Ordner1:Ordner3:bildname2.tif
Servervolume:Ordner1:Ordner2:bildname3.tif
...
Servervolume:Ordner1:Ordner2.tif

Bin leider ein blutiger AppleScriptanfänger und deshalb noch nicht viel weiter als

on open FileList  ...

Gruß,

Stephan Wissing

Automatisierter Bildaufbau ...

Hans Haesler
  
Beiträge gesamt: 5826

7. Apr 2004, 13:28
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
Hallo Stephan,

solch ein Script ist relativ schnell und einfach zu entwickeln. Ich kann es für Dich schreiben. Und noch mit Kommentaren versehen, damit Du den Durchblick bekommst. :-)

Aber ich sollte noch einige Angaben haben. Welche XPress-Version? Welches Mac OS? Welche Version von AppleScript? Die zwei ersten Fragen sind leicht zu beantworten. Die Version von AppleScript findet man so heraus: in einem neuen Fenster des Editors das Wort 'version' eingetippen (ohne Anführungszeichen) und das Script ausführt. Im Ergebnisfenster steht dann vermutlich ein "D", gefolgt von Ziffern. Wenn diese Textkette mit '1.6' endet oder mit '1.8.3' oder höher, dann ist alles in Ordnung. Wenn es aber '1.7' ist, muss das AppleScript-System angepasst werden, sonst kommt das Script mit den Bildpfaden nicht klar.

Weiter: Sind die zu füllenden Bild- und Textboxen schon im Dokument vorhanden? Wieviele pro Seite? Ist die Bildliste eine Textdatei, welche Du per Drag & Drop auf dem Droplet deponieren möchtest (weil Du schreibst: 'on open FileList')? Ist die Anzahl Bilder konstant?

Bitte gib mir diese Infos durch, dann sehen wir weiter.

Hans Haesler <hsa@ringier.ch>

Automatisierter Bildaufbau ...

swish
Beiträge gesamt: 75

7. Apr 2004, 13:36
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
OS 9.2.2, Quark 4.11 und AS 1.8.3.
Es sollte ein neues Dokument entstehen.
Bilder pro Seie ist eigentlich völlig egal, aber ich denke 4 mal 4 wäre schön. Jeweils direkt unter dem Bild sollte dann ein Textrahmen mit dem Bildnamen stehen.
Die Bildliste ist eine reine Textdatei, die in der Länge völlig Variabel sein sollte.
Dann sollte das Script ständig aktiv sein - also als Hotfolder funktionieren, im Sinne von einem In und einem Out -Ordner.
An dieser Stelle wäre dann wohl auch eine Ordneraktion eher angebracht, oder ?

Vielen Dank schonmal im Voraus.

Automatisierter Bildaufbau ...

Hans Haesler
  
Beiträge gesamt: 5826

7. Apr 2004, 14:19
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
Hallo Stephan,

danke für die Infos. Im Script muss nun mal die Anzahl Bilder pro Seite definiert sein. Und damit die Sache möglichst effizient wird, sollte schon ein QuarkXPress-Formular vorbereitet sein. Auf der Musterseite werden die Bild- und Textboxen plaziert, am besten mit Namen versehen, damit man sie eindeutig adressieren kann.

Das Script öffnet die Liste der Bildpfade, zählt die Anzahl Bilder, fügt die entsprechenden Seiten ein, importiert die Bilder und setzt den Namen ein.

Würdest Du mir bitte ein XPress-Dokument zustellen, in welchem auf Seite 1 die Bild- und Textboxen plaziert sind? Und auch eine Bildlisten-Datei?

Wenn das Script dann funktioniert, kann man anschliessend versuchen, es als Ordneraktion einzusetzen.

Hans Haesler <hsa@ringier.ch>

Automatisierter Bildaufbau ...

Hans Haesler
  
Beiträge gesamt: 5826

8. Apr 2004, 00:18
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
Hallo Stephan,

eine erste Version des Scripts ist unterwegs. Nur so zum Prüfen, ob das Laden von Bildern funktioniert. Wenn ja, werde ich versuchen, das Script nach Deinen Wünschen weiterzuentwickeln.

Mit dieser ersten Version ist der Ablauf wie folgt:
1. Das beiliegende XPress-Formular öffnen.
2. Das Script im Skripteditoren öffnen und abspielen.

Ein Dialog lädt ein, die Bildliste zu wählen. Dann wird die Datei in den Speicher geladen. Die notwendige Anzahl Seiten wird eingefügt, mit Wiederholschleifen werden die Seiten adressiert, die Bilder geladen und deren Name in die Box darunter gesetzt.

Dieses Prinzip sollte leicht zu einem Droplet umfunktioniert werden können. Für den Ausbau in eine robuste Ordneraktion muss aber schon noch einiges investiert werden &#133;

Hans Haesler <hsa@ringier.ch>

Automatisierter Bildaufbau ...

Hans Haesler
  
Beiträge gesamt: 5826

13. Apr 2004, 12:52
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
Die Version 2 des Scripts leistet nun schon erheblich mehr. Es ist inzwischen aber auf 160 Zeilen (inkl. Kommentare) angewachsen. Zuviel, um es hier in voller Länge zu publizieren. Wer Interesse daran hat: ein Mail an mich genügt.

Nun ist es möglich, die Bilder in vorbereitete Dokumente mit 8 Bildern pro Seite (oder 4 oder 2 oder 1) zu importieren und bei jedem Bild den Namen darunter zu setzen.

Wieso vorbereitete Dokumente? Es wäre sehr schwierig, ein Dokument nach der Grösse der Bilder aufbauen zu lassen. Deshalb ist es einfacher, Templates vorzubereiten. Die Ausführung des Scripts ist auch schneller, weil es sich nicht um das Erzeugen und Positionieren der Boxen kümmern muss.

Wie aber "weiss" das Script, wieviele Bilder es pro Seite plazieren muss? Auf der Musterseite jedes Dokuments ist unterhalb der Seite eine kleine, benannte Grafikbox plaziert. Je nach Anzahl Bilder ist der Name entsprechend gewählt ("1" oder "2" oder "4" oder "8"). Das Script liest den Namen der Grafikbox in die Variable 'numPic'. Der Inhalt der Variable wird getestet und bei einer Übereinstimmung der Variablen 'nPic' als Zahl zugewiesen.
---
if numPic is in "1248" then
  set nPic to numPic as integer
---

Diese Variable 'nPic' wird gebraucht, um die notwendige Anzahl Seiten auszurechnen.
---
-- die Anzahl Absätze der Datei in die Variable 'paraCount' geben
set paraCount to (count of paragraphs of aString)
-- das Total der Absätze in die Anzahl Seiten umrechnen
set pageCount to ((paraCount + (nPic - 1)) div nPic)
---
Angenommen der Anwender hat ein Template mit 4 Bildern pro Seite geöffnet. Der Wert von 'nPic' ist demnach '4'. Weiter angenommen, in der Textdatei (welche die Pfade der Bilddateien enthält), sind 18 Absätze. Die Rechnung lautet demnach: set pageCount to ((18 + (4 - 1)) div 4). Das Resultat ist: total 5 Seiten.

Die Seiten werden eingefügt und anschliessend wird mit einer Repeatschleife das Importieren der Bilder und das Einfügen der Bildnamen vorgenommen.

Hans Haesler <hsa@ringier.ch>

Automatisierter Bildaufbau ...

swish
Beiträge gesamt: 75

30. Apr 2004, 16:17
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
so ... hat zwar etwas länger gedauert mit meiner Testphase, weil's zeitlich recht knapp war, aber ES FUNKTIONIERT perfekt.

Die Bilder werden nun von einer Datei eingelesen, die entweder 1LASTPATH.txt 2LASTPATH.txt 4LASTPATH.txt oder 8LASTPATH.txt heißt. Mit dem Präfix 1,2,4 oder 8 stellt das Script fest, wieviele Bilder auf eine Seite platziert werden. Die Musterseiten sind in einem Musterdokument gespeichert.
Das Skript schaut jetzt alle paar Sekunden nach, ob etwas in den generierten Hotfolder (per Ordneraktion zu einem solchen gemacht) gelegt wurde und kann sogar unterscheiden, ob die Datei auch wirklich eine Textdatei ist ...

Soviel, um nur kurz die Funktionsweise zu beschreiben ...

Vielen vielen vielen lieben Dank, Hans, dass Du soviel Zeit dafür investiert hast, mir nach nach ein immer besseres und perfekteres Skript zu programmieren !

Die besten Grüße,

Stephan

Automatisierter Bildaufbau ...

Hans Haesler
  
Beiträge gesamt: 5826

30. Apr 2004, 17:14
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
Hallo Stephan,

bitte sehr. Schön, dass es funktioniert. Es war für mich eine Herausforderung,
den optimalen Ablauf zu erdenken und in ein Script umzusetzen.

Kleine Korrektur Deiner Schilderung: Nicht das Script schaut nach, sondern der Finder.
Und nicht alle paar Sekunden, sondern andauernd. Sobald ein Objekt in den
Ordner gelangt, werden die Befehle &#150; welche im Script definiert sind &#150; ausgelöst.

Hans Haesler <hsa@ringier.ch>

Automatisierter Bildaufbau ...

Hans Haesler
  
Beiträge gesamt: 5826

30. Apr 2004, 20:17
Bewertung:

gelesen: 2065

Beitrag als Lesezeichen
Als Nachtrag ein kurzer Überblick, wie die definitive Version des Scripts funktioniert.

Ein Mac (OS 9.2.2) agiert als Server. Das Script mit der Ordneraktion befindet sich auf der Harddisk und wurde einem Ordner zugewiesen. Eine zweite Ordneraktion sorgt dafür, dass dieser Hotfolder nicht geschlossen werden kann (unter Mac OS 9.x überwacht der Finder nur geöffnete Ordner; seit Mac OS X 10.2.x sind die System Events dafür zuständig und fragen auch geschlossene Ordner ab, aber nur einmal in drei Sekunden).

Der Anwender legt eine Textdatei, welche von einer Datenbank generiert wurde, in den Hotfolder. Die Datei enthält nur die Pfade der Bilder, die er zuvor ausgewählt hat. Jede Datei heisst "LASTPATH.txt". Zu Beginn des Namens muss die Ziffer eingefügt werden, welche der gewünschten Anzahl Bilder pro Seite entspricht.

Die Ordneraktion fängt mit dem Prüfen der gedroppten Objekte an. Nicht-Text-Dateien (oder solche mit nicht korrektem Namen) und Ordner werden ignoriert. Wenn alles okay ist, wird die Textdatei eingelesen. Das Script stellt fest, wieviele Bilder zu importieren sind und wieviele pro Seite gewünscht sind. Danach wird die Datei in den Papierkorb verschoben und ein vorbereitetes XPress-Template geöffnet. Das Script hat unterdessen ausgerechnet, wieviele Seiten eingefügt werden müssen und löst diese Aktion aus.

Die Bilder werden importiert, die Namen der Bilder werden in die Textbox darunter gesetzt, das Dokument wird in einen Out-Folder gesichert. Weil die Anwender nicht am Automaten-Mac sitzen, macht es keinen Sinn, eventuelle Fehlermeldungen anzuzeigen. Diese werden in eine Textdatei geschrieben, welche ebenfalls im Out-Folder erscheint.

Die XPress-Dateien werden mit einer laufenden Nummer versehen. Von "001" wird hochgezählt. Damit dies gelingt, ist die Zählervariable als 'property' definiert. Das Rückstellen des Zählers könnte man durch das Öffnen des Scripts erreichen, indem man eine geringfügige Änderung (z.B. einen Zwischenraum einfügen) macht und wieder sichert. Es geht aber auch raffinierter: Wenn eine Textdatei namens "RESET" in den Hotfolder gelegt wird, "weiss" das Script, dass es den Zähler auf '1' zurückstellen soll und quittiert dies auch mit einer Meldung.

Hans Haesler <hsa@ringier.ch>