NAME
Prima::Printer - system printing services
DESCRIPTION
Prima::Printer is a descendant of Prima::Drawable class. It provides access to the system printing services, where available. If the system provides no graphics printing, the default PostScript (tm) interface module Prima::PS::Printer is used instead.
Usage
Prima::Printer objects are never created directly. During the life of a program, there exists only one instance of a printer object, created automatically by Prima::Application. Prima::Printer object is created only when the system provides graphic printing capabilities - drawing and painting procedures on a graphic device. If there are no such API, Prima::Application creates an instance of Prima::PS::Printer instead, which emulates a graphic device, producing PostScript output. The discretion between Prima::Printer and Prima::PS::Printer is transparent for both the user and the programmer, unless printer device specific adjustments desired.
A printing session is started by begin_doc()
, which switches the object into the painting state. If finished by end_doc()
, the document is delivered to a printer device. Alternative finishing method, abort_doc()
, terminates the printing session with no information printed, unless the document is multi-paged and pages were sent to the printer via new_page()
.
A printer object ( that means, both Prima::Printer and Prima::PS::Printer ) provides selection of the printer mechanism. printers()
method returns array of hashes, each describing a printer device; get_default_printer()
returns a default printer string identifier. A printer device can be selected via the ::printer
property.
The capabilities of the selected printer can be adjusted via setup_dialog()
method, that invokes a system-provided ( or, in case of Prima::PS::Printer, toolkit-provided ) printer setup dialog, so the user can adjust settings of a printer device. It depends on the system, whether the setup changes only the instance settings, or the default behavior of a printer driver is affected for all programs.
Some printer capabilities can be queried by the ::size()
property, that reports the dimension of the page, the ::resolution()
property, that reports the DPI resolution selected by a printer driver and font list ( by fonts()
method ), available for usage.
Typical code that prints the document looks like
my $p = $::application-> get_printer;
if ( $p-> begin_doc) {
... draw ...
$p-> end_doc;
}
In addition, a standard package Prima::PrintDialog can be recommended so the user can select a printer device and adjust its setup interactively.
API
Properties
- printer STRING
-
Selects a printer device, specified by its STRING identifier. Can not select a device if a printing session is started.
- resolution X, Y
-
A read-only property; returns a DPI horizontal and vertical resolution, currently selected for a printer device. The user can change this, if the printer device supports several resolutions, inside
setup_dialog()
. - size WIDTH, HEIGHT
-
A read-only property; returns dimensions of a printer device page. The user can change this, if the printer device supports several resolutions or page formats, inside
setup_dialog()
.
Methods
- abort_doc
-
Stops the printing session, returns the object to the disabled painting state. Since the document can be passed to the system spooler, parts of it could have been sent to a printing device when
abort_doc()
is called, so some information could still been printed. - begin_doc DOCUMENT_NAME = ""
-
Initiates the printing session, and triggers the object into the enabled painting state. The document is assigned DOCUMENT_NAME string identifier.
- begin_paint
-
Identical to
begin_doc("")
call. - begin_paint_info
-
Triggers the object into the information painting state. In this state, all graphic functions can be accessed, but no data is printed. Neither
new_page()
andabort_doc()
methods work. The information mode is exited viaend_paint_info()
method. - end_doc
-
Quits the printing session and delivers the document to a printer device. Does not report eventual errors, occurred during the spooling process - the system is expected to take care about such situations.
- end_paint
-
Identical to
abort_doc()
. - end_paint_info
-
Quits the information painting mode, initiated by
begin_paint_info()
and returns the object into the disabled painting state. - font_encodings
-
Returns array of encodings, represented by strings, that are recognized by the system and available in at least one font. Each system provides different sets of encoding strings; the font encodings are not portable.
- fonts NAME = '', ENCODING = ''
-
Returns hash of font hashes ( see Prima::Drawable, Fonts section ) describing fonts of NAME font family and of ENCODING. If NAME is '' or
undef
, returns one fonts hash for each of the font families that match the ENCODING string. If ENCODING is '' orundef
, no encoding match is performed. If ENCODING is not valid ( not present infont_encodings
result), it is treated as if it was '' orundef
.In the special case, when both NAME and ENCODING are '' or
undef
, each font metric hash contains elementencodings
, that points to array of the font encodings, available for the fonts of NAME font family. - new_page
-
Finalizes the current page and starts a new blank page.
- printers
-
Returns array of hashes, where each entry describes a printer device. The hash consists of the following entries:
- name
-
A printer device name
- device
-
A physical device name, that the printer is connected to
- defaultPrinter
-
A boolean flag, 1 if the printer is default, 0 otherwise.
- setup_dialog
-
Invokes the system-provided printer device setup dialog. In this setup, the user can adjust the capabilities of the printer, such as page setup, resolution, color, etc etc.
- get_default_printer
-
Returns a string, identifying a default printer device.
- get_handle
-
Returns a system handle for a printer object.
AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>.