Positionieren von Bildern in RT per AppleScript

Guten Tag Allerseits,

ich will auf einem MacBook Pro (MacOS 10.5.6)
mit AppleScript ein Bild,
das auf dem Schreibtisch liegt,
in ein geöffnetes, dafür vorbereitetes Layout
von RT 6.0.2 bzw. 6.5 (Build 1812) einsetzen lassen
und am oberen Rand zentrieren.

Dazu habe ich folgendes Skript aufgenommen:

tell application "RagTime 6"
activate
set contents of rectangle 1 of page 1 of layout "Layout (hochkant)"
of document 1 to file "D:Users:ldborn:Desktop:Rattenfall.tif"
select contents of rectangle 1 of page 1 of layout "Layout
(hochkant)" of document 1
align picture selection vertically at top horizontally at center
end tell

Das Einsetzen funktioniert, aber die Positionierung nicht.

Ich erhalte für die Zeile "align picture ..."
stets die Fehlermeldung:
"„RagTime 6“ hat einen Fehler erhalten: Die Aktion konnte nicht
ausgeführt werden. Ein Fehler ist aufgetreten."

Tritt dieser Fehler nur bei mir auf?

Ich habe leider nicht herausfinden können,
ob es sich um einen Aufzeichnungsfehler
oder ein Fehler von RT im AppleScript-Bereich handelt.
Nach meinem Verständnis des Funktionenverzeichnisses von RT
müsste es eigentlich in der aufgezeichneten Weise funktionieren.

Vielen Dank für Eure Mühe im voraus.

Gruß
Lutz

Re: Positionieren von Bildern in RT per AppleScript

#8455 On 5 März, 2009 09:42 djschulz said,

Hallo,

bei mir funktioniert das Skript auf Anhieb.
Mit RagTime 6.5 (1812) unter Mac OS X 10.5.6

Wichtig ist jedoch, den Befehl nicht zweimal direkt hintereinander auszuführen, dann bleibt RagTime hängen. Zuerst den Inhalt des Rechtecks wieder auf Kein Inhalt setzen bevor das Skript erneut ausgeführt wird. Außerdem darf das Rechteck auch keine Pipeline enthalten.

Ich würde empfehlen, die Objekte nach Möglichkeit selbst zu erzeugen und dabei gleich in eine Variable zu packen. Das erspart dann viel Schreibarbeit und man kann so deren Eigenschaften (properties) leichter setzen.

Zur Anregung:

tell application "RagTime 6.5"
activate
tell document 1
-- Rechteck erzeugen:
set theRect to make new rectangle at beginning of page 1 of layout "Layout 1"

-- Größe des Rechtecks erstellen (als Beispiel für eine der vielen properties eines "drawing object")
set definition rect of theRect to {20, 20, 250, 180}

-- Bild auswählen und ins Inventar legen
set thePict to make new picture at end with data (choose file with prompt "Bild auswählen")

-- Inhalt des Rechtecks auf das Bild setzen
set contents of theRect to thePict

-- Bildskalierung einstellen (als Beispiel für eine der vielen properties eines "picture")
set scaling of thePict to 0.75

-- Bild ausrichten
align picture thePict vertically at top horizontally at center
end tell
end tell

Gruß,
Detlef

Re: Positionieren von Bildern in RT per AppleScript

#8456 On 5 März, 2009 16:49 Lutz-Dieter Bornemann said,

Guten Tag Norbert, Thomas und Detlef,

vielen Dank für Eure Mühe.

Es geschehen zuweilen seltsame Dinge.
Nachdem ich Thomas' Vorgehen, zunächst nur die kritische Zeile
aufzuzeichnen, nachvollzogen hatte,
lief und läuft seither alles problemlos.

Vielen Dank auch für Dein AppleScript Detlef.
Ich lerne immer etwas dadurch.

Meine Skriptvariante ist Teil meines skriptuntersützten Workflows zum
Archivieren von Zeitschriftenartikeln.
Zunächst werden die Artikelseiten eingescannt,
dann wird der Text (von Readiris) erkannt und von mir (fehler)bereinigt
und schließlich werden Text und Scanns in RT zusammengeführt,
sodass ich über die Volltextindizierung des MacOS
auf den Artikel zugreifen und entweder die Scanns
oder den erkannten Text lesen kann.

Wenn jemand an dem Artikel interessiert ist,
mache ich über Acrobat Destiller aus den Scanns eine PDF-Datei.

Sollte der Finder einmal in der Lage sein,
eine Spotlight-Suchanfrage korrekt an Vorschau zu übergeben
(bisher werden einfach alle Wörter übergeben),
dann werde ich nur noch im PDF-Format archivieren.
Das Skript dafür habe ich ja schon.

Gruß
Lutz

Und hier meine Skriptvariante:

tell application "RagTime 6"
activate
-- Einsammeln der Scanns
set theSelection to (choose file {} with multiple selections allowed)
set i to 1
set theAnzahl to number of items of theSelection
-- Einsetzen der eingesammelten Scanns in RT, wobei das RT-Document
mit dem Layout, das die Scanns aufnimmt, bereits offen sein muss.
open layout "Layout (hochkant)" of document 1
repeat with i from i to theAnzahl
set theFile to item i of theSelection as text
if i > 1 then
make new page at after page (i - 1) of layout "Layout (hochkant)"
of document 1
end if
set contents of rectangle 1 of page i of layout "Layout (hochkant)"
of document 1 to file theFile
-- Nachpositionieren jeder einzelnen Seite am oberen Rand
select contents of rectangle 1 of page i of layout "Layout
(hochkant)" of document 1
align picture selection vertically at top horizontally at center
end repeat
close window 1 -- kann man weglassen, wenn es nichts ausmacht, dass
das Bild auf der letzten Seite selektiert bleibt; siehe dazu die
letzten Zeilen des Skripts.
set auto delete of every picture of document 1 to false -- kann auch
weglassen
-- Wer einen Drucktereiber hat, der beim Ausdruck von zwei Seiten auf
einer nicht zu stark verkleinert, kann diesen Teil weglassen
open layout "Layout (doppelseitig)" of document 1
set i to 1
set theAnzahl to (((number of pictures of document 1) div 2) +
((number of pictures of document 1) mod 2))
repeat with i from i to theAnzahl
if i > 1 then
make new page at after page (i - 1) of layout "Layout
(doppelseitig)" of document 1
end if
set contents of rectangle 2 of page i of layout "Layout
(doppelseitig)" of document 1 to picture ((i * 2) - 1) of document 1
select contents of rectangle 2 of page i of layout "Layout
(doppelseitig)" of document 1
align picture selection vertically at top horizontally at center
try
set contents of rectangle 1 of page i of layout "Layout
(doppelseitig)" of document 1 to picture (i * 2) of document 1
select contents of rectangle 1 of page i of layout "Layout
(doppelseitig)" of document 1
align picture selection vertically at top horizontally at center
end try
end repeat
close window 1
-- Ende des Teils für das zweiseitige Layout
-- Die folgenden Zeilen bewirken, dass vor dem Sichern die Selektion
des letzten Bildes aufgehoben wird.
select page 1 of layout "Layout (doppelseitig)" of document 1
select page 1 of layout "Layout (hochkant)" of document 1
close document 1 saving yes
end tell

Anmerkung:
Ohne Nachpositionierung jedes einzelnen Bildes läuft der ganze Vorgang
extrem schnell ab,
selbst wenn das Skript außerhalb von RT abläuft.

Re: Positionieren von Bildern in RT per AppleScript

#8458 On 6 März, 2009 14:44 Listenteilnehmer said,

Moin Moin Lutz
Was meinst Du mit folgendem Satz:

> Sollte der Finder einmal in der Lage sein,
> eine Spotlight-Suchanfrage korrekt an Vorschau zu übergeben
> (bisher werden einfach alle Wörter übergeben),
> dann werde ich nur noch im PDF-Format archivieren.
> Das Skript dafür habe ich ja schon.

Ich hoffe, Deine obige Bemerkung richtig interpretiert zu haben:

Wenn ich auf meinen Macs (various, 10.5.6 (hat aber auch schon in 10.4 funktioniert)) per Spotlight Suchbegriffe im Inhalt finden lasse,
so springt mir VORSCHAU an die erste Fundstelle im/in den PDF(s).
Allerdings nur vom "Alle einblenden"-Fenster aus, wenn ich per Zahnrad-AKTION das dortige ÖFFNEN benutze.
Nicht, wenn ich in jenem Fenster die PDF per "normalen" Finderbefehlen öffne.
Rufe ich nur eine PDF auf, so geht das recht schnell, inklusive Anzeige der restlichen Fundstellen im Kontext in der Seitenleiste des PDFs.
Funktioniert auch bei PDFs mit eingebautem OCR-Text (Scan wie in Deinem Fall, OCR-Text in einem Layer darüber, per in Acrobat eingebauter Funktion erstellt).
Markiere ich mehrere PDFs und wähle die ÖFFNEN-Aktion aus, so dauert das bei mir einige Sekunden länger.
Irritierend ist es manchmal, wenn für kurze Zeit ein "Datei wird indiziert"-Fenster auftaucht.

hope that helps
hftc

Martyn

Re: Positionieren von Bildern in RT per AppleScript

#8459 On 6 März, 2009 17:36 Lutz-Dieter Bornemann said,

Am 06.03.2009 um 14:44 schrieb nitschmann@email.de:

> Moin Moin Lutz
> Was meinst Du mit folgendem Satz:
>
>> Sollte der Finder einmal in der Lage sein,
>> eine Spotlight-Suchanfrage korrekt an Vorschau zu übergeben
>> (bisher werden einfach alle Wörter übergeben),
>> dann werde ich nur noch im PDF-Format archivieren.
>> Das Skript dafür habe ich ja schon.
>
> Ich hoffe, Deine obige Bemerkung richtig interpretiert zu haben:
>
> Wenn ich auf meinen Macs (various, 10.5.6 (hat aber auch schon in
> 10.4 funktioniert)) per Spotlight Suchbegriffe im Inhalt finden lasse,
> so springt mir VORSCHAU an die erste Fundstelle im/in den PDF(s).
> Allerdings nur vom "Alle einblenden"-Fenster aus, wenn ich per
> Zahnrad-AKTION das dortige ÖFFNEN benutze.
> Nicht, wenn ich in jenem Fenster die PDF per "normalen"
> Finderbefehlen öffne.
> Rufe ich nur eine PDF auf, so geht das recht schnell, inklusive
> Anzeige der restlichen Fundstellen im Kontext in der Seitenleiste
> des PDFs.
> Funktioniert auch bei PDFs mit eingebautem OCR-Text (Scan wie in
> Deinem Fall, OCR-Text in einem Layer darüber, per in Acrobat
> eingebauter Funktion erstellt).
> Markiere ich mehrere PDFs und wähle die ÖFFNEN-Aktion aus, so dauert
> das bei mir einige Sekunden länger.
> Irritierend ist es manchmal, wenn für kurze Zeit ein "Datei wird
> indiziert"-Fenster auftaucht.

Hallo Martyn,

Deine Interpretation ist im Prinzip richtig.

Allerdings kann Spotlight seit MacOS 10.5. (Leopard)
Suchfragen mit Wildcards und Boolscher Algebra verarbeiten.
Dokumentiert ist dies unter:
http://developer.apple.com/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/QueryFormat.html

Was nicht in allen Fällen funktioniert,
ist die Übergabe an Vorschau.

Beispiel für das Wort "Kündigung":

Kündigung (ohne alles Weitere) funktioniert - gefunden wird dann auch
Kündigungsfrist
"Kündigung" (mit Anführungszeichen – gefunden wird dann nur Kündigung
als einzelnes Wort)
wird an Vorschau gar nicht übergeben,
obwohl Vorschau "Kündigung" (mit Anführungszeichen)
verarbeiten kann und dann auch nur Kündigung als einzelnes Wort als
Treffer markiert.
Ich hoffe insoweit auf MacOS 10.6.

Es gibt übrigens ein (alternatives) Freeware-Frontend zu Spotlight:
SpotInside unter:
http://www.oneriver.jp/

Gruß
Lutz

Re: Positionieren von Bildern in RT per AppleScript

#8453 On 4 März, 2009 18:55 Thomas Kaegi said,

Hallo Lutz

Eigenartig - beim ersten Versuch, ein analoges Skript aufzuzeichnen (im ersten Anlauf nur die kritische Zeile), das ich aus dem Skripteditor problemlos ausführen konnte, erhielt ich nach Übertragung des Skripts in ein Dokument-internes Skript bei dessen Ausführung einen AppleEvents-Fehler. Beim zweiten Versuch und seither (Skript unterdessen vervollständigt) klappt es bestens.

tell application "RagTime 6.5"
activate
set contents of rectangle 1 of page 1 of layout "Layout 1" of document 1 to file "Macintosh HD:Users:tom:Desktop:Hinweis.pdf"
select contents of rectangle 1 of page 1 of layout "Layout 1" of document 1
align picture selection vertically at top horizontally at center
end tell

Mit RagTime 6.5 (1812) unter Mac OS X 10.5.6

Gruss
Thomas

Re: Positionieren von Bildern in RT per AppleScript

#8452 On 4 März, 2009 18:54 "Norbert R. Obst" said,

Hallo Lutz,

kann es sein, daß der Schritt "Container und Inhalt gekoppelt" nicht
aufgehoben wurde, also entkoppelt?

Mit freundlichen Grüßen
Norbert O

Am 04.03.2009 um 18:32 schrieb Lutz-Dieter Bornemann:

> Guten Tag Allerseits,
>
> ich will auf einem MacBook Pro (MacOS 10.5.6)
> mit AppleScript ein Bild,
> das auf dem Schreibtisch liegt,
> in ein geöffnetes, dafür vorbereitetes Layout
> von RT 6.0.2 bzw. 6.5 (Build 1812) einsetzen lassen
> und am oberen Rand zentrieren.
>
> Dazu habe ich folgendes Skript aufgenommen:
>
> tell application "RagTime 6"
> activate
> set contents of rectangle 1 of page 1 of layout "Layout (hochkant)"
> of document 1 to file "D:Users:ldborn:Desktop:Rattenfall.tif"
> select contents of rectangle 1 of page 1 of layout "Layout
> (hochkant)" of document 1
> align picture selection vertically at top horizontally at center
> end tell
>
> Das Einsetzen funktioniert, aber die Positionierung nicht.
>
> Ich erhalte für die Zeile "align picture ..."
> stets die Fehlermeldung:
> "„RagTime 6“ hat einen Fehler erhalten: Die Aktion konnte nicht
> ausgeführt werden. Ein Fehler ist aufgetreten."
>
> Tritt dieser Fehler nur bei mir auf?
>
> Ich habe leider nicht herausfinden können,
> ob es sich um einen Aufzeichnungsfehler
> oder ein Fehler von RT im AppleScript-Bereich handelt.
> Nach meinem Verständnis des Funktionenverzeichnisses von RT
> müsste es eigentlich in der aufgezeichneten Weise funktionieren.
>
> Vielen Dank für Eure Mühe im voraus.
>
> Gruß
> Lutz
>

Re: Positionieren von Bildern in RT per AppleScript

#8454 On 4 März, 2009 18:57 Thomas Kaegi said,

In meinem Versuch sind Container und Inhalt beim Einsetzen gekoppelt und bleiben es auch!
Thomas