Scripting PDF files

Alex Rice alex at mindlube.com
Wed Oct 29 10:35:55 EST 2003


On Oct 28, 2003, at 11:40 PM, Ken Ray wrote:

> on mouseUp
>   answer file "Select a file:"
>   if it <> "" then
>     put it into tSrcPath
>     put tPath & ".pdf" into tDestPath
>     put "/System/Library/Printers/Libraries/convert" into tConvertApp
>     get shell(tConvertApp && "-f" && tSrcPath && "-o" && tDestPath &&
> "-j application/pdf 2>&1")
>   end if
> end mouseUp
>
> If you check the results from the shell() it may have error messages in
> it, but it seems to still create the PDF.

Here is an an applescript that uses "convert"; is in 
/Library/Scripts/Printing Scripts on 10.3

(*
Copyright © 2003 Apple Computer, Inc.

You may incorporate this Apple sample code into your program(s) without
restriction.  This Apple sample code has been provided "AS IS" and the
responsibility for its operation is yours.  You are not permitted to
redistribute this Apple sample code as "Apple sample code" after having
made changes.  If you're going to redistribute the code, we require
that you make it clear that the code was descended from Apple sample
code, but that you've made changes.
*)

property RadarProblem3258323IsFixed : false
property type_list : {"JPEG", "GIFf", "PICT", "TIFF", "PDF", "TEXT"}
property extension_list : {"jpg", "gif", "pct", "tif", "pdf", "rtf"}
--html is not currently handled

on run {}
	tell application "Finder"
		try
			set FinderSelection to the selection as alias list
		on error
			--Finder Scripting fails with one item (Radar problem 2741967)
			set FinderSelection to the selection
		end try
	end tell
	
	if RadarProblem3258323IsFixed then
		set FS to FinderSelection
		--Ideally, this list could be passed to the open handler
	else
		set FS to {}
		repeat with EachItem in FinderSelection
			copy EachItem as alias to end of FS
		end repeat
	end if
	
	set SelectionCount to number of FS -- count	
	if SelectionCount is 0 then
		set FS to userPicksFolder()
	else if the SelectionCount is 1 then
		set MyPath to path to me
		if MyPath is item 1 of FS then
			--If I'm a droplet then I was double-clicked
			set FS to userPicksFolder()
		end if
	else
		--I'm not a double-clicked droplet
	end if
	open FS
end run

on userPicksFolder()
	set these_items to {}
	set these_items to (choose file with prompt "Select a file to convert 
to PDF:" of type {"JPEG", "GIFf", "PICT", "TIFF", "TEXT", "RTF"}) as 
list
end userPicksFolder

on open these_items
	set thesefiles to {}
	set the item_info to {}
	repeat with i from 1 to the count of these_items
		set this_item to (item i of these_items)
		set the item_info to info for this_item
		
		if folder of the item_info is true then --if the item is a folder
			processFolder(this_item)
		else if ((folder of the item_info is false) and ¬
			(alias of the item_info is false)) and ¬
			(the file type of the item_info is in the type_list) or ¬
			((the name extension of the item_info) is in the extension_list) then
			
			set theFilePath to (item i of these_items as string)
			set thePOSIXFilePath to POSIX path of theFilePath as string
			processFile(thePOSIXFilePath)
		end if
	end repeat
end open

--process folders
on processFolder(theFolder)
	set these_items to list folder theFolder without invisibles
	repeat with i from 1 to the count of these_items
		set this_item to alias ((theFolder as text) & (item i of these_items))
		set the item_info to info for this_item
		if folder of the item_info is true then
			processFolder(this_item)
		else if (alias of the item_info is false) and ¬
			((the file type of the item_info is in the type_list) or ¬
				the name extension of the item_info is in the extension_list) then
			set theFilePath to (this_item as string)
			set thePOSIXFilePath to POSIX path of theFilePath as string
			processFile(thePOSIXFilePath)
		end if
	end repeat
end processFolder

on processFile(thePOSIXFileName)
	try
		set terminalCommand to ""
		set convertCommand to "/System/Library/Printers/Libraries/./convert "
		set newFileName to thePOSIXFileName & ".pdf"
		set terminalCommand to convertCommand & "-f " & "\"" & 
thePOSIXFileName & "\"" & " -o " & "\"" & newFileName & "\"" & " -j 
\"application/pdf\""
		
		do shell script terminalCommand
	end try
end processFile



Alex Rice <alex at mindlube.com> | Mindlube Software | 
<http://mindlube.com>

what a waste of thumbs that are opposable
to make machines that are disposable  -Ani DiFranco



More information about the use-livecode mailing list