[GastForen Programmierung/Entwicklung AppleScript Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

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

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

14. Feb 2007, 12:51
Beitrag # 1 von 20
Bewertung:
(3826 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Forum!

Ich möchte auf jeder Seite eines doppelseitigen Quark 6.5.2-Dokumentes jeweils einen Bildrahmen platzieren. Die Rahmen hätte ich gern so definiert, dass ein einzuladendes Bild nicht bei den Koordinaten x = 0 / y = 0 innerhalb des Rahmens positioniert wird, sondern im ersten Rahmen bei x = -10 / y = -10 und im zweiten Rahmen bei x = -20 / y = -10. Dazu habe ich bisher folgendes Script:



tell document 1 of application "QuarkXPress 6.5"

activate

tell page 1

make new picture box with properties {bounds:{-10, -10, 270, 210}} at beginning

end tell

tell page 2

make new picture box with properties {bounds:{-10, 0, 270, 220}} at beginning

end tell

end tell


Damit werden die Rahmen in gewünschter Position und Größe angelegt.

Frage 1): Ist es möglich, sie so einzustellen, dass eingeladene Bilder automatisch an den gewünschten Koordinaten innerhalb der Bildrahmen positioniert werden?

Frage 2): Habe ich mehrere Ebenen im Dokument, von denen die unterste die aktive ist, wird derjenige Bildrahmen von beiden, den man als zweites anklickt bisher auf die oberste Ebene verschoben. Was kann man dagegen tun? (Ich hätte gern beide Rahmen immer auf der jeweils aktiven Ebene.)

Herzlichen Dank im voraus für jede Art von Tipps!


Gruß, Roderix
X

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

14. Feb 2007, 14:43
Beitrag # 2 von 20
Beitrag ID: #421495
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

herzlich willkommen im Page-Forum! :-)

Antwort auf Frage 1:
Es ist nicht möglich, eine leere Bildbox so vorzubereiten, dass beim manuellen Laden
eines Bildes die Koordinaten auf Anhieb anders sind als {0, 0}. Denkbar wäre, in jede
Box ein Dummybild zu setzen, welches mit dem gewünschten Versatz und (eventuell)
einer von 100% abweichenden Bildgrösse versehen ist.

Mit einer XTension könnten dann beim Importieren die Parameter beibehalten werden.

Etwas umständlich. Eine andere Lösung wäre ein Script, welches die Parameter entweder
beim Import oder nachträglich regelt.

Antwort auf Frage 2:
Das Problem kann ich nicht nachvollziehen. Wenn die unterste Ebene aktiv ist und ich
auf ein Objekt klicke, welches auf der obersten Eben liegt, dann wird diese aktiv.
Jetzt halte ich die Umschalttaste nieder und klicke auf eine Box der Ebene zwei.
Das Objekt wird ausgewählt, aber nicht verschoben.

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

14. Feb 2007, 18:40
Beitrag # 3 von 20
Beitrag ID: #421496
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!

Vielen Dank für die schnelle Antwort!

zu 1)
Hintergrund:
Wir arbeiten an einem 140-seitigen Katalog, der für zahlreiche Sprachversionen adaptiert wird. Um den Stand der übersetzten Texte (schwarz) zu prüfen, wird dabei hinter jede Text-Seite vorrübergehend ein PDF hinterlegt, das die 4C-Daten enthält Z.Zt. wiederholt sich dabei ständig der gleiche Workflow:

- Die beiden Rahmen werden aus einer Bibliothek ins Dokument gezogen und manuell positioniert.
- Die beiden PDFs werden vom Desktop nacheinander direkt in die Rahmen gezogen und dort ebenfalls manuell positioniert.

Dabei sind Positionen und Größen immer identisch. Ich dachte nun, vielleicht kann man diesen Ablauf via AppleScript irgendwie vereinfachen.
Wenn es z.B. mögl. wäre ein Platzhalter-Bild beim Erzeugen der Rahmen gleich mit einzuladen, dessen Koordinaten/Größe dann von den hineingezogenen PDFs übernommen werden, wäre das sicher eine gute Lösung, übersteigt aber meine bescheidenen Scripting-Fähigkeiten.

Ein Script, das direkt beim Import ausgelöst wird, kann ich mir schwer vorstellen. Immerhin sind die PDFs immer unterschiedlich benannt und andere einzuladende Bilder sollen ja wie gehabt "normal" positioniert werden. Oder hilft da eine Benennung der Bildrahmen weiter?

zu 2)
Ich habe nochmal geforscht: Du hast Recht. Bei einem "unbefleckten" neuen Quark-Dokument klappt alles wie gewollt -> die Rahmen landen beide auf der aktiven Ebene. Bei unseren fertigen Katalog-Seiten, die mehrere Ebenen enthalten (unten meist 4C, darüber meist die Standard-Ebene mit dem Text, darüber Ebenen mit Hinweisen für Kunden/Litho/Übersetzer etc.) passiert folgendes:
Die unterste Ebene (4C) ist aktiv. Ich starte das Script. Beide Rahmen werden erzeugt. Aber: Während der eine korrekt auf der aktiven Ebene landet, landet der andere immer auf der obersten Ebene!? Dabei ist es von Dokument zu Dokument unterschiedlich, welcher von beiden wo landet. (Dass es etwas mit der Reihenfolge des Anklickens zu tun hätte, war zunächst eine fälschliche Annahmen von mir.) Kann man das im Script irgendwie "präventiv" ausschließen?

Vielleicht hat ja noch ein Forumsteilnehmer einen Tipp für mich. So wie's jetzt aussieht, sehe ich leider keine Möglichkeit, unseren monotonen Workflow via AppleScript "abzukürzen.

Besten Dank für sachdienliche Hinweise!


Gruß, Roderix


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

14. Feb 2007, 20:24
Beitrag # 4 von 20
Beitrag ID: #421497
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

das Benennen der Bildboxen kann nicht schaden. Dadurch könnten diese Objekte
direkt adressiert werden – zum Beispiel nach dem manuellen Laden der PDFs.
Und der Inhalt kann nach Wunsch verschoben werden.

Das Problem mit den Ebenen bekommt man in den Griff, indem das Erzeugen der
Boxen auf die gewünschte Ebene beschränkt wird. Den Namen ("demo") im Script
oder im Dokument anpassen.
---
tell document 1 of application "QuarkXPress 6.52"
   activate
   repeat with i from 1 to count of spreads
      tell spread i
         try
            tell page 1
               tell layer "demo"
                  make picture box at beginning with properties ¬
                     {bounds:{-10, -10, 270, 210}, name:"tmp"}
               end tell
            end tell
         end try
         try
            tell page 2
               tell layer "demo"
                  make picture box at beginning with properties ¬
                     {bounds:{-10, 0, 270, 220}, name:"tmp"}
               end tell
            end tell
         end try
      end tell
   end repeat
   display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell
---
Dann werden die PDFs geladen (manuell).

Zum Abschluss lässt man folgendes Script laufen, um den Versatz einzustellen.
---
tell document 1 of application "QuarkXPress 6.52"
   activate
   repeat with i from 1 to count of pages
      tell page i
         set pageNbr to name
         try
            tell picture box "tmp"
               tell image 1
                  if (pageNbr mod 2) is 0 then
                     set properties to {offset:{-10, -10}}
                  else
                     set properties to {offset:{-10, -20}}
                  end if
               end tell
            end tell
         end try
      end tell
   end repeat
   display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell
---
Um zwischen linken und rechten Seiten zu unterscheiden, wird die Seiten-Nummer
(der "Name" der Seite) geprüft. Wenn die Teilung mit 'mod 2' einen Rest von
Null ergibt, dann ist es eine linke Seite und die X- und Y-Werte werden
entsprechend zugewiesen.

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

16. Feb 2007, 12:21
Beitrag # 5 von 20
Beitrag ID: #421498
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!

DAS IST JA GENIAL!

Ich habe beide Scripte noch nicht genau analysiert, aber sie funktionieren ganz prima! Genau sowas habe ich gesucht. Ich glaube, ich sollte mich mal intensiver mit Scripten befassen. ;-)

Du hast mir sehr geholfen.
Vielen Dank und ein schönes WE.

Gruß, Roderix


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

16. Feb 2007, 13:13
Beitrag # 6 von 20
Beitrag ID: #421499
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

bitteschön.

Der Code ist nicht mit Kommentaren versehen, weil er eigentlich
selbsterklärend ist.

Deshalb nur kurz etwas zum "Wickel", welcher mit try beginnt und
mit end try endet: Das bedeutet, dass XPress bitte versuchen solle,
die darin enthaltenen Befehle auszuführen. Falls etwas davon nicht
klappt, dann geschieht ... nichts. Aber das Script läuft weiter.
Sonst würde eine Fehlermeldung gezeigt und die Ausführung würde
abgebrochen.

In beiden Scripts sind sie nur zur Sicherheit drin, denn es sollte
keine Probleme geben. Aber man weiss nie.

Man könnte den Wickel erweitern: Vor dem end try die Zeile on error
einfügen. Gefolgt von einer Zeile, in welcher z.B. das Anzeigen
eines Dialoges ausgelöst wird. Man könnte auch nur eine Zählervariable
hochzählen und den Dialog erst am Schluss zeigen, falls der Wert
der Variable nicht Null ist. Oder man könnte eine Liste der Seitenzahlen
bilden, wo Probleme aufgetreten sind usw.

Falls etwas nicht klar sein sollte: Nur Fragen stellen!

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

19. Feb 2007, 18:01
Beitrag # 7 von 20
Beitrag ID: #421500
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!

Nach diversen Praxis-Tests hätte ich doch noch zwei kleine Anmerkungen:

1) Ich habe den Tipp mit "on error" aufgenommen um im zweiten Script den Hinweis "Bitte erst Bildrahmen erzeugen." unterzubringen (falls die entsprechenden Rahmen nicht vorhanden sind). Allerdings wird diese Meldung zweimal hintereinander angezeigt, wenn man dies Script ausführt, ohne zuvor das andere Script ausgeführt zu haben.

2) Kleiner Schönheitsfehler: Merkwürdigerweise ist die Bildschirmdarstellung nach dem Ausführen beider Scripte nicht korrekt. Obwohl die Zielebene mit den beiden Bildrahmen und den eingeladenen PDFs ganz unten liegt, werden Elemente, die auf oberen Ebenen liegen, von den PDFs teilweise verdeckt. Erst nach dem Schließen der Datei und erneutem Öffnen oder einem vorübergehenden Verschieben der Ebenenhierarchie erscheint wieder alles korrekt. Gibt es dafür eine Lösung?


Ansonsten klappt alles super!!!


Gruß, Roderix


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

20. Feb 2007, 08:10
Beitrag # 8 von 20
Beitrag ID: #421501
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

1) Wenn das Layout acht Seiten aufweist, dann wird die Meldung
acht Mal angezeigt. Abhilfe: Einen Befehl einbauen, mit welchem
die Ausführung des Scripts abgebrochen wird:
---
         on error
            display dialog "Bitte erst Bildrahmen erzeugen." buttons "OK" default button 1 with icon 2
            error number -128
         end try
---
Das enstpricht dem Klick auf "Abbruch". Man könnte auch darauf verzichten,
im Code den "OK"-Button zu definieren. Dann fügt das Scripting-System
die Buttons "Abbruch" und "OK" automatisch ein:
---
         on error
            display dialog "Bitte erst Bildrahmen erzeugen." with icon 2
         end try
---
Die Ausführung wird abgebrochen, wenn der Anwender auf "Abbruch" klickt.
Aber ich ziehe die erste Lösung vor. Da wird nur ein Button angeboten.
Und manchmal muss man noch Aufräumarbeiten durchführen (z.B. die
Masseinheiten zurücksetzen oder die Objektkoordinaten).

2) Ich kann das Problem nicht reproduzieren.
Vielleicht hilft, vor Scriptende den Befehl zum Auffrischen der
Bildschirmanzeige einzufügen:
---
   do updates
end tell
---
Oder, ebenfalls an der gleichen Stelle, ein Wechsel des Ansichtsprozents:
---
   set view scale to (view scale as real) - 1
   set view scale to (view scale as real) + 1
end tell
---
Oder das Anzeigen der ersten Seite:
---
   show page 1
end tell
---
Oder ein Einpassen des Dokuments:
---
   set view scale to fit page in window
end tell
---

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

21. Feb 2007, 12:37
Beitrag # 9 von 20
Beitrag ID: #421502
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!

zu 1)
Ich würde gern das erste Script mit nur einem OK-Button einsetzen. Allerdings wird beim Testen nach dem Button-Klick jedesmal eine zusätzliche Quark-Fehlermeldung angezeigt („Script-Fehler: –1753 / Vom Benutzer abgebrochen / OK“), die erneut bestätigt werden muss. Lässt sich diese zweite Meldung unterdrücken?

zu 2)
Es scheint schon etwas mehr als nur die Bildschirmdarstellung zu sein. Die Script-Ergänzungen bringen keine Abhilfe. Selbst beim Ausblenden und erneutem Einblenden der Ebenen oder manuellem Aus-/Einzoomen ändert sich nichts. Lediglich ein vorübergehender Tausch  der Ebenenreihenfolge schafft Abhilfe. Gibt es vielleicht die Möglichkeit, via Script eine bestimmte Ebene auf die oberste Position zu verschieben und danach wieder auf die unterste Position? Ansonsten lässt es sich aber auch mit dieser kleinen Einschränkung "gut leben".

Zuguterletzt ist mir noch etwas eingefallen:
Wenn in den beiden Bildrahmen LowRes-PDFs eingeladen sind, könnte man mit einem Script deren Namen in einer Variablen speichern und sie dann "in einem Rutsch" durch gleichnamige HighRes-PDFs aktualisieren, welche in einem anderen Ordner abgelegt sind?

z.B. von
XY_Server -> XY_Job -> LowResPDFs -> XY_Eins.pdf und XY_Zwei.pdf
zu
XY_Server -> XY_Job -> HighResPDFs -> XY_Eins.pdf und XY_Zwei.pdf


Vielen Dank für die bisherige Mühe!!!
Gruß, Roderix


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

21. Feb 2007, 14:37
Beitrag # 10 von 20
Beitrag ID: #421503
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

die Fehlermeldung ist ein Problem des XPress-Script-Menüs.
Das habe ich seit Jahren bei jedem Beta-Test gemeldet, aber bisher
ist nichts gefixt worden.

Man hat aber zwei Möglichkeiten, um diesen Dialog auszuschalten.
A) Das Script als Programm sichern. Doch dann lässt die Ausführungs-
geschwindigkeit zu wünschen übrig.
B) Den Code in einen try-Wickel packen und am Schluss des Scripts die
Nummer des Fehlers abfangen. Wenn es nicht -128 ist, den Dialog zeigen.

Hier das ganze zweite Script, entsprechend aufbereitet:
Code
tell document 1 of application "QuarkXPress 6.52" 
  activate
  try
    repeat with i from 1 to count of pages
      tell page i
        set pageNbr to name
        try
          tell picture box "tmp"
            tell image 1
              if (pageNbr mod 2) is 0 then
                set properties to {offset:{-10, -10}}
              else
                set properties to {offset:{-10, -20}}
              end if
            end tell
          end tell
        on error
          display dialog "Bitte erst Bildrahmen erzeugen." buttons "OK" default button 1 with icon 2
          error number -128
        end try
      end tell
    end repeat
   
    -- Versuch, die Bildschirmanzeige aufzufrischen
    move layer 1 to end
    do updates
    move layer -1 to front
    -- Ende Versuch
   
    display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
   
  on error errMsg number errNum
    if errNum is not -128 then
      display dialog errMsg buttons "OK" default button 1 with icon 0
    end if
    return
  end try
end tell

Wie Du siehst, ist auch der Versuch, die Bildschirmanzeige aufzufrischen,
eingefügt. Hoffentlich hilft es.

Zu Deiner neuesten Idee: Man muss mit einer Wiederholungsschleife die
Bilder der Reihe nach ansprechen. Bei jedem den ganzen Pfad speichern,
den Ordnernamen auswechseln und dan versuchen, das neue Bild zu laden.
Code
tell document 1 of application "QuarkXPress 6.52" 
  activate
  -- eine Schleife durch die Bildboxen
  repeat with i from 1 to count of picture boxes
    tell picture box i
      -- den Pfad zur Bilddatei speichern
      set filePath to (file path of image 1) as string
      -- sicherstellen, dass die Box nicht leer ist (der Pfad wäre "null")
      -- und dass es kein eingesetztes PICT ist (= ohne Disk-Datei)
      if filePath is not "null" and filePath is not "no disk file" then
        -- dem Trenner der Textelemente den aktuellen Ordner zuweisen
        set AppleScript's text item delimiters to "LowResPDFs"
        -- die beiden Textelemente in die Variable 'pathList' geben
        set pathList to (every text item of filePath) as list
        -- dem Trenner der Textelemente den neuen Ordner zuweisen       
        set AppleScript's text item delimiters to "HighResPDFs"
        -- den neuen Pfad in die Variable 'newPath' geben
        set newPath to (every item of pathList) as string
        -- versuchen, das neue Bild zu laden
        try
          set image 1 to alias newPath
        end try
      end if
    end tell
  end repeat
  display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
  -- den Trenner der Textelemente auf einen leeren String zurücksetzen
  set AppleScript's text item delimiters to {""}
end tell

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

23. Feb 2007, 09:08
Beitrag # 11 von 20
Beitrag ID: #421504
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!

Puh, da muss ich mich erstmal durchbeißen.
Was ich schon sagen kann:
1)
Das Auffrischen der Bildschirmanzeige klappt prima mit dem "Ebenenwechsel".

2)
Nach dem Aktualisieren der LowResPDFs durch die HighEndPDFs stehen diese allerdings wieder bei Position x = 0mm, y = 0mm in den Bildrahmen und übernehmen nicht die Positionen der LowPDFs. Ich muss mal schauen, vielleicht kann ich das selber irgendwie lösen.

Vielen Dank schon mal!


Gruß, Roderix


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

23. Feb 2007, 09:36
Beitrag # 12 von 20
Beitrag ID: #421505
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

gut, dass es nun mit dem Auffrischen funktioniert.

Zum Austauschen der Bilder: Ich habe absichtlich nicht erwähnt,
dass die Position nicht erhalten bleibt (zwecks Lerneffekt :-).
Und ich halte mich auch damit zurück, eine fertige Lösung zu posten.

Nur ein Hinweis: Wenn man genau weiss, welche Attribute wie
geändert werden müssen, dann kann man sie direkt zuweisen.
Sonst muss man die Attribute des Bildes vor dem Wechsel speichern,
Variablen die relevanten Elemente zuweisen und nach dem Import
des neuen Bildes wieder anwenden.

Ich lasse Dich mal machen. Das bringst Du schon hin!

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

TMA
Beiträge gesamt: 399

26. Feb 2007, 07:26
Beitrag # 13 von 20
Beitrag ID: #421506
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

Zitat von author="Hans Haesler" date="1172219767" Nur ein Hinweis: Wenn man genau weiss, welche Attribute wie
geändert werden müssen, dann kann man sie direkt zuweisen.
Sonst muss man die Attribute des Bildes vor dem Wechsel speichern,
Variablen die relevanten Elemente zuweisen und nach dem Import
des neuen Bildes wieder anwenden.


hab ich da was verpasst?
Also ich kenn nur den Weg über "Atrribute vorher speichern und nachher anwenden". Geht das Aktualisieren einfacher? Meinst du das arbeiten mit Alias-Dateien? Auto-Picture-Import meinst du aber nicht, oder?

Gruß
TMA


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

26. Feb 2007, 07:48
Beitrag # 14 von 20
Beitrag ID: #421507
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,

ja, das Aktualisieren geht einfacher, wenn man genau weiss, welche Attribute
man ändern muss.

Im vorliegenden Fall weiss Roderix, dass nur der Versatz – welcher nach dem
Laden der neuen Bilder auf {0.0, 0.0} steht –, wieder auf die oben erwähnten
Werte geändert werden muss.

Um dies zu erreichen, kann er entweder das zweite Script starten. Oder aber
das Script, welches die Bilder austauscht, mit ein paar Zeilen ergänzen.

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

TMA
Beiträge gesamt: 399

26. Feb 2007, 07:52
Beitrag # 15 von 20
Beitrag ID: #421508
Bewertung:
(3825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Achso,
ich dachte es gibt allgemein eine einfachere Lösung zum aktualisieren von Bilddaten wo man NICHT genau weis was für Attribute man ändern muss.

Gruß
TMA


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Hans Haesler
  
Beiträge gesamt: 5826

26. Feb 2007, 08:47
Beitrag # 16 von 20
Beitrag ID: #421509
Bewertung:
(748 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,

wenn der Status der Bilder eines XPress-Dokuments "nur" verändert ist,
dann kann das Aktualisieren auf einfache Weise vorgenommen werden.
Das Script öffnet das Dokument, speichert den Zustand des automatischen
Bildimports, setzt diesen auf "An", sichert und schliesst das Dokument
um es erneut zu öffnen. Nun werden die Bilder automatisch aktualisiert,
das Script setzt den autom. Bildimport zurück und sichert und schliesst
das Dokument.

Diese Technik wird im SommerWinterZeit-Script angewendet und ist für
ein paar wenige bald wieder aktuell. Thema "Sommerzeit … und modifizierte
Bilder" http://www.page-online.de/page/forum/viewthread/2523/

Wenn aber – wie im vorliegenden Fall – die Bilder neu geladen werden,
dann muss anders vorgegangen werden.

Für QuarkXPress 6.52 gibt es von Badia Software die XTension
"ReplaceInPlace". Diese funktioniert gut beim manuellen Austausch
von Bildern. Aber wenn ein Script eingesetzt wird, dann ist die XTension
wirkungslos.

Bessere Karten hätte man mit QuarkXPress 7.1. In den Programm-Vorgaben
"Eingabe-Einstellungen" die Checkbox "Bildrahmenattribute beibehalten"
aktivieren. Und dann kann man per Script die Bilder mit dem oben
geposteten Script austauschen: Der Versatz bleibt erhalten.

Gruss, Hans


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

TMA
Beiträge gesamt: 399

26. Feb 2007, 08:57
Beitrag # 17 von 20
Beitrag ID: #421510
Bewertung:
(748 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ja, die import-technik habe ich auch schon mal ausprobiert.
zum neu laden von bildern benutzen wir selbst entwickelte scripte die an jeweilige kunden angepasst sind. vorgaben sind da sehr verschieden.

gruß
TMA


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

26. Feb 2007, 12:04
Beitrag # 18 von 20
Beitrag ID: #421511
Bewertung:
(748 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!

Nach einigem Forschen bin ich zu folgender Lösung gelangt, die ganz prima klappt:

Code
tell document 1 of application "QuarkXPress 6.5" 
activate
-- eine Schleife durch die Bildboxen
repeat with i from 1 to count of picture boxes
tell picture box i
-- den Pfad zur Bilddatei speichern
set filePath to (file path of image 1) as string
-- sicherstellen, dass die Box nicht leer ist (der Pfad wäre "null") 
-- und dass es kein eingesetztes PICT ist (= ohne Disk-Datei)
if filePath is not "null" and filePath is not "no disk file" then
-- dem Trenner der Textelemente den aktuellen Ordner zuweisen
set AppleScript's text item delimiters to "08_LowRes_4C_PDFs"
-- die beiden Textelemente in die Variable 'pathList' geben
set pathList to (every text item of filePath) as list
-- dem Trenner der Textelemente den neuen Ordner zuweisen        
set AppleScript's text item delimiters to "03_4c:High-end_PDF_Master"
-- den neuen Pfad in die Variable 'newPath' geben
set newPath to (every item of pathList) as string
-- versuchen, das neue Bild zu laden
try
set image 1 to alias newPath
on error
display dialog "HighResPDFs konnten nicht gefunden werden." buttons "OK" default button 1 with icon 2
error number -128

end try
end if
end tell
end repeat
-- den Trenner der Textelemente auf einen leeren String zurücksetzen
set AppleScript's text item delimiters to {""}

-- TEST: PDFs in Bildboxen erneut ausrichten
repeat with i from 1 to count of pages
tell page i
set pageNbr to name
try
tell picture box "tmp"
tell image 1
if (pageNbr mod 2) is 0 then
set properties to {offset:{-10, -10}}
else
set properties to {offset:{-10, -20}}
end if
end tell
end tell

end try
end tell
end repeat

return

end tell




Allerdings bin ich in mehreren Versuchen kläglich gescheitert, nach dem PDF-Austausch die neuen PDFs in den Boxen auf die gewünschten Koordinaten zu setzen, wenn die Bildrahmen ursprünglich nicht via Script, sondern konventionell erstellt worden sind (also keine Benennung haben).
Dabei tritt zudem das Problem auf, dass nicht auch andere Bildrahmen, die sich möglicherweise auf anderen Ebenen befinden, angesprochen werden sollen.

Es würde mich brennend interessieren, ob es einen Weg gibt, die HighResPDFs wie gewünscht innerhalb der Boxen zu platzieren, wenn die Bildboxen konventionell angelegt sind.
Bzw. kann man sie gezielt ansprechen (z.B. indem man die Ziel-Ebene angibt oder das Script nur auf Bildboxen beschränkt, die Bilder mit ".pdf-Endung" enthalten) um zu vermeiden, dass Bildboxen, die auf anderen Ebenen liegen und keine PDFs enthalten nicht auch angesprochen werden?

Viele Grüße, Roderix


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

TMA
Beiträge gesamt: 399

26. Feb 2007, 12:33
Beitrag # 19 von 20
Beitrag ID: #421512
Bewertung:
(748 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,
bei dem Befehl:

Code
if filePath is not "null" and filePath is not "no disk file" then 


ein bischen aufpassen. Das compilierte Script verhält sich anders wie im Script-Editor. bzw. Quark gibt andere Werte zurück. Deswegen solltest du die Zeile gegen diese beiden austauschen:

Code
if filePath ? "null" and filePath ? "«class null»" then 


und zusätzlich direkt danach fürs no disk file:
Code
if filePath ? "no disk file" and filePath ? "«constant ****Ndft»" then 


Zitat Bzw. kann man sie gezielt ansprechen (z.B. indem man die Ziel-Ebene angibt oder das Script nur auf Bildboxen beschränkt, die Bilder mit ".pdf-Endung" enthalten) um zu vermeiden, dass Bildboxen, die auf anderen Ebenen liegen und keine PDFs enthalten nicht auch angesprochen werden?


du kannst ebenen direkt ansprechen mit dem namen der ebene als string (oder per index usw. da gibt es einige möglichkeiten):
Code
tell layer "Bildebene" 


du kannst nur bildboxen ansprechen die ein PDF enthalten:
Code
tell application "QuarkXPress Passport" 
tell front document
set allPictureBoxes to every picture box
repeat with PDFbox in allPictureBoxes
if (file path of image 1 of PDFbox as string) ends with ".pdf" then
-- mach aktion
end if
end repeat
end tell
end tell


Gruß
TMA


als Antwort auf: [#421494]

Quark 6: Position von einzuladenden Bildern bei Bildrahmen voreinstellbar?

Roderix
Beiträge gesamt: 53

28. Feb 2007, 11:17
Beitrag # 20 von 20
Beitrag ID: #421513
Bewertung:
(748 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA!

Die "filePath-Zeile" habe ich ersetzt. Vielen Dank für den Tipp!

Mit dem direkten Ansprechen von Bildrahmen die unbenannt sind, bin ich bisher nicht recht weitergekommen.
Beim Testen gab's immer irgendwelche Fehlermeldungen.
Naja, es wäre rein interessehalber gewesen, einmal diese Möglichkeit zu probieren.
Wir legen jetzt alle PDF-Rahmen via Script mit Benennung an und sprechen sie direkt an, das klappt soweit sehr gut.

Nochmals vielen Dank!

Gruß, Roderix


als Antwort auf: [#421494]
X