使用Applescript将路径和文件名传递给另存为PDF的打印对话框

时间:2011-03-12 17:45:33

标签: pdf applescript

我有一个打开电子邮件的脚本,然后我想将其另存为PDF。该脚本有效但我无法弄清楚如何将路径和文件夹名称传递给调用Save as a PDF后产生的对话框。到目前为止,这是我的剧本。

global FlName

tell application "Mail"
    set theMsg to selection
    open selection
    set Dialogresult to the button returned of (display dialog "Process this email and Print as PDF" buttons {"Yes", "No"} default button "Yes")
    if Dialogresult is "Yes" then
        repeat with selectMsg in theMsg
            tell selectMsg
                --set background color to red --Show message processed
                set FlName to subject
                set check to count every word of FlName
                --display dialog check
                set FlName to (my FixFileName(FlName)) --strip bad characters
            end tell
        end repeat
        set process_name to "Mail"
        activate application process_name
        tell application "System Events"
            tell process process_name
                --display dialog "proposed File Name" & return & FlName
                keystroke "p" using command down
                delay 2
                set PDFref to sheet 1 of window 1
                click menu button "PDF" of PDFref
                click menu item "Save as PDF…" of menu 1 of menu button "PDF" of PDFref
                tell application "Mail"
                    display dialog "Proposed Name " & my FlName default answer FlName & "change in the Box if Not OK"
                    set FlName to text returned of result
                end tell
                keystroke FlName
            end tell
        end tell
    else
        set Dialogresult to the button returned of (display dialog "Close this eMail" buttons {"Yes", "no"} default button "No")
        if Dialogresult is "Yes" then
            close window 1
        end if
    end if
end tell

on FixFileName(str) --Deletes characters that cannot be used in file names
    set fixed_string to {}
    set bad_char to {":", "/"}
    repeat with c from 1 to (count every character in str)
        if bad_char contains (character c of str) then
            set end of fixed_string to "-"
        else
            set end of fixed_string to (character c of str)
        end if
    end repeat
    fixed_string as string
end FixFileName

彼得

3 个答案:

答案 0 :(得分:1)

要考虑的另一个可能性是编写单独的PDF Applescript并通过“编辑菜单”将其添加到PDF下拉菜单中。 (不确定您需要申请哪个应用程序...请查看此链接以获取潜在客户:http://hints.macworld.com/article.php?story=2004122222145585)以下是Mac帮助的摘录:

  

您可以添加自己的项目,例如应用程序和AppleScript   脚本,到PDF弹出菜单。例如,您可以添加   将Quartz过滤器应用于PDF文件的AppleScript脚本,或者您   可以添加一个立即打开PDF文件的应用程序   创建

     

如果您在Automator中创建了一个Print workflow插件,那么该插件就是   自动添加。有关更多信息,请打开Automator,选择“帮助”

     
    

Automator帮助,并搜索“打印工作流程插件”。

  
     

要将项目添加到PDF弹出菜单:

     

选择文件>打印。

     

从PDF弹出菜单中选择“编辑菜单”。

     

单击添加(+)按钮,然后选择要添加的项目。

     

例如,如果要在Adobe中打开新创建的PDF文件   Acrobat,选择Adobe Acrobat。如果您已创建AppleScript脚本   将Quartz过滤器应用于文档,选择该脚本。

     

项目的别名保存在您的PDF Services文件夹中   库文件夹。

答案 1 :(得分:0)

如果您无法在生成PDF时设置PDF的名称,但知道PDF的保存位置以及保存的位置,请使用AppleScript重命名并将文件移动到您想要的位置。选择位置和名称可能有些麻烦,使用display dialog让用户选择名称,使用choose folder允许他们选择位置。

答案 2 :(得分:0)

按照@ Chuck的回答,是的,这是一种kludgy,但有choose file name命令,它允许用户选择名称​​以及位置......

set the FlName to (choose file name with prompt "Choose a name and location for the new PDF document:" default name "untitled.pdf")

但是,这实际上并不创建文件。以下命令可以。

open for access FlName
close access FlName