Copyright ©1995 by NeXT Computer, Inc. All Rights Reserved.
PrintInfo |
Inherits From: | Object | |
Declared In: | appkit/PrintInfo.h |
Class Description |
A PrintInfo object stores information that's used during printing. The Application object automatically creates a PrintInfo object that, by default, is used for all printing jobs (for that application). You can create any number of additional PrintInfo objects; however, only one can be "active" at a time, as set through Application's setPrintInfo: method. The currently active PrintInfo object is returned through Application's printInfo method.
Although you can set a PrintInfo's attributes through the methods it provides, this is usually the task of other objects, notably the PageLayout and PrintPanel objects. The View or Window that's being printed may also supercede some PrintInfo settings. In particular, a View or Window can supply the range of pages in the document and can provide its own pagination mechanism through the knowsPagesFirst:last: and getRect:forPage: methods (see the documentation of these methods in the View class for details). If the printed View or Window doesn't supply a pagination, the PrintInfo's vertical and horizontal pagination constants are used to trigger built-in pagination mechanisms: |
Pagination Constant | Meaning | |
NX_AUTOPAGINATION | The image is diced into equal-sized rectangles and placed in one column of pages. | |
NX_FITPAGINATION | The image is scaled to produce one column (horizontal) or one row (vertical) of pages. | |
NX_CLIPPAGINATION | The image is clipped to produce one column or row of pages. |
Vertical and horizontal pagination needn't be the same. However, if either dimension is scaled (NX_FITPAGINATION), the other dimension is scaled by the same amount to avoid stretching the image. If both dimensions are scaled, the scaling factor that produces the smallest image is used. Note that PrintInfo's scaling factor (as set through setScalingFactor:) is independent of the scaling that's imposed by pagination and is applied after the document has been paginated.
The PrintInfo attributes that describe a size on a sheet of paper (the margins and the size of the paper rectangle) are in points, where 72 points equals one inch. Page numbers (firstPage, lastPage, and so on) are as they appear in the document. For example, to print the first three pages of a document that contains pages numbered from 20 to 29, firstPage would be set to 20 and lastPage to 22. |
Instance Variables |
char *paperType;
NXRect paperRect; NXCoord leftPageMargin; NXCoord rightPageMargin; NXCoord topPageMargin; NXCoord bottomPageMargin; float scalingFactor; char pageOrder; struct _pInfoFlags { } pInfoFlags; int firstPage; int lastPage; int currentPage; int copies; char *outputFile; DPSContext context; short pagesPerSheet; NXPrinter *printerObject; id jobFeaturesTable; const char *paperFeed; |
paperType | Type of paper. | |
paperRect | Rectangle representing the paper's area. | |
leftPageMargin | Size of the left margin in points. | |
rightPageMargin | Size of the right margin in points. | |
topPageMargin | Size of the top margin in points. | |
bottomPageMargin | Size of the bottom margin in points. | |
scalingFactor | Factor to scale image by. | |
pageOrder | Order of pages in document. | |
pInfoFlags.orientation | Landscape or portrait mode. | |
pInfoFlags.horizCentered | True if the image is centered horizontally on the page. | |
pInfoFlags.vertCentered | True if the image is centered vertically on the page. | |
pInfoFlags.allPages | True if all the pages are to be printed. | |
pInfoFlags.horizPagination | Horizontal pagination mode. | |
pInfoFlags.vertPagination | Vertical pagination mode. | |
firstPage | Page number of the first page to print. | |
lastPage | Page number of the last page to print. | |
currentPage | Page number of the page currently being printed. | |
copies | Number of copies to print. | |
outputFile | File to spool to. | |
context | Spooling context. | |
pagesPerSheet | The number of pages per sheet of paper. | |
printerObject | The printer that the printing job will run on. | |
jobFeaturesTable | Table of additional printing job attributes. | |
paperFeed | Paper feed slot name. |
Method Types |
Initializing and freeing a PrintInfo instance |
init |
free |
Defining the printing rectangle | setMarginLeft:right:top:bottom: |
getMarginLeft:right:top:bottom: setOrientation:andAdjust: orientation setPaperRect:andAdjust: paperRect setPaperType:andAdjust: paperType |
Page range | setFirstPage: |
firstPage setLastPage: lastPage setAllPages: isAllPages currentPage |
Pagination and scaling | setHorizPagination: |
horizPagination setVertPagination: vertPagination setScalingFactor: scalingFactor |
Positioning the image on the page |
setHorizCentered: |
isHorizCentered setVertCentered: isVertCentered setPagesPerSheet: pagesPerSheet |
Print job attributes | initializeJobDefaults |
setJobFeature:toValue: valueForJobFeature: removeJobFeature: jobFeatures setPageOrder: pageOrder setReversePageOrder: reversePageOrder setCopies: copies setPaperFeed: paperFeed |
Specifying the printer | + setDefaultPrinter: |
+ getDefaultPrinter setPrinter: printer |
Spooling | setOutputFile: |
outputFile setContext: context |
Archiving | read: |
write: |
Class Methods |
getDefaultPrinter |
(NXPrinter *)getDefaultPrinter |
Returns an NXPrinter object that corresponds to the user's default printer, as declared in the defaults database. If the printer can't be found, nil is returned.
See also: + setDefaultPrinter:, setPrinter:, printer |
setDefaultPrinter: |
setDefaultPrinter:(NXPrinter *)printer |
Sets the user's default printer by writing the name and host of printer to the defaults database. Unless a PrintInfo's printer is otherwise set (through setPrinter:) the default printer is used for printing.
See also: + getDefaultPrinter, setPrinter:, printer |
Instance Methods |
context |
(DPSContext)context |
Returns the Display PostScript context used for printing. |
copies |
(int)copies |
Returns the number of copies that will be printed. |
currentPage |
(int)currentPage |
Returns the page number of the page currently being printed. This method is valid only while printing or faxing. |
firstPage |
(int)firstPage |
Returns the page number of the first page that will be printed, as set through setFirstPage:, or MININT if the value hasn't been explicitly set. If all pages are being printed, the first page value is ignored during printing. If the page order is reversed, this value gives the page number of the last page that will be printed.
See also: setFirstPage:, setAllPages:, setPageOrder: |
free |
free |
Frees the PrintInfo object. |
getMarginLeft:right:top:bottom: |
getMarginLeft:(NXCoord *)leftMargin |
right:(NXCoord *)rightMargin top:(NXCoord *)topMargin bottom:(NXCoord *)bottomMargin |
Returns, by reference, the sizes of the four page margins measured in points.
See also: setMarginLeft:right:top:bottom: |
horizPagination |
(int)horizPagination |
Returns a constant that represents the manner in which an image is distributed horizontally among pages. See the class description, above, for a description of the pagination constants.
See also: setHorizPagination: |
init |
init |
Initializes the PrintInfo object after memory for it has been allocated through alloc or allocFromZone:. Returns self. |
initializeJobDefaults |
initializeJobDefaults |
Called before each print job (specifically, before the Print panel is displayed), this method initializes the following PrintInfo attributes: |
Attribute | Value | |
First page | MININT | |
Last page | MAXINT | |
Copies | 1 | |
Page order | First-to-last | |
Printer | The user's default printer | |
Paper feed | The default paper feed slot |
isAllPages |
(BOOL)isAllPages |
Returns whether all pages will be printed. If NO, only those pages that fall within [firstPage, lastPage] will be printed.
See also: setAllPages: |
isHorizCentered |
(BOOL)isHorizCentered |
Returns whether the image is centered horizontally on a page; if this returns NO, the image is flush against the left margin. If the image spills over more than one page horizontally, this value is ignored and the image is always set against the left margin. |
isVertCentered |
(BOOL)isVertCentered |
Returns whether the image is centered vertically on a page; if this returns NO, the image is flush against the top margin. If the image spills over more than one page vertically, then this value is ignored and the image is always set against the top margin.
See also: setVertCentered: |
jobFeatures |
(const char **)jobFeatures |
Returns a pointer to an array of pointers that contains the keys to the job features table, the hash table that contains additional printing-job attributes. You would use these keys as arguments to methods such as valueForJobFeature: and removeJobFeature:. It's the caller's responsibility to free the pointer to the array, but not the pointers in the array.
See also: setJobFeature:toValue:, valueForJobFeature:, removeJobFeature: |
lastPage |
(int)lastPage |
Returns the page number of the last page that will be printed, as set through setLastPage:, or MAXINT if the value hasn't been explicitly set. If all pages are being printed, the last page value is ignored during printing. If the page order is reversed, this value gives the page number of the first page that will be printed.
See also: setLastPage:, setAllPages:, setReversePageOrder: |
orientation |
(char)orientation |
Returns the page orientation as NX_PORTRAIT or NX_LANDSCAPE.
See also: setOrientation:andAdjust:, setPaperType:andAdjust:, setPaperRect:andAdjust: |
outputFile |
(const char *)outputFile |
Returns the name of the file to which the generated PostScript code is sent. If this is NULL, the code is written to a temporary file.
See also: setOutputFile: |
pageOrder |
(char)pageOrder |
Returns a constant that denotes the order in which pages are printed. See setPageOrder: for the page order constants.
See also: setPageOrder: |
pagesPerSheet |
(short)pagesPerSheet |
Returns the number of pages per sheet of paper. |
paperFeed |
(const char *)paperFeed |
Returns the name of the currently used paper feed slot.
See also: setPaperFeed: |
paperRect |
(const NXRect *)paperRect |
Returns a pointer to a rectangle that gives the size of the paper, measured in points. Note that the rectangle is useful only for its size field; the origin of the paper is always (0.0, 0.0). |
paperType |
(const char *)paperType |
Returns the paper type. If the type is unknown, an empty string is returned. |
printer |
(NXPrinter *)printer |
Returns the NXPrinter that's used for printing. |
read: |
read:(NXTypedStream *)stream |
Reads the PrintInfo from the typed stream stream. |
removeJobFeature: |
removeJobFeature:(const char *)key |
Removes, from the job-features hash table, the element that corresponds to key.
See also: jobFeatures, setJobFeature:toValue:, valueForJobFeature: |
reversePageOrder |
(BOOL)reversePageOrder |
Returns YES if the PrintInfo dictates that pages will be printed in reverse order (in other words, if the ordering established through setPageOrder: is reversed).
See also: setReversePageOrder:, setPageOrder: |
scalingFactor |
(float)scalingFactor |
Returns the factor by which the image is scaled. |
setAllPages: |
setAllPages:(BOOL)flag |
Sets whether all the pages of the document are to be printed (as opposed to a subset given by the firstPage and lastPage values). |
setContext: |
setContext:(DPSContext)aContext |
Sets the Display PostScript context used for printing. This is normally done by the printing machinery in View. |
setCopies: |
setCopies:(int)anInt |
Sets the number of copies that will be printed. |
setFirstPage: |
setFirstPage:(int)anInt |
Sets the page number of the first page that will be printed. |
setHorizCentered: |
setHorizCentered:(BOOL)flag |
Sets whether the image is centered horizontally on a page; if flag is NO, the image is flush against the left margin. If the image spills over more than one page horizontally, then flag is ignored and the image is always against the left margin. |
setHorizPagination: |
setHorizPagination:(int)mode |
Sets the way in which a document is divided horizontally into pages. See the class description, above, for the pagination constants that you can use as the argument to this method. |
setJobFeature:toValue: |
setJobFeature:(const char *)feature toValue:(const char *)value |
Sets the value of the given job feature. The feature is added to the job-features hash table if it isn't already present. |
setLastPage: |
setLastPage:(int)anInt |
Sets the page number of the last page that will be printed. |
setMarginLeft:right:top:bottom: |
setMarginLeft:(NXCoord)leftMargin |
right:(NXCoord)rightMargin top:(NXCoord)topMargin bottom:(NXCoord)bottomMargin |
Sets the margins. All margins are in points. |
setOrientation:andAdjust: |
setOrientation:(char)mode andAdjust:(BOOL)flag |
Sets the orientation or the page; mode should be either NX_PORTRAIT or NX_LANDSCAPE.
If flag is NO, then only the orientation is affected. If flag is YES, the paper rectangle value is updated to reflect the new orientation. |
setOutputFile: |
setOutputFile:(const char *)aString |
Sets the name of the file to which the generated PostScript code is sent. If aString is NULL, the code is sent to a temporary file. |
setPageOrder: |
setPageOrder:(char)mode |
Sets the order in which pages are printed as one of these constants: |
NX_DESCENDINGORDER NX_SPECIALORDER NX_ASCENDINGORDER NX_UNKNOWNORDER |
See also: reversePageOrder, pageOrder |
setPagesPerSheet: |
setPagesPerSheet:(short)pageCount |
Sets the number of pages of the document that are printed on a single sheet of paper. This number is rounded up to a power of two when used by the system. |
setPaperFeed: |
setPaperFeed:(const char *)paperFeedSlot |
Sets the paper feed slot by name. If paperFeedSlot is NULL (or an empty string), any paper feed slot is acceptable; to choose the manual feed slot, set the name to "NXManual". Any other name that you use must appear in the PPD table (as documented in the NXPrinter class). Returns self.
See also: setPaperFeed: |
setPaperRect:andAdjust: |
setPaperRect:(const NXRect *)aRect andAdjust:(BOOL)flag |
Sets the size of the paper, measured in points, that's to be used in printing. The origin of the rectangle is always set to (0,0)--the origin field of aRect is ignored.
If flag is NO, then only the paper rectangle is changed. If flag is YES, the orientation and paper type values are updated to reflect the new size. |
setPaperType:andAdjust: |
setPaperType:(const char *)type andAdjust:(BOOL)flag |
Sets the name of the paper type.
If flag is NO, only the paper type is changed. If flag is YES, the paper rectangle and orientation values are updated to reflect the new type (given that type is a recognized paper type). |
setPrinter: |
setPrinter:(NXPrinter *)aPrinter |
Sets the printer that's used in subsequent printing jobs. |
setReversePageOrder: |
setReversePageOrder:(BOOL)flag |
Sets whether pages are printed in reverse order. This ordering is applied to the page order mode set through setPageOrder:. Returns self.
See also: reversePageOrder, setPageOrder: |
setScalingFactor: |
setScalingFactor:(float)aFloat |
Sets the amount by which the document is scaled. Note that the scaling you set has no effect if the document does its own pagination through View's knowsPagesFirst:last: method. |
setVertCentered: |
setVertCentered:(BOOL)flag |
Sets whether the default implementation of placePrintRect:offset: in the View class centers the image vertically on the page. |
setVertPagination: |
setVertPagination:(int)mode |
Sets the way in which a document is divided vertically into pages. See the class description, above, for the pagination constants that you can use as the argument to this method. |
valueForJobFeature: |
(const char *)valueForJobFeature:(const char *)feature |
Returns the value for the given printing feature, as stored in the job-features table.
See also: jobFeatures, setJobFeature:toValue:, removeJobFeature |
vertPagination |
(int)vertPagination |
Returns a constant that represents the manner in which an image is distributed vertically among pages. See the class description, above, for a description of the pagination constants.
See also: setVertPagination: |
write: |
write:(NXTypedStream *)stream |
Writes the PrintInfo to the typed stream stream. |