DT und PDF Squeezer

Mit der Annahme, dass Autokomprimierung als App erkannt wird (und ich nehme an das wird es wenn es im Ordner liegt, wo sonst alle anderen Apps liegen), müsste das folgende funktionieren. Ich habe es mit Acrobat ausprobiert, dort händisch eine Datei komprimiert und gespeichert, und das ganze hat funktioniert. Ich kann das Script aber so wie es hier steht nicht testen.

Nochmal: bitte unbedingt mit einer Testdatenbank ausprobieren. Deine Smart Rule entscheidet darüber, welche Dateien dem Skript geschickt werden - ist deine Smart Rule falsch, werden auch die falschen Dateien bearbeitet.

on performSmartRule(theRecords)
	tell application id "DNtp"
		try
			set theName to name of first item in theRecords
			set theResponse to display dialog "Autokomprimierung von '" & theName & "' und " & ((count of theRecords) - 1) & " weiteren Dokumenten. Diese Manipulation kann nicht rückgängig gemacht werden!" with title "PDF Autokomprimierung" buttons {"Fortfahren", "Abbrechen"} default button "Abbrechen"
			if button returned of theResponse is "Abbrechen" then
				error number -128
			else
				show progress indicator "Komprimiere PDFs" cancel button 1 steps count of theRecords
				repeat with theRecord in theRecords
					if cancelled progress then error number -128
					step progress indicator (name of theRecord) as string
					set c to 0
					set theTags to tags of theRecord
					set referenceSize to size of theRecord
					set currentSize to size of theRecord
					set thePath to path of theRecord as string
					tell application "Autokomprimierung"
						open (thePath as POSIX file)
					end tell
					repeat while currentSize is equal to referenceSize
						if cancelled progress then error number -128
						delay 0.5
						set c to c + 0.5
						if c > 60 then exit repeat
						set currentSize to size of theRecord
					end repeat
					if c < 60.5 then
						set theTags to theTags & "-komprimiert-"
						set tags of theRecord to theTags
					end if
				end repeat
			end if
		on error error_message number error_number
			hide progress indicator
			if the error_number is not -128 then display alert "DEVONthink" message error_message as warning
		end try
		hide progress indicator
	end tell
end performSmartRule
1 Like