使用AppleScript和Adobe Acrobat关闭文档

时间:2018-04-15 16:30:41

标签: pdf applescript acrobat

我正在尝试使用AppleScript和Adobe Acrobat Pro将数千个PDF转换为TXT。我的代码遍历每个PDF,打开它,并将其保存为TXT。这部分工作正常:PDF转换为TXT,没问题。我无法弄清楚如何在将每个PDF保存为TXT后将其关闭。 PDF仍然是开放的,最终我的内存耗尽(这是很多PDF,其中一些很大)。

这是我的代码:

set sourceFolder to "Macintosh HD:Users:thiagomarzagao:pdffolder"

tell application "Finder"
    set fileSet to get every file of folder sourceFolder
end tell

tell application "Finder"
    repeat with i from 1 to (count of fileSet)
        set currentFile to (item i of fileSet) as string
        set outFile to "Macintosh HD:Users:thiagomarzagao:txtfolder:" & "newfile" & i & ".txt"
        with timeout of 6000 seconds
            tell application "Adobe Acrobat Pro"
                activate
                open currentFile
                save document i to file outFile using conversion "com.adobe.acrobat.plain-text"
                close currentFile saving no
            end tell
        end timeout
    end repeat
end tell

我明白了:

error "Adobe Acrobat Pro got an error: \"Macintosh HD:Users:thiagomarzagao:mypdffile.pdf\" doesn’t understand the “close” message." number -1708 from "Macintosh HD:Users:thiagomarzagao:Desktop:mypdffile.pdf"

如果我用close document i saving noclose every document saving no替换有问题的行,我就明白了:

error "Adobe Acrobat Pro got an error: document 2 doesn’t understand the “save” message." number -1708 from document 2

如果我尝试close window 1,我就明白了:

error "Adobe Acrobat Pro got an error: window 1 doesn’t understand the “close” message." number -1708 from window 1

我在这里做错了什么?

Adob​​e Acrobat XI Pro 11.0.23,macOS High Sierra 10.13.4,AppleScript 2.7,脚本编辑器2.10(194)

1 个答案:

答案 0 :(得分:1)

您正在混合不可互换的HFS字符串路径和Adobe文档说明符。

Acrobat有一个属性active doc,可以用作对前文档的引用。

一些注意事项:

  • 第二部分不需要Finder
  • 而不是newFile12我更改了命名以使用原始名称
  • 脚本使用相对路径
  • 有些PDF文件无法转换为文本,我添加了一个try块来忽略错误
set homeFolder to path to home folder as text
set sourceFolder to homeFolder & "pdffolder:"
set txtFolder to homeFolder & "txtfolder:"

tell application "Finder"
    set fileSet to get every file of folder sourceFolder
end tell

activate application "Adobe Acrobat Pro"
repeat with aFile in fileSet
    set currentFile to aFile as text
    set currentFileName to name of aFile
    set outFile to txtFolder & text 1 thru -5 of currentFileName & ".txt"
    with timeout of 6000 seconds
        tell application "Adobe Acrobat Pro"
            open currentFile
            try
                save active doc to file outFile using conversion "com.adobe.acrobat.plain-text"
            end try
            close active doc saving no
        end tell
    end timeout
end repeat