- Your Answer
- Solution 1
- Solution 3
- 1. Include required files
- Subscribe to RSS
Being able to save a file to disk is a critical activity for Acrobat workflow automation, and fortunately, there are a couple ways to do this from an Acrobat script. In fact, this is a feature that has been around for a long time, so everything discussed here is valid for old versions of Acrobat as well as Acrobat XI. Saving in Reader is a little different since this functionality was traditionally off limits, except for specially "Enabled" documents.
As explained below, this restriction was mostly removed in version XI, making Reader a much more useful tool in Document Workflows. So far, I've only talked about using the save feature in the context of automating workflows, but what if you want to put a save button on a form?
This is a common form feature requested in the forums. Let me start right off by saying that putting a script into a PDF form that saves the PDF can only be done under such restrictive circumstances that in most cases it is not practical.
Users would not be very happy if random PDFs downloaded from the internet could silently save themselves to disk. Trust mechanisms are useful and appropriate in a small or closed environment, such as an office. They are not suitable for widely distributed files.
In Acrobat, there are three main trust mechanisms; Actions batch sequences , trusted functions and digital signatures. All three of these mechanisms provide a "Privileged Context" for code that requires trust.
The first two are useful for workflow automation. The last one, digital signatures, is most useful for business documents, such as contracts that are passed back and forth between businesses or within an office.
At least one of these trust mechanisms must be employed in order for a script to be able to silently save a PDF to disk. Given the "trust" restriction, it is possible to place a custom "Save" button on a PDF, but it will only work for users that have the appropriate trust mechanism enabled on their own system.
Writing a PDF required purchasing Acrobat. There are different types of Rights for different types of features, such as forms, markup, and signing. The primary reason for saving a PDF through scripting is to support workflow automation. A workflow is just the set of actions you perform on your documents in order to process them in your own special way.
So, instead of manually marking invoices, an Acrobat script is used to stamp the PDF file with a status marker and then automatically save it to a new name with the press of a button.
An easy way to try out the code presented in this article is to run it from the Console Window. The Console Window is a Privileged Context, so no other trust mechanism is required for testing scripts.
The simplest methodology is to use the "Save" menu item. Just type this code into the Console Window and run it. It works great when the automation script is operating on the current document. However, an automation script could be dealing with several documents at the same time. To handle this situation, the Save menu item can be applied to a specific PDF with this code:.
Try this code from a script on a form button. It won't work and Acrobat will not report an error. The reason Acrobat does not report an error is because the menu item exists, even though it does not work in the context in which it is being used. This is a tricky situation to debug. Always check your save results by closing and reopening the file. Don't rely on Acrobat to report errors. The doc. For example, the code below saves the current PDF to a temporary folder using a temporary file name.
Use this code where the PDF is an intermediate file in the process:. The code above uses a hard-coded path for saving the file. Notice the format of the path. In order to deal with cross-platform issues, Acrobat uses its own file path specification called the Device Independent File Path Format.
If a script does not use this path format, the doc.
The following script uses string manipulation operations to separate the file name from the file path in order to save the file to a new name, but in the same location:.
The "doc. Always specify the fully qualified path. The code above follows this recommendation by using the current file path. Sometimes you want the save to automatically overwrite an existing file with the same name, which is the case in the first example where a temporary file is saved.
For this situation, use the "bPromptToOverwrite" input as shown in the code below:. The format of this function call is a little different. This format allows us to specify only the input parameters needed for the operation.
There are slight changes in which formats are available in different versions of Acrobat. The full listing of available formats for Acrobat XI can be found by running the following code in the Console Window Figure 2 :.
The file name and path must include the correct the file name extension for the conversion, which is specified in the second input parameter. This conversion ID or format name is taken from the app.
1. Include required files
In this example the conversion is to an image format. Image formats typically don't handle multiple pages, so Acrobat converts each page into an individual JPEG file. This naming convention is the same for all formats where each page is converted into an individual file. PostScript is a vector-based printing format closely related to PDF. I often use this conversion to completely flatten and remove all PDF features from a document.
Remember, in order to use the doc. In most situations, this will mean creating a folder-level trusted function.
The following code defines such a function that performs only the save operation. This is a full working example, but it could also be used in a larger automation script. The inputs to this function provide the document object, path and file name.
All three are important for creating a generic function for saving a file. For example, inside the folder-level function the keyword "this" may or may not be the current document. The meaning of "this" depends on the calling context, which is unknown.
See the Scripting for Adobe Reader article for more information, and be sure to read the other articles cited previously. They provide important supporting information and examples, especially the Device Independent File Path Format article. UnsupportedValueError: Value is unsupported. So your task is to figure out how to generate that name from data entered on the form.
The trick here is knowing how to access form field data with the doc. I need to have the file renamed itself using data entered in text fields by my customer. John J Smith sits at my computer and fills out the application. Right now, when they sign the app, it auto saves to the original blank doc file name, overwriting the blank doc. Please fill in the required fields highlighted before continuing.
What is the secret to making this work? Thanks for getting back to me.
Subscribe to RSS