Acrobat Distiller API Reference
Acrobat Distiller API Reference
Acrobat Distiller API Reference
Preface .......................................................................................................................................... 4
What’s in this guide? ..................................................................................................................................................................... 4
Who should read this guide? ..................................................................................................................................................... 4
Related documentation ............................................................................................................................................................... 4
1 Windows Automation ................................................................................................................. 5
Methods............................................................................................................................................................................................. 5
Create ........................................................................................................................................................................................... 5
FileToPDF .................................................................................................................................................................................... 5
FileToPDF2.................................................................................................................................................................................. 6
Properties .......................................................................................................................................................................................... 6
bShowWindow ......................................................................................................................................................................... 6
bSpoolJobs................................................................................................................................................................................. 6
Events ................................................................................................................................................................................................. 7
OnJobStart.................................................................................................................................................................................. 7
OnJobDone ................................................................................................................................................................................ 7
OnJobFail .................................................................................................................................................................................... 7
OnLogMessage ......................................................................................................................................................................... 7
OnPercentDone........................................................................................................................................................................ 7
OnPageNumber........................................................................................................................................................................ 8
2 Windows Messaging.................................................................................................................... 9
Specifying input and output files ............................................................................................................................................. 9
Determining use of the Save dialog box ............................................................................................................................... 9
Processing the file list .................................................................................................................................................................10
Determining the version number ..........................................................................................................................................11
Passing in command lines.........................................................................................................................................................11
Command line options...............................................................................................................................................................12
Disabling prompts for output file names ............................................................................................................................15
Turning prompting off for the current user .................................................................................................................15
Turning prompting off for all users .................................................................................................................................16
Customizing deployment options to turn off prompting.......................................................................................16
Programmatic control ..........................................................................................................................................................16
3 Apple Events .............................................................................................................................. 17
Objects .............................................................................................................................................................................................17
application................................................................................................................................................................................17
Events ...............................................................................................................................................................................................18
Distill ...........................................................................................................................................................................................18
quit ..............................................................................................................................................................................................19
run ...............................................................................................................................................................................................19
3
Preface
The Adobe® Acrobat® Distiller® application converts PostScript® language page descriptions into Adobe
PDF files. This document describes the Distiller API, which allows other applications to programmatically
control Distiller.
Related documentation
For information about See
A guide to the documentation in the Acrobat SDK. Acrobat SDK Documentation Roadmap
A guide to the sections of the Acrobat SDK that pertain to Developing for Adobe Reader
Adobe Reader®.
A guide to the sample code included with the Acrobat SDK. Guide to SDK Samples
Specifying settings for the creation of PDF files. Adobe PDF Creation Settings
4
1 Windows Automation
For most applications, the best way to automate Distiller under Windows is through the automation
interface. The automation interface makes it easy to create and control Distiller from any programming
language that supports automation. Distiller supports Visual Basic and Visual C++ with or without MFC.
Distiller exposes one interface: PdfDistiller. This interface provides methods, properties, and events.
In Visual Basic, if you want to just create and use a Distiller instance without spooling or events, the code
can be as simple as the following:
Dim pdf As PdfDistiller
pdf.FileToPdf "My Test File.ps", "", ""
Unless otherwise noted, all examples in this chapter use Visual Basic notation.
Methods
Create
Creates a Distiller instance. You do not need to call this method, because a Distiller instance is always
created if one of the other methods needs it. However, you may want to call this method if you are
handling events and want to display the Distiller startup messages before you submit any jobs.
Each user of the automation interface has its own Distiller instance. There is no sharing of a common
Distiller as is done with the WM_COPYDATA interface.
FileToPDF
Submits a PostScript file job to Distiller.
This method always creates a log file, regardless of the setting of the Delete Log Files for Successful Jobs
preference in Distiller.
Parameters
strInputPostScript The PostScript file to process.
strOutputPDF The name of the PDF file.
strPDFOptions The name and path of the Adobe PDF settings file to use.
Returns
short int (true on success, false otherwise)
If 0 is returned, the parameters are invalid; if -1 is returned, the PDF creation itself failed. If the user set the
bSpoolJobs flag before calling this method, then it returns an error only for invalid parameters.
5
Adobe Acrobat SDK Windows Automation
Acrobat Distiller API Reference FileToPDF2 6
FileToPDF2
Description
Submits a PostScript file job to Distiller. This method is the same as FileToPDF except for the addition of
an option to apply security.
Parameters
strInputPostScript The PostScript file to process.
strOutputPDF The name of the PDF file.
strPDFOptions The name and path of the Adobe PDF settings file to use.
long bApplySecurity A Boolean value that, if greater than 0, causes security to be applied to the
PDF as currently defined in the Distiller application security dialog box.
Returns
short int (true on success, false otherwise)
If 0 is returned, the parameters are invalid; if -1 is returned, the PDF creation itself failed. If the user set the
bSpoolJobs flag before calling this method, then it returns an error only for invalid parameters.
Properties
bShowWindow
Specifies whether Distiller opens with the status windows. This property takes effect only if you set it
before calling the Create method or any other method. If you have already started Distiller,
bShowWindow has no effect.
Syntax
[get/set] As Long
bSpoolJobs
Specifies whether Distiller queues PDF jobs through its internal spooler or processes each job immediately.
By default, bSpoolJobs is false, and FileToPDF processes the PDF job immediately and does not
return until the PDF file is created.
If bSpoolJobs is true, FileToPDF submits the PDF job to Distiller’s internal job queue and returns
immediately. The job will be processed at some later time. To find out when the job is done, you can watch
for the events Distiller runs during job processing.
Syntax
[get/set] As Long
Adobe Acrobat SDK Windows Automation
Acrobat Distiller API Reference Events 7
Events
OnJobStart
Run once when a job begins processing.
Syntax
OnJobStart( ByVal strInputPostScript As String,
ByVal_ strOutputPDF As String )
OnJobDone
Run once when a job completes successfully.
Syntax
OnJobDone( ByVal strInputPostScript As String,
_ByVal strOutputPDF As String )
OnJobFail
Run once when a job ends unsuccessfully.
Syntax
OnJobFail( ByVal strInputPostScript As String,
_ByVal strOutputPDF As String )
OnLogMessage
Run at various times with the text messages that normally appear in Distiller’s message log window.
A single call to OnLogMessage may contain multiple lines or partial lines of text. In the current version of
Distiller, the text may contain line feed characters without carriage return characters. Your application
should not make any assumptions about how this text is formatted and should be prepared to receive
either line feed characters (LF) alone or carriage return - line feed (CR-LF) pairs.
Syntax
OnLogMessage( ByVal strMessage As String )
OnPercentDone
Run periodically during a job to indicate overall progress.
Syntax
OnPercentDone( ByVal nPercentDone As Long )
Adobe Acrobat SDK Windows Automation
Acrobat Distiller API Reference OnPageNumber 8
OnPageNumber
Run periodically during a job to indicate the current page number.
Syntax
OnPageNumber( ByVal nPageNumber As Long )
2 Windows Messaging
Distiller supports Windows messages that can perform the following tasks:
● Specify the file or files to process and the output destination
● Confirm when each file specified in the first Windows message has completed processing
● Determine the Distiller version number
The enumerated data types and constants necessary to use Windows messaging are defined in the file
distctrl.h. This file is included in the Adobe Acrobat SDK. Source files that use the Distiller control
interface must include distctrl.h.
Note: The WM_COPYDATA interface provides compatibility for older applications only. You cannot use any
of Distiller’s newer features with it, such as Adobe PDF settings files and input piping.
param One of the values listed in the table “EnqueueOption constants” on page 9.
outputFile Destination path for output file or files (char). If multiple files are specified
for fileList, specify a directory rather than a specific file, or each
destination file will be overwritten by the next.
Constant Description
EQ_DEFAULT_OLD_DEST Display the Save dialog box. Use the most recent destination directory as
the default destination directory.
EQ_DEFAULT_SOURCE Display the Save dialog box. Use the source file’s directory as the default
destination directory.
9
Adobe Acrobat SDK Windows Messaging
Acrobat Distiller API Reference Processing the file list 10
Example 2.1 Processing a file list and omitting the Save dialog box
DISTILLRECORD dr; /* from distctrl.h */
COPYDATASTRUCT cds;
BOOL ok;
LRESULT rtn;
WORD res=0;
char msg[ 80];
hinst = ShellExec( NULL, "acrodist.exe", strCmdArgs, NULL, SW_SHOW);
if (res<32){
sprintf(msg, "WinExec failed: error code = %d", res);
return;
}
CWnd *hDistillerCWnd = FindWindow("Distiller", NULL);
if (hDistillerCWnd != NULL)
{
strcpy(dr.outputFile, "c:\\ OUT.PDF");
strcpy(dr.fileList, "C:\\ TEST.PS");
dr.param = EQ_NO_SAVE_DIALOG;/* from distctrl.h */
cds.dwData = DM_DISTILL;
cds.cbData = sizeof(DISTILLRECORD);
cds.lpData = (PVOID)&dr;
ok = (BOOL)hDistillerCWnd->SendMessage(WM_COPYDATA,
(WPARAM)m_hWnd, (LPARAM)&cds);
if (ok)
/* wake up Distiller */
hDistillerCWnd->PostMessage(WM_TIMER, ID_TIMER, 0L);
}
If the sending application is specified in the WPARAM parameter of the SendMessage call, a
WM_COPYDATA message is returned to the application after each file specified has been distilled. The
LPARAM parameter of this WM_COPYDATA message will contain a COPYDATASTRUCT that will include a
Distiller DM_DONE message and a pointer to a structure of type DISTILLRECORD. The fileList member
of the structure contains the name of the PostScript language file that was processed, and the
outputFile member contains the name of the resulting PDF file.
Adobe Acrobat SDK Windows Messaging
Acrobat Distiller API Reference Determining the version number 11
if (hDistillerCWnd != NULL)
{
cds.dwData = DM_VERSION;
cds.cbData = 0;
cds.lpData = NULL;
dwVersion = (DWORD)hDistillerCWnd->
SendMessage(WM_COPYDATA,NULL,(LPARAM)&cds);
if (HIWORD(dwVersion) >= 6)
; //6.x and above; LOWORD(dwVersion) has the minor version number.
else
; // Distiller 5.x and below
}
The distctrl.h file for 32-bit Windows is different from the one for 16-bit Windows since the
WM_COPYDATA message and COPYDATASTRUCT structure are not defined for 16-bit Windows. Make sure
you use the correct distctrl.h for your application.
Using the new WM_COPYDATA interface is similar to the old, except you create a command line string
instead of a data structure.
To get the Distiller version number, a COPYDATASTRUCT containing the DM_VERSION message is sent to
Distiller.
COPYDATASTRUCT cds = {0};
cds.dwData = DM_VERSION;
DWORD dwVersion = SendMessage( hwndDistiller, WM_COPYDATA,
WPARAM)hwndMyWindow, (LPARAM)&cds );
If any switches are present, they must come before any input files. Switches and input file names are
both optional. The command acrodist by itself runs Distiller, or if a normal instance of Distiller is already
running, it brings Distiller to the foreground.
The switches parameter is a list of optional commands. Either the dash (-) or slash (/) character can begin
a switch, which is identified by a single case-independent letter. (Note, however, that the deletelog and
nosecurity switches can only be preceded by a double dash (--).) There should be a space after the
switch letter, and if the switch takes a parameter, another space after the parameter. The parameter should
be in quotes if it contains any spaces. Do not combine switches—give each one its own prefix (- or /).
The parameter inputFiles is a list of file names, separated by spaces or commas. Spaces and commas
are both legal file name characters; if a file name contains spaces or commas, enclose it in double quotes.
Switch Description
--deletelog:on Forces Distiller to create or delete the log file after the PDF file is
--deletelog:off created. --deletelog:on turns on logging for the generated
PDF. --deletelog:off turns off logging for the generated PDF.
Adobe Acrobat SDK Windows Messaging
Acrobat Distiller API Reference Command line options 13
Switch Description
/E [pdfSettingsFilePath] Opens the Distiller Adobe PDF Settings dialog box to edit the
specified Adobe PDF settings file. If you specify a file name with no
path, Distiller looks in its Settings folder for the file. If you omit the
file name, Distiller uses the current default settings file.
This switch cannot be combined with any other command line
options. Distiller will not process any PostScript files and does not
display its main window. It just opens the Adobe PDF Settings
dialog box and exits when you close that window.
Put quotes around Adobe PDF settings file names that contain
spaces. For example:
"High Quality"
"High Quality.joboptions"
Switch Description
/N Runs a new instance of Distiller, even if another Distiller instance is
already running. Without this switch, Distiller switches to any
“normal” previous instance. The Distiller instance created with this
switch does not process watched folders and is marked so that it
will not get activated by other “normal” Distillers that get
launched later. The number of new instances of Distiller that can
be created with this switch is limited by system resources.
Note: When using this switch, do not use the command line
start command with the /wait option. The command
“start /Wait” negates the effect of using /N with
Distiller.
--nosecurity Suppresses the Confirm Security dialog box. No security will be
applied to the file.
Note: This option was implemented only for the Adobe PDF
printer and should be passed as a WM_COPYDATA message
or through the COM interface. If it is used as a command
line option, then the PDF file (from the command line
PostScript stream) will not have any security. But if the user
drags and drops another PostScript file from the user
interface, then the security settings in the registry will be
applied; this is the reason to show the Confirm Security
dialog box.
/O outputFileOrFolderPath Specifies the output PDF file name or a directory name to put PDF
files in. If you specify a directory name, Distiller uses the input file
name for each input file.
To process a PostScript language file and name the output PDF file
use this syntax:
acrodist /o destFile srcFile
To process a list of PostScript language files and place the output
PDF files in a specified directory, use this syntax:
acrodist /o directory srcFile1[, srcFile2...]
Adobe Acrobat SDK Windows Messaging
Acrobat Distiller API Reference Disabling prompts for output file names 15
Switch Description
/Q [:seconds] Instructs Distiller to exit immediately when it becomes idle.
Distiller checks this switch only if Distiller is launched as a new
instance (/N); otherwise idle time is limited by the watched folder
timer.
If /N is also used, Distiller quits after processing all files on the
command line. If /N is not used, Distiller quits after processing all
PostScript files in watched directories and any that were specified
on the command line.
To force Distiller to terminate when it has finished distilling all
PostScript files in watched directories and any that were specified
on the command line, use this syntax:
acrodist /q [sourceFile1[, sourceFile2...]]
/Q also accepts an optional timeout value in seconds, /Q:n. Use
the timeout to instruct Distiller to wait for n seconds of idle time
before exiting. n must be a positive integer and cannot be greater
than 2147483 seconds (Ox7fffffff/1000), or about 24.8 days.
The default watched folder timer is set to 10 seconds, so every 10
seconds Distiller wakes up to check the watched folder. Since it is
checking every 10 seconds, it is idle for no more than 10 seconds.
If the SetTimer value is less than 10 seconds, then the system
rounds this value to 10 seconds.
1. From the Windows Start menu, click Settings > Printers and Faxes > Adobe PDF.
5. Change the Adobe PDF Output Folder selection to My Documents\*.pdf, or click Browse to select a
different folder.
Adobe Acrobat SDK Windows Messaging
Acrobat Distiller API Reference Turning prompting off for all users 16
1. From the Windows Start menu, click Settings > Printers and Faxes > Adobe PDF.
5. Change the Adobe PDF Output Folder selection to My Documents\*.pdf, or click Browse to select a
different folder.
Programmatic control
Prompting can be turned off programmatically by adding a key to the Windows registry. This method
applies to the creation of only one PDF document by a specific application for the current user. To use this
method, add the following registry key:
HKEY_CURRENT_USER\Software\Adobe\Acrobat Distiller\PrinterJobControl
The (Default) entry is reserved for possible future use and is not to be used.
The application subkey is the full path of the application for which prompting is to be turned off. The
value of the application subkey is a REG_SZ value that is the full path of the output file. For example,
the following registry script would turn off prompting for the next printing performed by wordpad.exe,
printing to the file c:\MyPDFoutputFileName.pdf :
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Adobe\Acrobat Distiller\PrinterJobControl]
"C:\Program Files\Windows NT\Accessories\wordpad.exe" =
"c:\MyPDFoutputFileName.pdf"
Note: Though the programming language may require that your backslashes are escaped (for example,
"c:\\MyPDFoutputFileName.pdf"), the value of the registry entry must use single slashes.
This key, once established, remains until used and is removed once the Windows API function
StartDoc(HDC hdc, CONST DOCINFO* lpdi) has successfully completed. Also note that the
output folder path must already exist with read and write access for the current user and the
destination file must not exist.
3 Apple Events
Apple events can be used from programming languages such as C or from AppleScript. Because
AppleScript is more straightforward, it is recommended for use with Distiller.
Distiller supports the application object and the following Apple events:
● Distill
● run
● quit
Objects
application
The top-level scripting object.
Elements
Document, Window
Properties
Property Class Description
locale Unicode text [r/o] Three-character language code for the Distiller
user interface (for example, “ENU” is English).
17
Adobe Acrobat SDK Apple Events
Acrobat Distiller API Reference Events 18
Events
Distill
Distills a file.
Syntax
Distill sourcePath UnicodeText [destinationPath UnicodeText]
[adobePDFSettingsPath UnicodeText]
Parameters
sourcePath POSIX path to the input file (the file to be distilled).
destinationPath POSIX path to the output file. If not specified, the PDF file is
generated in the same folder as the input file.
adobePDFSettingsPath Either the POSIX path to the Adobe PDF Settings file, or the name of
one of the settings files in Distiller.
If not specified, the settings file selected in the application is used.
Returns
A Boolean value indicating status. If true, the command succeeded.
Examples
These examples assume the presence of an appropriate tell – end construct, for example:
tell application "Acrobat Distiller 8.0"
[Your code]
end tell
Ensure each command is on one line without line breaks. Some of the following examples appear on two
lines solely to fit the page.
The following example uses application properties to determine which settings file is used:
set distSetting to "Standard"
if (postScriptVersion as string) is equal to "3015.102" then
set distSetting to "High Quality"
end if
if locale is "CHT" then
set distSetting to "Smallest File Size"
end if
Distill sourcePath "/hello.ps" adobePDFSettingsPath distSetting
quit
Terminates the Distiller program.
Syntax
quit
run
Launches the Distiller program and invokes its standard startup procedures.
Syntax
run