[GastForen Programmierung/Entwicklung AppleScript Feindaten für Ausgabe sammeln (Helios OPI)

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

Feindaten für Ausgabe sammeln (Helios OPI)

Anonym
Beiträge gesamt: 22827

10. Jan 2006, 14:42
Beitrag # 1 von 56
Bewertung:
(5452 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

nachdem ich jetzt schon mehrere Scripte mir über dieses Thema angeschaut habe bin ich der meinung ein passendes Script für meine bedürfnisse müsste machbar sein.

Nur alleine Schaffe ich es leider nicht. Vieleicht kann mir ja jemand sagen ob das was ich will überhaupt geht in meinem Fall und mir evtl auch weiterhelfen.



Und zwar hätte ich gern ein kleines Script auf das ich einfach z.b. mein qxd Dokument ziehe und dieses Script mich dann fragt wohin es die Feindaten legen soll :-) Ich weiß einfacher gesagt als getan.



Wie gesagt wir verwenden Helios OPI.
Und bei uns sieht die Ordner Strucktur so aus:

z.b. 


Ansichtskarte
  -Bilddaten
      schnee.tif
      himmel.tif
      -layouts
        schnee.tif
        himmel.tif
  -Composing
      Ansichtskarte.qxd
  -Logos
      wappen.eps
      -layouts
          wappen.eps



Also es ist so das in dem Ordner wo die Feindaten liegen der Ordner Layouts liegt in dem die Grobdaten liegen mit dem das Dokument vergnüpt ist. Aber Natürlich kommt es auch vor das manche Dokumente zum Teil mit Fein und zum anderen Teil mit Grobdaten vergnüpft sind. "Mitarbeiteraufdiefingerhau"


Es müsste also Irgendwie die vergnüpten Pfade aus Quark ausgelesen werden. Enthält dieser Pfad einen Ordner Layouts ist das Feinbild eine Kategorie drüber. Enthält der Pfad keinen Ordner Layouts ist das Vergnüpfte Bild der Feindatenbestand.


Geht das??? Wäre lieb wenn ich da irgendwie weiterkomme. Weiß echt noch net wie ich das lösen kann.


Gruß Jörg

X

Feindaten für Ausgabe sammeln (Helios OPI)

TMA
Beiträge gesamt: 399

10. Jan 2006, 16:11
Beitrag # 2 von 56
Beitrag ID: #420621
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörg, hiermit gehts. Natürlich ohne Gewähr. Verknüpfungen müssen in XPress auf OK stehen. Dieses Script ist für XPress 6.5 gedacht. Falls du mit 4 oder 5 in der Classic-Umgebung arbeitest, nimm die activates aus dem Script raus. (kommt nicht so gut mit classic)

[code:1]
global destinationFolder

on Initialize()
 set my text item delimiters to ""
 set destinationFolder to choose folder with prompt "Bitte Zielordner wählen"
end Initialize


on Finalize()
 tell application "Finder"
  activate
  display dialog "Fertig!"
 end tell
end Finalize


on ProcessAFileOrFolder(theFile)
 set theFileInfo to info for theFile
 if folder of theFileInfo then
  ScanAFolder(theFile)
 else
  ProcessAFile(theFile)
 end if
end ProcessAFileOrFolder


on ScanAFolder(theFolder)
 set fileNames to list folder theFolder
 repeat with aFile in fileNames
  set theFile to (theFolder as string) & contents of aFile
  ProcessAFileOrFolder(alias theFile)
 end repeat
end ScanAFolder


on open of filesList
 Initialize()
 repeat with aFile in filesList
  ProcessAFileOrFolder(contents of aFile)
 end repeat
 Finalize()
end open


on run
 set theFolder to choose folder with prompt "Select folder to scan:"
 Initialize()
 ScanAFolder(theFolder)
 Finalize()
end run


on ProcessAFile(theFile)
 tell application "QuarkXPress Passport"
  activate
  try
   close every document
  end try
  try
   open theFile remap fonts no use doc prefs yes
  on error
   tell application "Finder"
    display dialog ("Die Datei " & name of theFile as string) & " konnte nicht geöffnet werden"
    return
   end tell
  end try
  tell front document
   set picBoxcount to count every picture box
   repeat with i from 1 to picBoxcount
    tell image 1 of picture box i
     if not missing then
      try
       if (file path as string) ? "null" then
        set theFileToWork to (file path as string)
        tell application "Finder"
         if exists file theFileToWork then
          set fileName to name of file theFileToWork
          if name of parent of file theFileToWork = "layouts" then
           set tmpFoldert to parent of parent of file theFileToWork as string
           if exists file (tmpFoldert & fileName as string) then
            set the highFile to (tmpFoldert & fileName as string)
           else
            set tmpList to (every file of folder tmpFoldert whose name starts with (my suffixDel(fileName as string) as string))
            if tmpList ? {} then
             set the highFile to item 1 of tmpList as string
            else
             set highFile to false
            end if
           end if
          else
           set the highFile to theFileToWork
          end if
          if highFile ? false then
           duplicate file (highFile as string) to folder (my destinationFolder as string) without replacing
          end if
         end if
        end tell
       end if
      end try
     end if
    end tell
   end repeat
   try
    close without saving
   end try
  end tell
 end tell
end ProcessAFile


on suffixDel(i)
 set text item delimiters of me to ""
 set i to i as string
 if i contains "." then
  set my text item delimiters to "."
  set i to every text item of i
  if (count of every character of (last item of i as string)) ? 4 then
   set i to (items 1 thru -2 of i) as string
   set my text item delimiters to ""
   return i
  else
   set i to i as string
   set text item delimiters of me to ""
   return i
  end if
 else
  return i
 end if
end suffixDel
[/code:1]

Die Fragezeichen bitte durch ein Ungleich-Zeichen ersetzen (Alt-0)

Gruß
TMA


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Hans Haesler
  
Beiträge gesamt: 5826

10. Jan 2006, 22:53
Beitrag # 3 von 56
Beitrag ID: #420622
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,

vielen Dank, für das Posten Deiner Lösung! :-)

Ein Tip: Das Konvertierungs-Problem des Ungleich-Zeichen kann vermieden werden, indem man es ausschreibt: 'is not'.
Ich glaube Dir gerne, dass es mit diesem Script "geht". Aber es gibt ein paar Dinge, welche verbessert werden sollten.

Statt zuerst einer Variablen die Anzahl Bildboxen zuzuweisen ...
         set picBoxcount to count every picture box
         repeat with i from 1 to picBoxcount


... kann man direkt loslegen:
         repeat with i from 1 to count every picture box

Dabei werden die Boxen auch nur einmal gezählt und der Endwert wird gespeichert.

Bei den folgenden zwei Zeilen wird zweimal der Pfad zur Bilddatei verlangt:
                     if (file path as string) is not "null" then
                        set theFileToWork to (file path as string)


Besser wäre diese Form:
                     set theFileToWork to (file path as string)
                     if theFileToWork is not "null" then


Zuerst den Pfad speichern und dann testen.

Wichtiger wäre aber, dass auch getestet würde, ob hinter dem Bild eine Diskdatei ist oder nicht. In letzterem Fall wird der
Pfad mit "no disk file" zurückgegeben. Das bedeutet, dass das Bild nicht geladen wurde, sondern ein eingesetztes Pict-File ist.

Und jetzt kommen wir zum Finder-tell-Block und dies innerhalb des 'tell application "QuarkXPress Passport'-Blocks.
Obwohl sowas funktioniert, sollte eine solche Verschachtelung vermieden werden. Und der Finder sollte nur
eingesetzt werden, wenn es nicht anders geht. Und dann immer nur mit einzeiligen Anweisungen. Warum? Weil der
Finder ständig überall aufpassen muss, ist seine Reaktionszeit nicht besonders. Deshalb ist es effizienter,
das Vorhandensein einer Datei so zu prüfen:
try
   alias theFileToWork
on error
   -- die Datei existiert nicht
end try


Wie gesagt, ohne Finder. Aber auch ausserhalb des XPress-Blocks, in einem Handler.

übrigens: Es macht keinen Sinn, das Vorhandensein der niedrigaufgelösten Datei zu testen, wenn man nur
an der hochaufgelösten interessiert ist.

Das Feststellen, ob ein "layouts"-Ordner im Spiel ist, kann sehr wohl mit 'parent' (oder 'container') durchgeführt werden.
Aber ich ziehe das Hantieren mit 'text items' vor. Schon nur, weil man dadurch den Finder nicht benötigt.

Der nächste Problembefehl ist so verschachtelt, dass ich nicht glaubte, dass die Fortsetzung funktioniert.
set tmpList to (every file of folder tmpFoldert whose name starts with (my suffixDel(fileName as string) as string))

Darin wird im Handler-Aufruf 'suffixDel' der Dateiname (welcher schon ein String ist), nochmals zur Textkette
konvertiert. Und – um ganz sicher zu gehen – im Handler selbst nochmals: 'set i to i as string' ...

Weil am Ende des langen Befehls nochmals 'as string' steht, war ich sicher, dass die Liste 'tmpList' zur
unbrauchbaren Textkette konvertiert würde. Dem ist aber nicht so: 'item 1 of tmpList' ist ein valabler Pfad
(ein Textketten-Pfad, welcher erneut in eine Textkette umgewandelt wird). Dennoch: Der Zweck der übung ist nicht
ganz durchsichtig. Es sieht aus wie ein Versuch, an eine Datei zu kommen, wenn die Suffizes der Hi-res- und
Low-res-Files nicht übereinstimmen. Und wieder wird der Finder eingespannt.

Und beim Kopieren wird derselbe Textketten-Pfad nochmals in eine Textkette umgewandelt:
duplicate file (highFile as string) to folder (my destinationFolder as string) without replacing

Was mich auch stört, ist die Verwendung des Präfixes 'the' in den Variablen-Namen. Diese Problematik wird
durch die folgende Zeile "schön" illustriert:
set the highFile to theFileToWork

Das erste the ist ein reservierter Ausdruck, welcher hier eigentlich nicht benötigt wird. Und auch das folgende the
wurde der besseren Lesbarkeit wegen eingefügt. Wenn aber irrtümlicherweise ein Zwischenraum dahintergerät, ist
plötzlich die (neue) Variable FileToWork nicht definiert.

Genug kritisiert. Ich habe vor Jahren ein Script entwickelt, welches in unserer Produktion immer noch
eingesetzt wird. Von diesem Script habe ich letztes Jahr eine Spezialversion gemacht, welches die Bilder
eines XPress-Layouts sammelt und zwar seitenweise. Ein Fortschrittsbalken samt Statuszeile informieren ständig
über das Geschehen. Wenn ein Bild nicht gefunden wurde, wird eine Rapportdatei ergänzt.

Siehe http://www.page-online.de/page/forum/viewthread/2744 / Thema "seitenweiser automatischer Bildexport aus
qxd-dokument". Wie aus dem damaligen Austausch hervorgeht, müsste das Behandeln von Layoutdateien zuerst
eingebaut werden. Also: Falls Interesse daran besteht, bitte melden!

Gruss, Hans


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

TMA
Beiträge gesamt: 399

11. Jan 2006, 08:43
Beitrag # 4 von 56
Beitrag ID: #420623
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Hans,
erstmal danke für die Infos.

Das gepostete Script ist eine abgespeckte Version von dem was wir hier einsetzen, daher ist in dieser Version was doppelt oder unnötig kompliziert.

Das mit dem Finder-tell-Block innerhalb anderer Applikationen sollte ich nochmal überdenken. Bisher hab ich es immer so gemacht. Ohne Probleme.

Variablen öfter als string zu setzen bereitet keinerlei Probleme. Besser 2x zuviel wie 1x zuwenig. Wenn ich halt grad mal nicht weis ob eine Variable ein string ist wird sie einfach als string gesetzt, schadet nicht.

Wie du richtig erkannt hast, wird wirklich versucht an eine Datei zu kommen deren Suffix von High und Low File unterschiedlich ist. Wie gesagt dieses Script ist abgespeckt und ich hab hier verschiedene Suffixe. Muss ich allerdings noch ändern, da immer nur das erste item aus "tmpList" genommen wird.

Sinnvolle Variablen-Benennung ist natürlich wichtig. Da hast du mich erwischt wie ich dummerweise das "the" in einem Variablen-Namen benutzt habe. Soll nicht wieder vorkommen...

Dein Sammel-Script schau ich mir mal.

Noch was anderes: Wenn du deinen Code hier reinsetzt (so mit versch. Farben und Formatierungen), wie gehtn das? Hast du da ne Automatisierung für? Kann mir nicht vorstellen das du alles mit BBCode von Hand formatierst?

Gruß und noch einen schönen Tag wünscht
TMA


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Anonym
Beiträge gesamt: 22827

11. Jan 2006, 09:38
Beitrag # 5 von 56
Beitrag ID: #420624
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
erstmal Vielen dank für eure schnelle Hilfe. Der Code den mir TMA gegeben hat funktioniert soweit wie ich es getestet habe sehr gut :-)

Nun habe ich noch die frage ob es möglich ist auch die verwendeten Schriften zu sammeln?


Und wie sieht es mit Indesign aus? gibt es dafür auch schon einen Code um die Daten zu sammel? Wenn ja ist es möglich dies mit dem Quark Code in ein Prog. zu setzen wo das Script erst Prüft ob das Dokument ein ind oder ein qxd ist und dann entsprechend die Daten und Schriften sammelt?



Grüße Jörg
Und danke nochmal für den Code :-))


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

TMA
Beiträge gesamt: 399

11. Jan 2006, 09:53
Beitrag # 6 von 56
Beitrag ID: #420625
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Welche InDesign Version benutzt du denn? CS1 oder CS2?

Zum Schriften sammeln hätte ich leider nichts.

Gruß
TMA


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2006, 09:57
Beitrag # 7 von 56
Beitrag ID: #420626
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,

dass die verschachtelten tell-app-Blöcke bisher keine Probleme bereitet haben, glaube ich Dir gerne. Aber es könnte mal
die Ursache eines Problems sein. Auf jeden Fall ist es nicht effizient, dem XPress zu sagen es solle den Finder bitten ...

A propos Finder: Wie schon erwähnt, sollte dieser nur eingesetzt werden, wenn es nicht anders geht. Im vorliegenden
Script ist dies nur beim Kopieren der Dateien der Fall.

Mein Sammel-Script ist noch nicht greifbar. Ich muss es erst mit der Lay-Dateien-Behandlung ausstatten und so umschreiben,
dass es nur einen Ordner pro Projekt anlegt. Es sei denn, der Jörg wünsche eine seitenweise Sammlung der Dateien. Auf jeden
Fall kann ich es nicht vor heute Abend anpacken.

Für die Formatierung des geposteten Codes benutze ich eine abgewandelte Version von Peter Fischer's
"CodeFormatter 3.0", den Du auf seiner Web-Site findest: http://www.fischer-bayern.de/applescript/html/as_down.html
Aber auch die Scripting Addition "Satimage.osax" muss installiert sein. Und hier im Forum musst Du die Checkbox
"BBCode in diesem Beitrag deaktivieren" nicht aktiviert haben.

Der CodeFormatter ist ein AppleScript, welches den ausgewählten Text eines Scripts mit den notwendigen Codes versieht
und in die Zwischenablage kopiert. Dann muss man im zu postenden Text nur noch mit Befehl-V das Einsetzen vornehmen.
Den Wert von 'size' (= Schriftgrösse) habe ich im Script von 10 auf 12 geändert.

Weil nur das vorderste Scripteditor-Fenster beachtet wird, darf der CodeFormatter nicht ab Scripteditor gestartet werden.
Ich benutze dazu das Freeware-Hilfsprogramm "Spark", mit welchem man per Tastaturkürzel ein Script starten kann.

"Satimage.osax" und "Spark" findest Du hier: http://www.fachhefte / Link "AppleScripts", im Ordner "z_additions_os_x".
Die Spark-Stuffit-Datei heisst "Spark.sit" und enthält eine Anweisung, wie ein Kürzel zu einem Script erstellt wird.

Gruss, Hans


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

TMA
Beiträge gesamt: 399

11. Jan 2006, 09:58
Beitrag # 8 von 56
Beitrag ID: #420627
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Für CS1 tauscht du einfach diesen Handler aus:

[code:1]
on ProcessAFile(theFile)
 set theFile to theFile as string
 tell application "InDesign CS"
  set user interaction level to never interact
  activate
  try
   close every document
  end try
  try
   open file theFile
  on error
   tell application "Finder"
    display dialog ("Die Datei " & name of alias theFile as string) & " konnte nicht geöffnet werden"
    return
   end tell
  end try
  tell document 1
   if not (exists) then
    display dialog ("Kein Dokument geöffnet")
    return false
   end if
   set tmpList to {}
   set tmpList to every link
   repeat with theMissingLink in tmpList
    set theFileToWork to file path of theMissingLink as string
    tell application "Finder"
     if exists file theFileToWork then
      set fileName to name of file theFileToWork
      if name of parent of file theFileToWork = "layouts" then
       set tmpFoldert to parent of parent of file theFileToWork as string
       if exists file (tmpFoldert & fileName as string) then
        set the highFile to (tmpFoldert & fileName as string)
       else
        set tmpList to (every file of folder tmpFoldert whose name starts with (my suffixDel(fileName as string) as string))
        if tmpList ? {} then
         set the highFile to item 1 of tmpList as string
        else
         set highFile to false
        end if
       end if
      else
       set the highFile to theFileToWork
      end if
      if highFile ? false then
       duplicate file (highFile as string) to folder (my destinationFolder as string) with replacing
      end if
     end if
    end tell
   end repeat
   save
   close
   
  end tell
  set user interaction level to interact with all
 end tell
end ProcessAFile
[/code:1]

Bei CS2 funktioniert dieser Befehl nicht mehr:
[code:1]
set user interaction level to never interact
[/code:1]

Leider habe ich im Moment keine Lösung dafür. Hab grad sehr viel zu tun.

Gruß
TMA


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

TMA
Beiträge gesamt: 399

11. Jan 2006, 10:29
Beitrag # 9 von 56
Beitrag ID: #420628
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
danke für die Info mit dem CodeFormatter. Läuft super.

Gruß
TMA


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Anonym
Beiträge gesamt: 22827

11. Jan 2006, 11:35
Beitrag # 10 von 56
Beitrag ID: #420629
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
TMA:
Vilelen dank für den Indesign Code aber leider läüft der bei mir nicht.
Ich verwende Indesign 3.0.1. Probleme machen diese Zeilen

mit dem "set user interaction level to never interact " und die Zeile "set tmpList to every link"


:-( Dachte nur das 4.0 macht da probleme? Ich arbeite unter Tiger.


Hans:
Ja leider brauche ich alle Bilder aus dem Docu in einem Ordner und nicht nach Seiten sortiert.


Hast du eine Lösung um Schriften ebenfalls zu Sammeln???



thx
Jörg


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

TMA
Beiträge gesamt: 399

11. Jan 2006, 11:44
Beitrag # 11 von 56
Beitrag ID: #420630
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
seltsam.
da du vorher ja schon probleme hast mit der zeile
tell application "InDesign CS"
dürftest du ja gar nicht zu dieser zeile kommen:
set tmpList to every link

probier mal:
tell application "InDesign" und kompiliere dann. vielleicht heist die applikation ein wenig anders. mit .app oder 3.0.1?

seltsam. hab auch tiger 10.4.3 und InDesign 3.0.1 drauf. bei mir läufts.

Gruß
TMA


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2006, 13:22
Beitrag # 12 von 56
Beitrag ID: #420631
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörg,

okay. Ich werde heute Abend versuchen, mein Script zu anzupassen (obwohl Dir ja mit TMA's
Lösung gedient ist).

Zum Sammeln der Schriften: Ich habe mich vor Jahren mit diesem Problem befasst. Und keine
befriedigende Lösung gefunden.

Aber weil die Schriften unserer Zeitschriften nicht ständig gewechselt werden, konnte ich eine
generelle Lösung einsetzen. Die Schriften, welche benutzt werden, sind bei jeder Zeitschrift
auf dem eigenen Volume in einem Ordner untergebracht.

Die Bilder einer Wochenausgabe werden gesammelt. Für jedes XPress-Dokument wird in einem
Wochenordner ein Ordner erstellt und die Bilder und das XPress-Dokument hineinkopiert.

Dann wird ein anderes Droplet benutzt, um die Ordner zum Brennen der CDs vorzubereiten.
Dabei wird das Gewicht des Wochenordners geprüft. Wenn die Datenmenge auf eine CD passt,
wird der Schriften-Ordner der betreffenden Zeitschrift hineinkopiert. Somit sind die verwendeten
Schriften auch "gesammelt".

Falls der Wochenordner zu schwer ist, wird ein neuer Ordner angelegt und als erstes wird der
Schriften-Ordner hineinkopiert. Die einzelnen Ordner werden hineinverschoben bis zur Limite.
Dann wird ein neuer Ordner angelegt, der Schriften-Ordner wird hineinkopiert, die weiteren Ordner
hineinverschoben usw.

Gruss, Hans


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Anonym
Beiträge gesamt: 22827

11. Jan 2006, 15:09
Beitrag # 13 von 56
Beitrag ID: #420632
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans

bei uns läuft das leider ein bißchen unterschiedlich. Denn wir haben Unterschiedliche Arten von Schriften Ordner.

1. Variante z.b. für Kunden die immer verschiedene Schriften verwenden.
Job Spezifische Schriften Ordner. Auf einem anderen Server wie die Daten.

2.Variante für Kunden die eigentlich zu 98 % immer die selben Schriften verwenden.
Kunden Spezifische Schriften Ordner. Auf einem anderen Server wie die Daten.


bei Variante 1 wird der Schriften Ordner benannt mit dem Kundenkürzel und der Jobnummer. Z.b.  Apple78980
Das Quark oder Indd Dokument würde dann auch mit diesem Namen Anfangen
Z.b. Apple78980_Flyer.qxd

diese Ordner könnte man ja Automatisch Auslesen und in den Ordner Kopieren wo auch die Bilddaten hinkopiert werden. Und dann einfach den Ordner in Schriften umbennenen..

Das würde aber auch bedeuten das das Script Automatisch das Volume von unserem Font-Server Mounten muß und danach wieder Unmounten muß.

Bei Variante 2. Sprich wen das Script mithilfe Variante 1 nichts anfangen kann weil es auf dem Fontserver keinen Ordner passend zum Docu gibt. Müßte ein Fenster aufspringen wo der User Selbst den Ordner auswählt und dann macht den rest wieder das script.

So könnte ich es mir vorstellen. Ob das Möglich ist weiß ich nicht.


Mein bisheriges Script behandelt sowohl Quark als auch InDesign Dokumente und sieht so aus:

[code:1]
global destinationFolder

on Initialize()
 set my text item delimiters to ""
 set destinationFolder to choose folder with prompt "Bitte Zielordner wählen"
 set imageFolder to destinationFolder & "Bilddaten"
 set composingFolder to destinationFolder & "Composing" as string
 set fontFolder to destinationFolder & "Schriften" as string
 tell application "Finder"
  try
   make new folder at destinationFolder with properties {name:"Bilddaten"}
   make new folder at destinationFolder with properties {name:"Composing"}
   ---make new folder at destinationFolder with properties {name:"Schriften"}
  end try
 end tell
end Initialize


on Finalize()
 tell application "Finder"
  activate
  display dialog "Für Ausgabe Sammeln wurde erfolgreich beendet"
 end tell
end Finalize


on ProcessAFileOrFolder(theFile)
 set theFileInfo to info for theFile
 if folder of theFileInfo then
  ScanAFolder(theFile)
 else
  ProcessAFile(theFile)
 end if
end ProcessAFileOrFolder


on ScanAFolder(theFolder)
 set fileNames to list folder theFolder
 repeat with aFile in fileNames
  set theFile to (theFolder as string) & contents of aFile
  ProcessAFileOrFolder(alias theFile)
 end repeat
end ScanAFolder


on open of filesList
 Initialize()
 repeat with aFile in filesList
  ProcessAFileOrFolder(contents of aFile)
 end repeat
 Finalize()
end open


on run
 set theFolder to choose folder with prompt "Bitte Zielordner für die zu Zusammenstellung der Daten wählen:"
 Initialize()
 ScanAFolder(theFolder)
 Finalize()
end run


on ProcessAFile(theFile)
 tell application "Finder"
  set theCreator to the creator type of theFile
  duplicate file (theFile as string) to folder (destinationFolder & "Composing" as string)
 end tell
 if theCreator is "InDn" then
  --if (theFile as string) ends with ".indd" then
  -------------------------------------------------------------------------------------------Indesign-------------------------------------------------------------------------------------------------
  set theFile to theFile as string
  tell application "InDesign CS"
   set user interaction level to never interact
   try
    close every document
   end try
   try
    open file theFile
   on error
    tell application "Finder"
     display dialog ("Die Datei " & name of alias theFile as string) & " konnte nicht geöffnet werden"
     return
    end tell
   end try
   tell document 1
    if not (exists) then
     display dialog ("Kein Dokument geöffnet")
     return false
    end if
    set tmpList to {}
    set tmpList to every link
    repeat with theMissingLink in tmpList
     set theFileToWork to file path of theMissingLink as string
     tell application "Finder"
      if exists file theFileToWork then
       set filename to name of file theFileToWork
       if name of parent of file theFileToWork = "layouts" then
        set tmpFoldert to parent of parent of file theFileToWork as string
        if exists file (tmpFoldert & filename as string) then
         set the highFile to (tmpFoldert & filename as string)
        else
         set tmpList to (every file of folder tmpFoldert whose name starts with (my suffixDel(filename as string) as string))
         if tmpList ≠ {} then
          set the highFile to item 1 of tmpList as string
         else
          set highFile to false
         end if
        end if
       else
        set the highFile to theFileToWork
       end if
       if highFile ≠ false then
        duplicate file (highFile as string) to folder (my destinationFolder & "Bilddaten" as string) with replacing
       end if
      end if
     end tell
    end repeat
    save
    close
   
   end tell
   set user interaction level to interact with all
  end tell
 end if
 -------------------------------------------------------------------------------------------QuarkXPress Passport----------------------------------------------------------------------------
 if theCreator is "XPR3" then
  --if (theFile as string) ends with ".qxd" then
  tell application "QuarkXPress Passport"
   try
    close every document
   end try
   try
    open theFile remap fonts no use doc prefs yes
   on error
    tell application "Finder"
     display dialog ("Die Datei " & name of theFile as string) & " konnte nicht geöffnet werden"
     return
    end tell
   end try
   tell front document
    set picBoxcount to count every picture box
    repeat with i from 1 to picBoxcount
     tell image 1 of picture box i
      if not missing then
       try
        if (file path as string) ≠ "null" then
         set theFileToWork to (file path as string)
         tell application "Finder"
          if exists file theFileToWork then
           set filename to name of file theFileToWork
           if name of parent of file theFileToWork = "layouts" then
            set tmpFoldert to parent of parent of file theFileToWork as string
            if exists file (tmpFoldert & filename as string) then
             set the highFile to (tmpFoldert & filename as string)
            else
             set tmpList to (every file of folder tmpFoldert whose name starts with (my suffixDel(filename as string) as string))
             if tmpList ≠ {} then
              set the highFile to item 1 of tmpList as string
             else
              set highFile to false
             end if
            end if
           else
            set the highFile to theFileToWork
           end if
           if highFile ≠ false then
            duplicate file (highFile as string) to folder (my destinationFolder & "Bilddaten" as string) without replacing
           end if
          end if
         end tell
        end if
       end try
      end if
     end tell
    end repeat
    try
     close without saving
    end try
   end tell
  end tell
 end if
 
 
end ProcessAFile


on suffixDel(i)
 set text item delimiters of me to ""
 set i to i as string
 if i contains "." then
  set my text item delimiters to "."
  set i to every text item of i
  if (count of every character of (last item of i as string)) ≠ 4 then
   set i to (items 1 thru -2 of i) as string
   set my text item delimiters to ""
   return i
  else
   set i to i as string
   set text item delimiters of me to ""
   return i
  end if
 else
  return i
 end if
end suffixDel



gruss Jörg[/code:1]


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2006, 15:33
Beitrag # 14 von 56
Beitrag ID: #420633
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörg,

ich finde, es wäre viel einfacher, wenn der passende Schriften-Ordner manuell
zu den gesammelten Dateien herüberkopiert wird. Dann weiss man, was man hat.

Gruss, Hans


als Antwort auf: [#420620]

Feindaten für Ausgabe sammeln (Helios OPI)

Anonym
Beiträge gesamt: 22827

11. Jan 2006, 15:40
Beitrag # 15 von 56
Beitrag ID: #420634
Bewertung:
(5451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja klar ist es einfacher. Aber schlect wäre es trotzdem nicht. Aber ich denke auch das sich dafür der Aufwand nicht lohnen würde.

Schöne wäre es nur wenn ich noch einen Code für Illustrator hätte denn da gibt es ja überhaupt keine Möglichkeit Daten für die Ausgabe zu sammeln.


Hat diesen Code vieleicht schon jemand?


Gruss Jörg


als Antwort auf: [#420620]
X