[GastForen Programmierung/Entwicklung AppleScript PostScript aus Quark 7.3 per AS

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

PostScript aus Quark 7.3 per AS

selcuk
Beiträge gesamt: 29

5. Aug 2008, 11:59
Beitrag # 1 von 6
Bewertung:
(1080 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin moin,

ich habe eine Anfrage bezüglich der im Titel stehender Aufgabe.

Im Prinzip möchte ich "ganz einfach" ein geöffnetes doppelseitiges Dokument als PostScript exportieren.

Manuell gehe ich nämlich so vor:

Ablage->Exportieren->Layout als PDF
danach bekomme ich den Dialog "Als PDF exportieren".
Ich belasse den Pfad so wie er ist und drücke zusätzlich auf "Optionen" um die gewünschten Einstellungen vorzunehmen.

Die Einstellungen sind folgende:

Seiten-> nur "Seiten als separate PDF-Dateien exportieren" selektieren
Hyperlinks-> "Hyperlinks einschließen" deselektieren

Mehr nicht...

Zudem müsst Ihr wissen, dass ich immer nur eine Doppelseite von einem Katalog öffnen kann und jedes mal die Maus "rumzuschubsen" bei mehr als 400 Seiten muss das ja vielleicht nicht sein.

Hat hier jemand eine Idee, wie man es lösen kann?
Die Suche hat mir leider keine Ergebnisse liefern können

Vielen Dank für die Mühe schon mal.

Gruß
Selcuk
X

PostScript aus Quark 7.3 per AS

Hans Haesler
  
Beiträge gesamt: 5818

6. Aug 2008, 07:44
Beitrag # 2 von 6
Beitrag ID: #422542
Bewertung:
(1079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Selcuk,

der PDF-Export ist nicht direkt scriptbar. Man muss UI-Scripting einsetzen.

Nach einigen Versuchen ist es mir gelungen, den Dialog zu öffnen und ein Layout zu exportieren. Klappt nur, wenn die Programmsprache "Englisch" ist.

Doch das Öffnen des Optionsdialoges will nicht funktionieren. Ich kann aber erst  heute Abend weiterforschen.

Gruss, Hans


als Antwort auf: [#422541]

PostScript aus Quark 7.3 per AS

selcuk
Beiträge gesamt: 29

6. Aug 2008, 10:00
Beitrag # 3 von 6
Beitrag ID: #422543
Bewertung:
(1079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für die schnelle Rückmeldung.
Da bin ja mal gespannt was auf mich zukommen wird, aber bitte fühl Dich nicht gehetzt.

Gruß
Selcuk


als Antwort auf: [#422541]

PostScript aus Quark 7.3 per AS

Hans Haesler
  
Beiträge gesamt: 5818

7. Aug 2008, 21:28
Beitrag # 4 von 6
Beitrag ID: #422544
Bewertung:
(1079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Selcuk,

das Problem mit den Klicks, welche mit UI-Scriptin alleine nicht gelingen wollten, wurde hier schon diskutiert. Es war dann der Benutzer H =:o) L G I, welcher die entscheidenden Hinweise gab: http://www.page-online.de/forum/viewthread/3278/P15/

Ich habe es nun geschafft, eine Doppelseite in zwei separate PDFs zu exportieren und zwar mithilfe von UI-Scripting und dem Hilfsprogramm cliclick.

Letzteres findest Du hier: http://hohabadu.de/?APPLESCRIPT/Tools#cliclick
Das Script erwartet, dass es auf dem Schreibtisch plaziert ist.

Damit das UI-Scripting funktioniert, musst Du in den Systemeinstellungen im Dialog "Bedienungshilfen" die Checkbox "Zugriff auf Hilfsgeräte aktivieren" anklicken.

Und die Programmsprache von QuarkXPress muss auf US-Englisch eingestellt sein.

Das im nächsten Beitrag folgende Script mit dem Skripteditor im Dateiformat "Programm" sichern. Das ergibt ein Droplet, auf dessen Icon die zu exportierenden XPress-Dateien deponiert werden können. Oder auch ein Ordner, welcher die Dateien enthält.

Aber bitte nur mit einem einfachen Projekt den ersten Probelauf vornehmen.

Ich weiss nicht, wie sich QuarkXPress mit diesem Script im Batchbetrieb verhalten wird. Ich hatte einen Absturz zu verzeichenen, obwohl nur eine Datei behandelt wurde.

Ich habe auch festgestellt, dass der Zustand der aktivierten und deaktivierten Checkboxen gespeichert wird. Wenn eine Datei also ein zweites Mal auf das Icon des Droplets gezogen wird, dann geht zwar der Dialog auf, aber das Ergebnis der Klicks auf die Checkboxen ist nicht wie gewünscht.

Insgesamt eine eher wackelige Angelegenheit. Mir wäre es nicht wohl, die PDF-Dateien auf diese Weise produzieren zu müssen. Viel Glück!

Gruss, Hans


als Antwort auf: [#422541]

PostScript aus Quark 7.3 per AS

Hans Haesler
  
Beiträge gesamt: 5818

7. Aug 2008, 21:32
Beitrag # 5 von 6
Beitrag ID: #422545
Bewertung:
(1079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
property cliclickPath : POSIX path of file ((path to "desk" as string) & "cliclick") 

--================== Der run-Handler ========================
-- Der Handler welcher durch den Doppelklick auf das Icon des Scripts aufgerufen wird
--====================================================

on run
display dialog "Die XPress-Projekte (oder Ordner,
welche XPress-Projekte enthalten)
auf das Icon dieses Droplets ziehen." buttons "OK" default button 1 with icon 2
end run

--================= Der Open-Handler ========================
-- Der Handler, welcher aufgerufen wird, wenn Dateien auf das Icon des Scripts gezogen werden
--====================================================

on open allObjects
-- prüfen, ob QuarkXPress läuft
testApp()
tell application "QuarkXPress 7.31"
  activate
end tell
-- eine Schleife durch die gedroppten Objekte ...
repeat with aObject in allObjects
  -- ... welche eines nach dem anderen zum Handler 'processObject()' gesandt werden
  processObject(aObject)
end repeat
tell application "QuarkXPress 7.31"
  display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell
end open


--=================== Handler ============================
-- die Handlers (Subroutinen) welche von oben oder unereinander aufgerufen werden
--====================================================

-- der Handler welcher die gedroppten Objekte untersucht
-- er macht eine Liste des Ordnerinhalts und sendet die Elemente an sich selbst
-- Dateien, welche XPress-Projekte sind (oder -Dokumente) werden dem Export-Handler übergeben
on processObject(aObject)
-- wenn der Pfad mit einem Doppelpunkt endet, ist das Objekt ein Ordner ...
if (aObject as Unicode text) ends with ":" then
  -- die Liste der Objekte wird aufgestellt (ohne unsichtbare Dateien)
  set contentsList to list folder aObject without invisibles
  -- eine Schleife durch diese Liste
  repeat with anItem in contentsList
  -- der Pfad wird zusammengesetzt
  set objPath to ((aObject as Unicode text) & anItem)
  -- die Elemente (Dateien oder Ordner) werden zum aktuellen Handler gesandt
  processObject(objPath as alias)
  end repeat
  -- ... sonst ist das Objekt eine Datei
else
  set curFile to (aObject as Unicode text)
  -- der Dateityp wird geprüft
  set fileType to file type of (info for file curFile)
  -- wenn der dateityp jenem eines XPress-Projekts oder -Dokuments entspricht, dann ...
  if fileType = "XPRJ" or fileType = "XDOC" then
  -- ... wird der Pfad dem Handler exportPDF() übergeben
  set okay to exportPDF(curFile)
  if okay then
  else
    stopRightNow()
  end if
  end if
end if
end processObject

-- in diesem Handler öffnet QuarkXPress die Datei, exportiert das Layout als PDF
-- und schliesst das Projekt
on exportPDF(qxpFile)
set okay to false
tell application "QuarkXPress 7.31"
  try
  open qxpFile as alias use doc prefs yes remap fonts ask do auto picture import yes
  tell document 1
    repeat with i from 1 to count of picture boxes
    try
      tell picture box i
      tell image 1
        set imgPath to file path
        if imgPath is not null then
        if imgPath is not no disk file then
          if missing is true then
          return false
          end if
        end if
        end if
      end tell
      end tell
    end try
    end repeat
  end tell
  try
    save document 1
  end try
  set okay to true
  end try
end tell
if okay then
  try
  tell application "System Events"
    tell process "QuarkXPress"
    tell menu bar 1
      tell menu bar item "File"
      tell menu "File"
        tell menu item "Export"
        tell menu "Export"
          click menu item "Layout as PDF..."
        end tell
        end tell
      end tell
      end tell
    end tell
    delay 0.5
    my clickButton()
    end tell
  end tell
  delay 1
  tell application "QuarkXPress 7.31"
    try
    close document 1 saving no
    end try
  end tell
  on error
  tell application "QuarkXPress 7.31"
    try
    close document 1 saving no
    end try
  end tell
  end try
end if
return true
end exportPDF

on testApp()
tell application "System Events"
  activate
  set curProc to (name of every process) as string
end tell
tell me to activate
if curProc does not contain "QuarkXPress" then
  display dialog "Bitte QuarkXPress starten." buttons ¬
  "OK" default button 1 with icon 2
  error number -128
end if
end testApp

on stopRightNow()
tell application "QuarkXPress 7.31"
  display dialog "Mindestens ein Bild fehlt.

Die Ausführung muss sofort beendet
werden, sonst stürzt XPress ab." buttons ¬
"OK" default button 1 with icon 0
end tell
error number -128
end stopRightNow

on clickButton()
set {xPos, yPos} to {780, 670} -- Button "Options..."
set clickCommand to (cliclickPath & " " & xPos & " " & yPos)
do shell script clickCommand
delay 1
set {xPos, yPos} to {770, 295} -- Button "Export pages as separte PDFs"
set clickCommand to (cliclickPath & " " & xPos & " " & yPos)
do shell script clickCommand
delay 0.5
set {xPos, yPos} to {647, 288} -- Artikel "Hyperlinks"
set clickCommand to (cliclickPath & " " & xPos & " " & yPos)
do shell script clickCommand
delay 0.5
set {xPos, yPos} to {745, 255} -- Checkbox "Include Hyperlinks"
set clickCommand to (cliclickPath & " " & xPos & " " & yPos)
do shell script clickCommand
set {xPos, yPos} to {1037, 541} -- Button "OK"
set clickCommand to (cliclickPath & " " & xPos & " " & yPos)
do shell script clickCommand
set {xPos, yPos} to {1081, 721} -- Button "Sichern"
set clickCommand to (cliclickPath & " " & xPos & " " & yPos)
do shell script clickCommand
end clickButton



als Antwort auf: [#422541]

PostScript aus Quark 7.3 per AS

selcuk
Beiträge gesamt: 29

13. Aug 2008, 12:28
Beitrag # 6 von 6
Beitrag ID: #422546
Bewertung:
(1079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für Deine Mühe.
Leider komme ich immer noch nicht dazu es auszuprobieren.
Ich werde es aber in den nächsten Tagen probieren und meine Erfahrung mitteilen.

Also bis dahin viele Grüße

Selcuk


als Antwort auf: [#422541]
X