Desktop Print Manager
tell app "Desktop Printer Manager" (* Find out which installed drivers can work with desktop printers; a list of these drivers is stored in the drivers variable, if your computer has any supported drivers *) set drivers to supported drivers end tell
The following dictionary commands and classes are based on the Desktop Printer Manager Version 1.0. The DPM has been scriptable since Mac OS 8.5 (in fact, it was introduced with that OS version).
This command
sends DPM a run Apple event to open it (this is
not usually necessary since a tell
statement
targeting DPM will implicitly launch the application if
it’s not already open).
This quits the
DPM app. The DPM quits automatically after it is finished processing
your script, unless its quit delay
property is set
to never
. See the quit delay
section elsewhere in this chapter.
You can make a new desktop printer with this command and give it some properties:
A required labeled parameter that always takes the form of:
make new desktop printer ...
make new file
or some other object. See the desktop printer
class description for a review of this object’s
properties.
at alias
This is a labeled parameter that lets you decide where to create the desktop printer icon. If you do not include this optional parameter then the desktop printer (DTP) is created on the desktop. An example is:
make new desktop printer at (alias "macintosh hd:desktop folder:printers:") with properties {name: "Laser",is default: true, driver name: "LaserWriter 8", address: addSpec } (* addSpec is a variable holding an address specification object *)
See the address specification
class description
elsewhere in this chapter.
with properties record
This is a record
type that holds the properties of
the new desktop printer. with
properties
is a required labeled parameter with
the make command; the address
and driver name
properties have to be identified
in this record
. See the at
parameter description preceding this segment for an
example of the with properties parameter. Chapter 3
, describes what a
record
data type is.
This
command returns an integer
representing the number
of desktop printers:
count desktop printers or count each desktop printer.
You can delete a desktop printer with code such as:
tell app "Desktop Printer Manager" to delete desktop printer "Laser"
You can also identify the desktop printer to delete by its index:
delete desktop printer 1
If there is only one DTP then:
desktop printer 1
refers to it. If there is more than one DTP, your script has to be more specific in identifying them:
every desktop printer whose protocol is "AppleTalk"
application
The application
class represents the Desktop
Printer Manager program itself. This class has one or more
desktop printer
elements and four properties. The
following is an application
element:
desktop printer
This element represents one or more desktop printers. You can find out how many desktop printers there are with code such as:
tell app "Desktop Printer Manager" to count desktop printers
Or you can get a handle on a desktop-printer object by storing it in a variable:
tell app "Desktop Printer Manager" to set dtp to¬ desktop printer 1
The following are application
properties:
default printer
(desktop printer
object) This is a settable property that allows a script to decide which desktop printer the computer sends its jobs to. If you are connected to more than one PostScript printer, then DPM scripting lets you dynamically choose which printer will do your printing at the moment.
supported drivers
(list of strings; read-only) This property returns a value like
{"LaserWriter 8"}
which is a list of drivers installed on the computer that support desktop printers.
quit delay
(default
/never
or integer
) This property can be set to a constant, such as
never
or default
, or to a
certain number of seconds (e.g., 15). DPM will then quit after the
last script command is processed and the specified number of
quit-delay seconds has passed (or it will not quit automatically if
you set this property to never
). You could set
this property to never
if you expect to run DPM
scripts several times during a computing session.
credits
(string
; read-only) This is a self-congratulatory list of the Desktop Printer Manager programmers.
desktop printer
This class represents a desktop printer
object. These objects are returned by the
application’s default printer
property, as well as by the command desktop printers or every desktop
printer, which will return a list
of printers or
an empty list
if you do not have or cannot support
desktop printers.
properties
(record
) This desktop printer property returns a record
type containing name/value pairs for various desktop-printer
properties. The return value looks something like this:
{name:"Graphics printer", container:alias "Macintosh HD:Desktop Folder:", is default:true, PPD file:generic, queue size:0, queue status:idle, queue stopped:false, shows manual feed alert:true, address:{class:address specification, AppleTalk machine:" LaserWriter 16/600 PS", AppleTalk zone:"Graphics_1", theme desktop pattern:"LaserWriter", protocol:AppleTalk}, driver name:"LaserWriter 8"}
name
(string
) This is the name of the desktop printer as it appears on the desktop.
container
(alias
) This property lets the script set the folder that contains the desktop printer:
set container of desktop printer 1 to alias "macintosh hd:desktop folder:today"
is default
(boolean
) You can use is default
to find out if a
desktop printer
object is the default printer:
if desktop printer 2 is default then set default printer to desktop printer 1
PPD file
(generic
constant or alias
file path) The PostScript Printer Description file property can be either the
constant generic
or an alias
file path such as:
"macintosh hd:System Folder:Extensions:Printer Descriptions: LaserWriter 8500 PPD v1.2" as alias
queue size
(integer
; read-only) The queue size
is the number of print jobs that
the desktop printer has at the moment.
queue stopped
(boolean
) This is a true/false
value reflecting whether the
print queue is stopped or not starting any print jobs.
queue status
(constants idle/stopped/printing/alert
; read-only) The queue status
value is one of these four
constants. For example, if
tell app "Desktop Printer Manager" to get queue status of default printer
returns printing
, then the default printer is
printing at the moment.
shows manual feed alert
(boolean
) A true/false
value that turns this printer
property on or off with the desktop printer
object:
set default printer's shows manual feed alert to false
address
(address specification
object; read-only) This represents the address
or protocol/port
configuration that the desktop printer is using. See the
address specification
class.
driver name
(string
; read-only) This is the driver name as a string
for this
printer, as in "LaserWriter
8."
protocol
(constants serial
/AppleTalk
/IP
/SCSI
/USB
/custom
/spool file
/translator
/unknown
; read-only) This is a constant representing the protocol used by the
printer’s address
property.
address specification
This class, an instance of which is
returned by the desktop printer
object’s address
property,
represents a device specification such as a Universal Serial Bus
(USB) printer. The conduit
property involves how
the printer is connected to the computer, and the
protocol
determines how the machine communicates
with its printer, such as over a TCP/IP network (an
IP
protocol).
properties
(record
) This is a settable record of the address spec’s properties (see the Examples section at the end of this chapter).
conduit
(constants printer port
, modem port
, SCSI
, USB
, infrared
) This property is set to one of five constants. The
conduit
is the port by which printing data is
sent.
protocol
(constants serial
, AppleTalk
, IP
, SCSI
, USB
, custom
, spool
file
, translator unknown
)The protocol
is the communication method between
the desktop computer and the printing device or software. It can be
set to one of nine constants, including custom
.
AppleTalk address
This class
designates the connection properties of a device that uses the
AppleTalk networking protocol. See the Examples section at the end of
this chapter. It inherits some properties from the address specification
class, such as protocol
.
AppleTalk machine
(string
) This is the printer’s name on the AppleTalk network.
AppleTalk zone
(string
) This is the AppleTalk zone returned as a string
,
such as “Graphics_1.”
AppleTalk type
(string
) This is an AppleTalk type, such as “LaserWriter.”
IP address
This class designates the connection properties of a device that uses the TCP/IP networking protocol.
This class inherits some properties from the address specification
class, such as protocol
.
ID
(string
) This property is the IP address of the device as a
string
, such as
“209.172.15.5.”
queue name
(string
) This is the queue name for this address as a
string
. It is not a required property if you are
making a new desktop printer with the make
command.
SCSI address
SCSI address
designates the connection properties of a
SCSI device.
This class inherits some properties from the address specification
class, such as protocol
.
ID
(integer
) This is a SCSI ID number such as 5 (SCSI devices have unique ID numbers).
USB address
This class designates the connection properties of a USB device such as a USB printer.
USB address
inherits some properties from the
address specification
class, such as
protocol
.
name
(string
) This is the USB device’s name as a
string
.
translator address
Your desktop printer might actually be
software that translates PostScript code (a PostScript file is
usually identified with a .ps suffix). The
desktop
printer
object’s protocol
would be
translator
. This class represents a PostScript
translator output folder.
translator
address
inherits
some properties from the address
specification
class, such as
protocol
.
destination folder
(alias
) This is the alias
file path for the folder that
will contain the translated output.
custom Printer address
This class represents the configuration of
a custom printer, which is not described by the other
address specification
types.
custom Printer address
inherits some properties from the
address
specification
class,
such as protocol
.
target application
(alias
) This is the alias
file path for an application
that will process the printer data.
set err to "" --this will hold any error messages tell app "Desktop Printer Manager" set addSpec to {class: address specification, AppleTalk machine:¬ "LaserWriter 16/600 PS", AppleTalk zone: "Graphics_1",¬ AppleTalk type: "LaserWriter", protocol: AppleTalk } try -- check for errors in making a new desktop printer make new desktop printer with properties { name: "Graphics¬ printer", driver name: "LaserWriter 8", address: addSpec, is default: true } on error errMesg set err to errMesg end try end tell if length of err > 0 then display dialog "An error occurred when making¬ the desktop printer; it was:" & err