Skip to main content
JMFreeman
Inspiring
January 22, 2020
Question

Import Multiple Icons

  • January 22, 2020
  • 2 replies
  • 286 views

The project I'm working on is a photo report. The technician filling it out looks at a photo log and adds 6 or more photos and captions to the PDF before printing it. I have each photo button set up like so:

event.target.buttonImportIcon();

I know that this method has security restrictions (a red 'S' in its quick bar in the Acrobat API Reference), although I don't completely understand that. When am I not able/unable to call such methods? I ran into this first when trying to spawn a blank page from a button (I ended up discovering and using templates this way).

 

However, I digress. My real question is can I set up a document that can import multiple icons in one shot? The file will be stored on a remote server (as well as the photo files its importing), and there is noticable lag while importing. I would like to be able to handle it one of the following ways:

  1. Place the photo report template in the same folder as all the photos to be imported; all photos in the folder with it are automatically imported
  2. The user opens an import dialog which allows multiple files to be selected
  3. The user creates a list with file names (or partial file names) and provides a path to the photos

I am okay with this requiring Folder level script, if that's the only option. I just want to reduce the number of times the user waits for files to be imported to one.

This topic has been closed for replies.

2 replies

Thom Parker
Community Expert
Community Expert
January 22, 2020

Read these articles to understand how script security and folder level scripts:

https://www.pdfscripting.com/public/Trust-and-Privilege-in-Acrobat-Scripts.cfm

https://www.pdfscripting.com/public/Automating-Acrobat.cfm

 

Because of trust issues, Acrobat doesn't have a general file selection mechanism that provides direct access to the user's file system. Generally, for button icons the field.buttonGetIcon() function would be called without a path. The user selects teh file, Acrobat places the icon, but the script never knows the real path. 

 

That said there are a couple of ways to do this . 

1. Use the app.browseForDoc() method. Can only be used from a privileged context.  Automatically filters for "*.pdf" files. but the user can override it by typeing thier own filter into the file field. Only selects one file at a time.

 

2. use a text field with the "field.browseForFileToSubmit()" function. The text field property "fileSelect" must be set. Can only be used for single file selection, but will work without privilege. 

 

 

 

 

 

 

Thom Parker - Software Developer at PDFScriptingUse the Acrobat JavaScript Reference early and often
try67
Community Expert
Community Expert
January 22, 2020

Yes, if you run the script from a privileged context (eg. a trusted function in a folder-level script) you can specify the file path of the icon to import (it needs to have the correct syntax, though), and then use a loop to read the paths from a text file, for example, and apply them to multiple buttons in a single process.