AppleDeveloper
AppleDeveloper

Reputation: 1443

Using AppleScript automation how can I get currently opened Adobe reader file name

I tried below code

activate application "Adobe Reader"

tell application "System Events"
    tell process "Adobe Reader"
        set currentFile to active Document


    end tell
end tell

But I couldn't get active document name, I tried this code by already with opened document. I don't even find any dictionary for adobe reader in script Editor. Any suggestions will be much appreciated

Upvotes: 0

Views: 303

Answers (2)

user3439894
user3439894

Reputation: 7555

The Adobe Reader app does not have an AppleScript dictionary file within it's application bundle and as such is not AppleScript scriptable beyond a very limited number of Standard Suite commands and UI Scripting its menu bar with System Events.

If you just want to get the name of the document that has focus, then the following example AppleScript code can do that:

if running of application id "com.adobe.Reader" then
    try
        tell application "System Events" to ¬
            set docName to ¬
                (get name of every menu item of menu 1 of menu bar item ¬
                    "Window" of menu bar 1 of application process ¬
                    "Acrobat Reader" whose value of ¬
                    attribute "AXMenuItemMarkChar" = "✓") as string
        return docName
    end try
end if

The use of return docName was for testing purposes and can be removed as appropriate. Additionally, it was not necessary for Adobe Reader to have focus and its window could even be minimized, the script still retrieved the name as shown on its Window menu.

  • Note: This was tested on macOS High Sierra using US English and Adobe Acrobat Reader DC (Continuous Release | Version 2019.021.20058.) and works as is. Adjustments may be needed for other languages and or different versions of Adobe Reader.

Note: The example AppleScript code is just that and does not contain any additional error handling as may be appropriate. The onus is upon the user to add any error handling as may be appropriate, needed or wanted. Have a look at the try statement and error statement in the AppleScript Language Guide. See also, Working with Errors. Additionally, the use of the delay command may be necessary between events where appropriate, e.g. delay 0.5, with the value of the delay set appropriately.

Upvotes: 1

wch1zpink
wch1zpink

Reputation: 3142

Here are a few AppleScript options that may work for you. I don’t have Adobe Reader so I am not able to test the code.

tell application "Adobe Reader" to set currentFile to name of document 1

If that doesn’t work for you, you can try this…

tell application "Adobe Reader" to activate

repeat until application ""Adobe Reader" is frontmost
    delay 0.1
end repeat

tell application (path to frontmost application as text) to set currentFile to name of document 1

Upvotes: 0

Related Questions