Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

ekulmail71

macrumors newbie
Original poster
Nov 7, 2012
1
0
Hi all, I'm a complete novice to this and I have no background in programming, I work in prepress. I'm trying to set up an hotfolder where our customer services can drop a pdf to have it create a lo/res version for them to email to the customer. On doing some web searching I came across this script

property gsSettinglst : "/gs -dSAFER -dCompatibilityLevel=1.4 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=?¿?outfile -dPDFSETTINGS=/?¿?quality -dPatternImagemask=true -c .setpdfwrite -f ?¿?infile"
property standardGSPaths : "/usr/local/bin" -- standard paths for gs

property qualities : {"prepress", "printer", "screen", "ebook", "default"}
property folder_names : {"prepress", "printer", "screen", "ebook", "default"}
property magic_bytes : {"%PDF-", "%!PS-Adobe", "≈–”∆"}

property out_folder : "PDFs"


property use_quality : 1



on adding folder items to theFolder after receiving theFiles
main_action(theFolder, theFiles)
end adding folder items to



on run
-- mainly for debugging
set f to choose file
tell application "System Events"
set theFolder to (path of (container of f))
end tell
set theFolder to alias theFolder
main_action(theFolder, {f})
end run

on main_action(theFolder, theFiles)
--try
tell application "System Events"
if not (exists folder out_folder of theFolder) then
make new folder at end of theFolder with properties {name:eek:ut_folder}
end if
set f_name to name of theFolder
end tell
set out_path to (POSIX path of theFolder) & out_folder & "/"
--set pathVar to addtoPATH(standardGSPaths)
--set PATHcall to "PATH=" & quoted form of pathVar & ";"

set use_quality to find_in_list(f_name, folder_names)

--display dialog (theFiles as text)
repeat with X from 1 to count theFiles
set curr to item X of theFiles
set file_name to clean_name(curr)

if check_magic(curr) then
set thePath to POSIX path of curr
(POSIX path of theFolder)
set thePath2 to out_path & file_name & ".pdf"
tell application "System Events"
try
(POSIX file thePath2) as alias
set thePath2 to out_path & file_name & " " & my date_string() & ".pdf"
end try
end tell
set thePath to quoted form of thePath
set thePath2 to quoted form of thePath2

--set currCommand to standardGSPaths & gsSettinglst
set currCommand to gsSettinglst
set currCommand to textReplace(currCommand, "?¿?infile", thePath)
set currCommand to textReplace(currCommand, "?¿?outfile", thePath2)
set currCommand to textReplace(currCommand, "?¿?quality", item use_quality of qualities)
set currCommand to standardGSPaths & currCommand

try
do shell script currCommand
log currCommand
tell application "Finder"
delete curr
end tell
on error theError number theNum
if theNum ≠ -128 then
display dialog theError
end if
end try
end if
end repeat
end main_action


--======================================

on find_in_list(the_val, the_list)
repeat with X from 1 to count the_list
if item X of the_list = the_val then
return X
end if
end repeat
return 5
end find_in_list

--======================================

on clean_name(file_ref)
tell application "System Events"
set f_name to name of file_ref
set f_suffix to (name extension of file_ref)
end tell
if f_suffix is not "" then
set suffix_length to (length of f_suffix) + 2
set f_name to characters 1 thru (suffix_length * -1) of f_name as text
end if
return f_name
end clean_name

--======================================


on textReplace(mainText, fromText, toText)
set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {fromText}
set textList to every text item of mainText
set AppleScript's text item delimiters to {toText}
set mainText to textList as text
set AppleScript's text item delimiters to oldDelims
return mainText
end textReplace

--======================================

on check_magic(file_ref)
set check_strg to "xxxxxxxxxx"
try
set fh to open for access file_ref
set check_strg to (read fh from 1 to 12)
end try
try
close fh
end try
repeat with X from 1 to count magic_bytes
if (offset of (item X of magic_bytes) in check_strg) = 1 then
return true
end if
end repeat
return false
end check_magic

--======================================

on date_string()
set now to current date
return (((year of now) as string) & "-" & pad_2((month of now) as integer) ¬
& "-" & pad_2(day of now) & " - " & pad_2(hours of now) & "-" & pad_2(minutes of now) & "-" & pad_2(seconds of now))
end date_string

--======================================

on pad_2(num)
set num to num + 100
return ((characters 2 thru 3 of (num as text)) as text)
end pad_2

I then used Hazel to move the pdf into the screen folder from the original folder
and set the script to run on pdf entering the screen folder, on testing this I get the following error
2012-11-07 08:34:59.274 hazelworker[694] Processing folder PDF TEST
2012-11-07 08:35:01.312 hazelworker[694] Done processing folder PDF TEST
2012-11-07 08:35:16.942 hazelworker[698] Processing folder PDF TEST
2012-11-07 08:35:18.960 hazelworker[698] 66455_PL_test.PDF: Rule New Rule matched.
2012-11-07 08:35:19.130 hazelworker[698] [File Event] File moved: 66455_PL_test.PDF moved from folder /Volumes/JobsCurrent/PDF TEST to folder /Volumes/JobsCurrent/PDF TEST/prepress.
2012-11-07 08:35:19.738 hazelworker[698] [File Event] File copied: 66455_PL_test.PDF copied from folder /Volumes/JobsCurrent/PDF TEST/prepress to folder /Volumes/JobsCurrent/PDF TEST/screen.
2012-11-07 08:35:19.782 hazelworker[698] [Error] AppleScript failed: Error executing AppleScript /Library/Scripts/Folder Action Scripts/PDF Convert-1.scpt on file /Volumes/JobsCurrent/PDF TEST/screen/66455_PL_test.PDF.
2012-11-07 08:35:19.782 hazelworker[698] AppleScript error: {
OSAScriptErrorNumberKey = "-1708";

I ran the script through applescript editor and it worked with no errors.
Any help would be greatly appreciated but it may have to be in lay terms sorry

Thanks
ekulmail71
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.