Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Postscript mit Quark drucken - applescript synchronisieren

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MartinR
•->
•->


Anmeldedatum: 25.02.2007
Beiträge: 1
Wohnort: Friesenheim

BeitragVerfasst am: 27.03.2007 - 12:45    Titel: Postscript mit Quark drucken - applescript synchronisieren Antworten mit Zitat

Hallo Leute,
ich habe ein script geschrieben, das aus einer Quarkdatei ein PS-file erzeugt (s.u.). Das Unterprogramm setzt voraus, dass die Quarkdatei geöffnet ist und die Größe 206x43 mm hat. Das Bild in der Quarkdatei sollte für die testzwecke nich zu klein sein.
Folgendes Problem tritt auf:
Wenn ich die viertletzte Zeile "display dialog .." lösche und das Unterprogramm mehrfach aufrufe, stürzt Quark ab. Der Grund liegt offensichtlich darin, dass das PS geschrieben wird, aber das script nicht wartet bis das PS fertig ist. Erst durch Einfügen der Zeile "display dialog.." entsteht offensichtlich eine Synchronisation.

Gibt es einen Weg, zu erkennen wann das PS fertiggestellt ist, so dass die Fortsetzung des Scriptes hierauf warten könnte?

Hier der Quelltext des Unterprogrammes:

on DruckePS(FormDatnr, FileOrdner)

tell application "QuarkXPress Passport"
tell document 1
if FormDatnr < 10 then
set DatnrST to "000" & FormDatnr
end if
if (FormDatnr > 9) and (FormDatnr < 100) then
set DatnrST to "00" & FormDatnr
end if
if (FormDatnr > 99) then
set DatnrST to "0" & FormDatnr
end if

set DruckdateiMitPfad to FileOrdner & "Form" & DatnrST & ".ps"
set BreiteTXT to ((206) as string) & " mm"
set HoeheTXT to ((43) as string) & " mm"
set Auszuege to false

tell print setup
set orientation to portrait
set separation to false -- Auszuege
set print spreads to true --Montageflaechen
set printer type to "JV-2 for RIP"
set resolution to 720
set halftone screen to "80"
set data format to ASCII data
set page position to center horizontal
set paper width to BreiteTXT
set paper height to HoeheTXT
end tell
print PostScript file DruckdateiMitPfad
display dialog "fertig?"
end tell --document1
end tell --application
end DruckePS
_________________
Quark 6.5, OSX 10.4.8, 1.83 GHz Intel Core Duo, Script Debugger 4.0.4u (latenightsw.com) bzw. Skripteditor Vers.:2.1.1(81), Applescript 1.10.7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 27.03.2007 - 16:15    Titel: Antworten mit Zitat

Hi!
Du könntest versuchen, zu warten, bis die Postscript nicht mehr geschrieben wird. Ich habe mir mal folgenden Handler dafür überlegt:

on isBusy(aFileAlias)
   -- prüft, ob eine Datei busy ist
   try
      -- lsof liefert eine Liste der offenen Dateien (--> siehe "man lsof" im Terminal)
      do shell script "lsof " & quoted form of (POSIX path of aFileAlias)
      return true
   end try
   return false
end isBusy


Bei dir einbauen müsstest du es via
Code:
print PostScript file DruckdateiMitPfad
repeat while my isBusy(DruckdateiMitPfad)
delay 1
end repeat


Alternativ könntest du auch noch einen Extrahandler nutzen, z.B. (ungetestet)
on waitForNotBusy(aFileAlias, waitTimeout)
   -- wartet, bis eine Datei nicht mehr busy ist
   repeat waitTimeout times
      if isBusy(aFileAlias) then
         delay 1
      else
         exit repeat
      end if
   end repeat
end waitForNotBusy


und ihn via
Code:
print PostScript file DruckdateiMitPfad
my waitForNotBusy(DruckdateiMitPfad, 600)

aufrufen.

CU
ShooTerKo
_________________
"It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 29.03.2007 - 18:37    Titel: Antworten mit Zitat

Hi, ShooTerKo
Der Handler hat mir im Zusammenhang mit Acrobat schon gute Dienste geleistet (gleiches Problem mit Scriptfortsetzung, bevor fertig gedruckt wurde).
Hast Du den Handler auch schon mal im Zusammenhang mit Folder-Actions probiert? Ich denke da an das "after receiving", dass z.B. nicht funktioniert, wenn der Action-Folder auf einem Server liegt.
_________________
- anholn deit kriegen -


Zuletzt bearbeitet von iScript am 29.03.2007 - 18:39, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 30.03.2007 - 10:05    Titel: Antworten mit Zitat

Ja, habe ich!
Allerdings nicht direkt mit Folder Actions, sondern mit einem Programm, welches idlet (sagt man das so?). Also alle 60 Sekunden in einen Ordner schaut. Findet es eine Datei, so wartet es mit obigem Handler, bis die Datei nicht mehr in Verwendung ist und verwendet sie dann erst.

Exclamation Allerdings musste ich bei eigenen Tests feststellen, dass beim Kopieren einer größeren Datei von dem Rechner, auf dem auch das Script lief hin zu dem Server, auf dem der beobachtete Ordner liegt, bei einem niedrigeren delay im warte-Handler manchmal einen Kopierfehler verursacht hat. In meinem speziellen Fall konnte ich den Fehler nicht generieren, wenn jemand anders im Netz eine große Datei kopierte, sondern nur von dem Rechner aus, auf dem Script läuft. Vorsichtshalber läuft es deshalb produktiv mit einem delay von 5 Sekunden, seitdem hatte ich NIE Probleme (zumindest nicht mit diesem Handler Wink )

CU
ShooTerKo
_________________
"It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 30.03.2007 - 10:32    Titel: Antworten mit Zitat

ShooTerKo hat Folgendes geschrieben:
Ja, habe ich!
Allerdings nicht direkt mit Folder Actions, sondern mit einem Programm, welches idlet (sagt man das so?).

Ist das ein Applescript mit "on idle"-handler oder ein anderes Programm?
Da die Folder-Actions doch immer recht zickig sind, würd' ich auch gern mal soetwas ausprobieren.
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 30.03.2007 - 10:45    Titel: Antworten mit Zitat

Ja, genau!
Der Return-Wert gibt dann an, wie lange gewartet werden soll, z.B. return 60 heisst, dass jede Minute der idle-Handler aufgerufen wird.

CU
ShooTerKo
_________________
"It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter