Title:
TIFF-file data structure for driverless, selectable multi-option TIFF printing
Kind Code:
A1


Abstract:
A TIFF-file data structure for use by a printer to print a plural-page print job relating to serially-paginated pages, in the context of implementation by the printer of a driverless, page-image-data-independent printing method, where the data structure exists in the form of an otherwise conventional TIFF-file data structure which has been modified by the selective alteration therein of solely at least one of (a) the order, and (b) the orientation, of page printing from a multi-page TIFF file. The subject data structure includes (a) plural, page-specific page-data units, one for each page in a print job, and (b) for each page-data unit, an associated path pointer which, during printing, defines the relative order of specific page-data-unit printing, such path pointers collectively being internally data-constructed to direct a printing operation in a manner whereby not all successively page-numbered page-data units are printed successively in regular serial order.



Inventors:
Ferlitsch, Andrew Rodney (Tigard, OR, US)
Application Number:
11/732024
Publication Date:
08/09/2007
Filing Date:
04/02/2007
Assignee:
Sharp Laboratories of America, Inc.
Primary Class:
International Classes:
B41J29/38; G06F3/12; B41J5/30
View Patent Images:
Related US Applications:



Primary Examiner:
SINGH, SATWANT K
Attorney, Agent or Firm:
Jon M. Dickinson, P.C. (PORTLAND, OR, US)
Claims:
I claim:

1. A TIFF-file data structure for use by a printer to print a plural-page print job relating to serially-paginated pages, in the context of implementation by the printer of a driverless, page-image-data-independent printing method, where the data structure exists in the form of an otherwise conventional TIFF-file data structure which has been modified by the selective alteration therein of solely at least one of (a) the order, and (b) the orientation, of page printing from a multi-page TIFF file, said data structure comprising plural, page-specific page-data units, one for each page in the job, and for each said page-data unit, an associated path pointer which, during printing, defines the relative order of specific page-data-unit printing, said path pointers collectively being internally data-constructed to direct a printing operation in a manner whereby not all successively page-numbered page-data units are printed successively in regular serial order.

2. The data structure of claim 1, wherein the paths associated with said pointers are constructed to effect multi-page, page-specific printing of page-data units represented in the data structure in a printing-system configuration which normally supports only a single-page TIFF file.

3. The data structure of claim 1, wherein the paths associated with said pointers are constructed to effect page splitting relative to the page-specific page-data units.

4. The data structure of claim 1, wherein the paths associated with said pointers are constructed to effect selective page-specific printing relative to the plural, page-specific page-data units present in the data structure.

5. The data structure of claim 1, wherein the paths associated with said pointers are constructed to enable face-down printing of the plural, page-specific page-data units present in the data structure.

6. The data structure of claim 1, wherein the paths associated with said pointers are constructed to enable face-up printing of the plural, page-specific page-data units present in the data structure.

7. The data structure of claim 1, wherein the paths associated with said pointers are constructed to enable selective, per-page-data-unit, multi-copy printing from the data structure.

8. The data structure of claim 1, wherein the paths associated with said pointers are constructed to enable selective, uncollated, multi-copy, per-page-data-unit printing from the data structure.

9. The data structure of claim 1, wherein the paths associated with said pointers are constructed to enable selective, collated, multi-copy, per-page-data-unit printing from the data structure.

10. The data structure of claim 1, wherein the paths associated with said pointers are constructed to enable selective portrait or landscape printing of the page-data units in the data structure.

Description:

BACKGROUND AND SUMMARY OF THE INVENTION

This invention relates to the printing of multi-page documents from a TIFF file, and specifically to the driverless printing of such documents, in a manner which also enables the convenient implementation and performance of a multiplicity of conventional print options. In particular, the invention involves specifically a unique TIFF-file data structure (also called a TIFF file) which features modifications in the Image File Directory (IFD) portion(s) of that data structure, and which thereby enables such driverless printing.

IFD data in a TIFF file is associated with each page-specific (image) data unit, referred to herein both as a page-data unit, and sometimes as a data-page unit. Such IFD data is normally organized to establish regular, serial-order sequential printing of pages. The IFD data includes operational path pointers for directing this normal activity.

As will be seen, the invention, in its focus on a TIFF-file data structure as mentioned, provides an easy and elegant way to utilize the internal structure of a TIFF file per se to enable driverless, rasterization-free, multi-option-capability, TIFF-file printing.

What is more specifically proposed by this invention is a TIFF-data file structure wherein modifications have been made in an otherwise conventional TIFF-file data structure regarding the page-order and/or page-orientation contents only of IFD data contained in that data structure. Associated image data, per se, is not altered. Such page-order and/or page-orientation modifications can readily enable rasterization-free, driverless implementation of multi-page-printing, with full access to a wide range of conventional print options, such as document page splitting, page-specific printing with respect to certain selected pages, face-down and face-up printing where desired, multi-copy per-page printing of selected pages from a file, collated multi-page printing, uncollated multi-page printing, and many others.

The IFD changes which are made to create the TIFF-data file structure of this invention relate only to page-order and/or page-orientation tag changes therein, which tag changes include, in general terms, (a) additions, (b) subtractions, and (c) internal modifications, as by the rewriting of pointers.

While there are various ways to generate the modified TIFF-data file structure of the invention, one very convenient way includes intercepting an otherwise conventional TIFF-data file upstream from a printer, and then appropriately changing just (i.e., solely only) the page-order tags and/or the page-orientation tags of IFD data present in that file, so as to implement, after such modification, and in a driverless manner, a selected print option, which “manner” differentiates from normal TIFF-file printing. Such a modified data file—a TIFF-file data structure—includes information that directs the operation of page printing in accordance with the selected print option.

These and other objects and advantages which are attained by the invention will become more fully apparent as the description that now follows is read in conjunction with the accompanying drawings.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified block/schematic diagram generally illustrating the methodological and structural organization associated with and enabled by the TIFF-file data structure of the present invention.

FIG. 2 is a block/schematic diagram illustrating direct TIFF printing with multi-page TIFF emulation, thus to enable printing of multiple pages in a system arrangement which nominally supports only a single-page TIFF file.

FIG. 3 (two different views) illustrates multiple-page, document-page splitting of pages in a TIFF file in accordance with the invention.

FIG. 4 illustrates implementation according to the invention of a print option allowing for selective page-specific printing of just certain pages represented in a TIFF file.

FIG. 5 (two views) illustrates, on the left side of the figure, face-down (normal order) printing from a TIFF file, and on the right side, face-up (reverse order) printing from a TIFF file in accordance with the present invention.

FIG. 6 illustrates selective, per-page multi-copy printing of selected pages from a TIFF file in accordance with the invention.

FIG. 7 is a block/schematic diagram picturing selective, uncollated multi-copy per-page printing of pages from a TIFF file in accordance with this invention.

FIG. 8 is a block/schematic view showing selective, collated, multi-page, per-page printing of pages from a TIFF file in accordance with practice of the present invention.

FIG. 9 is a block/schematic diagram illustrating selective portrait or landscape printing of pages from a TIFF file in accordance with practice of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Turning now to the drawings, as this description moves through each of the nine drawing figures herein, the elegance, simplicity, and versatility of the present invention should become very apparent with respect to its ability to accommodate rasterization-free, driverless, multi-option-selectability of print options with respect to the carrying out of multi-page TIFF-file print jobs. Each of these drawing figures, which is largely self-explanatory, illustrates one or more practices of the present invention. The entire collection of drawing figures, however, is not exhaustively illustrative of all possible print options which can be implemented in accordance with practice of this invention. How to invoke such other options in accordance with this invention will become apparent to those skilled in the art from the several specific illustrations presented herein. In each of FIGS. 2-9, inclusive, outrigger arrows are presented on one or both side of the pictured block portions of the figures. These arrows illustrate changes that have been made, in accordance with the present invention, in the operation of IFD operational pointers to enable selected-option printing of the represented TIFF file.

With this understood, and turning attention first of all to FIG. 1, here, in an overall or overview sense, the structure, and the thereby enabled methodology, which are basic to the implementation and practice of the present invention is diagrammed in four blocks which are labeled 10, 12, 14, 16. Collectively, these four blocks, which are pointed to by single arrow 18, represent a high-level comprehensive view of the practice and the structure of this invention. Block 10 relates to the creation of a multi-page TIFF file, such as under the control of a suitable document-creating application in a computer. In block 12, the user selects one or more print options which is/are to be implemented with respect to printing of this multi-page document file. Block 14 represents the practice and structure for creating appropriate, and solely only, page-order and/or page-orientation modifications in the Image File Directory (IFD) data content of the created TIFF file (TIFF-file data structure) of this invention. It is within the operation and practice of block 14 that an otherwise conventional page-order, and/or page-orientation, content of IFD TIFF-file data is changed, by adding information, by subtracting information, and/or by modifying information, so as to enable rasterization-free, driverless performance of various print-options by an otherwise conventional printing environment represented by block 16. It is within the operation represented by block 14 that the methodology enabled by the present invention, with respect specifically to enablement of multi-print-option selectability, becomes implemented. In each of the now to be discussed drawing figures, what takes place within the purview of block 14 is more specifically shown diagrammatically with respect to several, different, multi-page, document-print options.

With attention directed to FIG. 2, here, indicated generally at 20, is a block/schematic layout of direct TIFF printing utilizing multi-page TIFF emulation in accordance with the present invention. Those familiar with, and skilled in, the art will recognize from a glance at this drawing figure how manipulation of the IFD data in the TIFF-file data structure shown in FIG. 2 can enable multi-page emulation.

This illustration, as associated with the invention, addresses the issue of printing a multiple-page TIFF file to firmware (i.e. a structural arrangement) that nominally supports only a single-page TIFF file. To print multiple pages, a printing device typically constructs a separate print job on a per-page basis. This print job may be constructed by, for example, a document-creating application, some background process, a printer driver, a spooler, a print processor, or a print assistant that is inserted somewhere in the relevant print-data stream.

The invention approaches this task by not creating a separate physical spool file. Instead, TIFF data is directly written to the port manager for the specified printing device, or devices, and the data is modified in memory in an appropriate manner. In accordance with creation and use of the TIFF-file data structure of the invention, printing of multiple pages on what is otherwise a single-page TIFF reader is accomplished by modifying and altering simply the IFD page-order pointer which is directed to the first IFD in the file. The IFD describes the contents and locations of an image (i.e. a page); each page in the file has a separate IFD; and each IFD is sequentially linked to the next IFD in the file.

Referring to FIG. 2, printing of each successive page in the represented TIFF file is accomplished by changing the value of the first IFD offset to the IFD offset that corresponds to that particular successive page. For example, with respect to a three-page TIFF file, that file would be written AS-IS to the printer for page one. For page two, the first IFD offset would be changed in memory to identify the IFD offset of the second page as the TIFF file is written to the printer. For the third page, the first IFD offset would be changed, again in memory, to the appropriate IFD offset for the third page as the file is written to the printer. Table I immediately below sets forth the detailed algorithm for implementing this multi-page TIFF printing emulation option exercised and accommodated in accordance with practice of the present invention in the construction and use of the proposed, unique TIFF-file data structure.

TABLE I
////------------- Multi-Page TIFF Printing Emulation on Single Page
Baseline TIFF Reader-------------////
// Find and Record the IFD offsets in the TIFF file
//
call subroutine FindRecordIFDOffsets( )
// Write each page to Printer
//
for each page in TIFF file
{
// Schedule a new Print Job
//
Start Print Job
// Rewind TIFF file
//
Seek to the 1st byte in TIFF file
// Write Header to Printer
//
Read 4 byte header in TIFF file
Write 4 byte header to printer
// Write IFD offset for the 1st IFD on this print job
//
Write the recorded IFD offset of the next IFD image (i.e., page)
to the printer
// Discard original 1st IFD offset
//
Seek to the 9th in the TIFF file
// Write remainder of the TIFF file to the Printer
//
While ( reading remaining contents of TIFF file )
{
write remaining contents of TIFF file to printer
}
// Finish Print Job
//
End Print Job on Printer
}

FIG. 3 in the drawings presents at 22, 24 two block/schematic diagrams that give two illustrations of direct TIFF printing with selective document splitting in accordance with the invention. Pictured in these two illustrations is a five-page TIFF file with respect to which, according to the illustration designated 22, only pages one, two and three are to be printed. The illustration designated at 24 pictures selective printing of only pages four and five.

In implementing this version of the present invention, the TIFF reader employed in the particular printing device or devices is (are) presumed to be capable of supporting multiple-page TIFF formats. In a case where the employed TIFF reader is one which supports only single-page TIFF formats, the process illustrated in FIG. 3 for emulating document splitting can still be accomplished in accordance with the invention, as will become apparent to those skilled in the art, simply by combining what is now to be described herein with respect to FIG. 3 along with what is pictured and described with regard to FIG. 2.

The printing of selected pages in a document-splitting practice, enabled by the data file structure of the invention is accomplished, as an illustration, by changing the value of the first IFD offset to the IFD offset of the first page in the corresponding page sequence which is to be printed, and by changing the value of the IFD offset of the last page in the corresponding page sequence. For example, on a ten-page document which is to be split into page sequences 1-5, inclusive, and 6-10, inclusive, the TIFF for the first sequence would be sent to a printer with the next IFD offset of the fifth page image changed to zero in memory to indicate the last page. The second sequence would be sent to the printer with the first IFD offset changed to the IFD offset of the sixth page image in memory to indicate the first page.

This just-described approach is pictured for the splitting of a five-page TIFF file document into two sequences, with one including pages 1-3, inclusive, and the second including pages 4 and 5.

An appropriate algorithm to accomplish this in accordance with the invention is set forth below in Table II

TABLE II
////------------- Document Splitting on Multi-Page TIFF
Reader -------------////
// Find and Record the IFD offsets in the TIFF file
//
call subroutine FindRecordIFDOffsets( )
// Write each page sequence to Printer
//
for each page sequence
{
// Schedule a new Print Job
//
Start Print Job
// Rewind TIFF file
//
Seek to the 1st byte in TIFF file
// Write Header to Printer
//
Read 4 byte header in TIFF file
Write 4 byte header to printer
// Write IFD offset for the 1st IFD on this print job
//
Write the recorded IFD offset of 1st page in this page sequence
to the printer
// Discard original 1st IFD offset
Seek to the 9th byte in the TIFF File
// Write Remainder of TIFF file to Printer
While ( reading remaining contents of TIFF file )
{
if ( file offset of the last page's IFD in the page sequence
{
 Read the IFD entries from TIFF file
 Write the IFD entries to printer
 Read and Discard next IFD offset from TIFF file
 Write 4 byte 0 zero value as next IFD offset to Printer
 continue
}
write remaining contents of TIFF file to printer
}
End Print Job

FIG. 4 in the drawings illustrates at 26 a block/schematic diagram showing direct TIFF printing implementing non-consecutive page-sequence printing, also referred to herein as selective page-specific printing, from a TIFF file. In this version of use of the invention, the TIFF reader in the printing device which is to be employed is assumed to support multiple-page TIFF formats, but as was mentioned above with respect to the last-described embodiment of the invention, the process now to be described can be accomplished in a situation where only single-page TIFF formats are supported, by combining what will now to be described with the practice description which has already been set forth above herein.

The printing of so-called page sequences is accomplished principally by manipulating one or more IFD offsets corresponding to the pages in the non-consecutive sequence. For example, this is accomplished by changing the value of the first IFD offset to the IFD of the first page in the non-consecutive page sequence, and by changing the next IFD offset of this page to the IFD offset of the next page in the non-consecutive sequence, and so forth. The next IFD offset of the last page in the non-consecutive page sequence is set to zero (null) to indicate the end of the sequence. For example, the non-consecutive page sequence 1-2, inclusive, and 4 out of a five-page document would be sent to the TIFF reader in the printing device with the IFD offset of the second page changed to the IFD offset of the fourth page, and the IFD offset of the fourth page changed to zero (null) to indicate the end of the non-consecutive selected sequence. Table III immediately below illustrates the algorithm appropriate for this behavior of what is shown in FIG. 4.

TABLE III
////------------- Non-Consecutive Page Sequences on Multi-Page TIFF
Reader------------////
// Find File and Record the IFD offsets in the TIFF file
//
call subroutine FindRecordIFDOffsets ( )
// Schedule a new Print job
//
Start Print Job
// Rewind TIFF file
//
Seek to the 1st byte in TIFF file
// Write Header to Printer
//
Read 4 byte header in TIFF file
Write 4 byte header to printer
// Write IFD offset for the 1st IFD on this print job
//
Write the recorded IFD offset of 1st page in the non-consecutive page
sequence to printer
// Discard original 1st IFD offset
//
Seek to the 9th byte in the TIFF File
// Write Remainder of TIFF file to Printer
//
While ( reading remaining contents of TIFF file )
{
if ( IFD offset of page in non-consecutive page sequence)
{
Read the IFD entries from TIFF file
Write the IFD entries to printer
Read and Discard the next IFD offset from TIFF file
Write IFD offset of next page in non-consecutive page
sequence to printer
continue
}
write remaining contents of TIFF file to printer
}
// Finish Print Job
End Print Job

FIG. 5 in the drawings illustrates at 28 a block/schematic diagram depicting face-down (normal order) collation printing, and at 30, a block/schematic illustration of face-up (reverse order) collation printing practiced in accordance with the invention.

Face-down printing is, of course, a normal order print sequence for handling by a conventional TIFF file. Here, little if any IFD manipulation is required unless there is, in addition, some further print option to be implemented which, while generally calling for a normal order arrangement of printing, nevertheless introduces some additional requirement that invokes the need to change IFD data in some fashion. Face-up printing, however, requires a specifically related change in IFD data content.

To accomplish face-up, reverse-order printing according to the invention, all of the IFD offsets normally presented in the standard TIFF-file data format are reversed, in order to assure that images are printed in a manner which will result in face-up collation. In reverse-order, face-up printing, the numeric last page in the file is printed first, the next to last numbered page is printed second, the third from last page is printed third, etc. A completed job results in the presentation to the user of a printed document which reads, from top to bottom, first-to-last page.

Printing a face-up collated page sequence in accordance with the invention, thus, is accomplished by changing, in the TIFF-file data structure, the value of the first IFD offset to the last page, the next IFD offset of the first page to zero (null), and all of the remaining next IFD offsets to the IFD offset of the prior page. For example, in a four-page document, the first IFD offset is set to the fourth page, the next IFD offset of the fourth page is set to the third page, the next offset of the third page is set to the second page, the next IFD offset of the second page is set to the first page, and the IFD offset of the first page is set to zero (null) to indicate the last page of the job.

Table IV immediately below presents an algorithm for accomplishing this performance.

TABLE IV
// Find and Record the IFD offsets in the TIFF file
//
call subroutine FindRecordIFDOffsets( )
// Schedule a new Print Job
//
Start Print Job
// Rewind TIFF file
//
Seek to the 1st byte in TIFF file
// Write Header to Printer
//
Read 4 byte header in TIFF file
Write 4 byte header to printer
// Write IFD offset for the 1st IFD on this print job
//
Write the recorded IFD offset of last page to printer
// Discard original 1st IFD offset
//
Seek to the 9th byte in the TIFF File
// Write Remainder of TIFF file to Printer
//
While ( reading remaining contents of TIFF file )
{
if ( IFD offset of page )
{
Read the IFD entries from TIFF file
Write the IFD entries to printer
Read and Discard next IFD offset from TIFF file
If ( 1st Page )
Write 4 byte 0 to indicate last page to printer
else
Write IFD offset of previous page to Printer
continue
}
write remaining contents of TIFF file to printer
}
// Finish Print Job
End Print Job

FIG. 6 in the drawings illustrates at 32 the TIFF-file practice, according to this invention, of direct TIFF printing of multiple copies of a single page in a multiple-page TIFF file. Such multi-copy printing selected from a multi-page TIFF file is accomplished by appending a copy of the first IFD to the end of the entire TIFF file for each copy which is greater than one in number, and by changing the value of the first IFD next IFD offset from zero (null) to the offset of the first IFD copy. The next IFD offset of each IFD copy is then altered to read to the next appended IFD copy, until the last IFD copy is reached, where the next IFD offset is set to zero (null) to indicate the last copy.

FIG. 6 specifically illustrates the printing of three duplicated copies of one page in a multi-page TIFF file in accordance with the practice just stated above.

Performance of the special TIFF-file data structure of the invention in accordance with this kind of print option works without repetitively sending image data per copy for printing, but instead by repetitively sending IFDs (which are relatively small data files, or sub-files), to point back to the original first image, so that the associated TIFF reader simply repeats reading and printing of the same page for each copy. One should note that image data offsets in the IFD entries according to this practice of the invention progress from the beginning of the file, and thus the IFD data does not need to be otherwise modified. For example, in a three-copy single-page print request, the first IFD would be parsed from the TIFF file, and appended to the end of the TIFF data once for each copy other than one that is called for in the specific print job. The original IFD represents the first copy. The next IFD offset of the first IFD is changed to point to the IFD offset of the first copy, thus yielding a second duplicate copy, and the next IFD offset of the first copy is set to the IFD offset of the second IFD copy, thus producing the third duplicate copy. The next IFD offset of the second IFD copy would be set to zero (null), thus to indicate the last called-for duplicate copy.

Table V immediately below presents an appropriate algorithm for this activity.

TABLE V
////------------- Single Page Multi-Copy on Multi-Page TIFF
Reader -------------////
// Find and Record the 1st IFD in the TIFF file
//
call subroutine FindRecord1stIFDData( )
//// Schedule a new Print Job
//
Start Print Job
// Rewind TIFF file
//
Seek to the 1st byte in TIFF file
// Write Header and 1st IFD offset to Printer
//
Read 8 byte header/1st IFD in TIFF file
Write 8 byte header/1st IFD to printer
// Write Remainder of TIFF file to Printer
//
While ( reading remaining contents of TIFF file )
{
// Change next IFD offset of 1st IFD
//
if ( IFD offset of 1st page )
{
Read the IFD entries from TIFF file
Write the IFD entries to printer
Read and Discard the next IFD offset
Write offset of End of File as next IFD offset
continue
}
write remaining contents of TIFF file to printer
}
// Append a copy of the 1st IFD for each additional copy> 1
for each copy > 1
{
Write 1st IFD data to printer
If ( last copy )
Write 4 byte 0 to indicate last copy to the printer
else
Write offset of new End of File as next IFD offset to printer
}
// Finish Print Job
End Print Job

Directing attention now to FIG. 7 in the drawings, here, what is illustrated at 34 is a block/schematic picturing of the practice according to the invention of what is referred to herein as selective, uncollated, multi-copy, per-page printing of pages from a multi-page TIFF file.

Printing multiple uncollated copies selected from a multiple-page TIFF file is accomplished by appending a copy of each page's IFD to the end of the TIFF for each copy requested which is greater than one in number, by changing the value of the first IFD next IFD offset from zero (null), to the offset of the first page's first IFD copy, and by changing the next IFD offset of each IFD copy to the next appended IFD copy, until the last IFD copy is reached, where the next IFD offset is set to zero (null), to indicate the last copy of the last called-for page.

For example, in a two page, two-copy print job, the IFDs for pages one and two are parsed from the TIFF file. The copy of the first IFD is appended to the end of the TIFF data, once per called-for copy greater than one in number. The next IFD offset of the first IFD is changed to point to the IFD offset of the first IFD copy (thus creating the second duplicate page copy), and the next IFD offset of the first IFD copy is set to the IFD of the second page. The copy of the second-page IFD is appended to the end of the TIFF data, once per called-for copy greater than one in number. The IFD offset of the second IFD is changed to point to the IFD offset of the second IFD copy (i.e. the second page copy) and the next IFD offset of the second IFD copy is set to zero (null), to indicate the last copy of the last page in the job.

Table VI below presents an appropriate algorithm.

TABLE VI
////------------- Multiple Page Uncollated Multi-Copy on Multi-Page TIFF
Reader -------------////
// Find and Record the IFDs and IFD offsets in the TIFF file
//
call subroutine FindRecordIFDOffsetsAndIFDData( )
// Schedule a new Print Job
//
Start Print Job
// Rewind TIFF file
//
Seek to the 1st byte in TIFF file
// Write Header and 1st IFD offset to Printer
//
Read 8 byte header/1st IFD in TIFF file
Write 8 byte header/1st IFD to printer
// Write the multiple copies per page
//
for each page in TIFF file
{
// Write TIFF data to the Printer
//
While ( reading contents of TIFF file )
{
// Change the IFD next offset to the corresponding IFD
copy appended to data
//
if ( IFD offset )
{
Read the IFD entries form TIFF file
Write the IFD entries to printer
Read and Discard the next IFD offset
Write File Offset to corresponding IFD copy of page
to printer
}
else
write contents of TIFF file to printer
}
}
// Append IFD copies > 1 of each page in uncollated manner
//
for each page in TIFF file
{
// Append IFD copies > 1 for this page to end of TIDD data
//
for copies > 1
{
Write IFD copy of page to printer
// Last Copy, Point back to next page's original IFD,
if not last page
//
If ( last copy )
{
If ( last page )
Write 4 byte 0 to indicate the last copy of
last page to printer
else
Write next IFD offset to offset of original
IFD of next page to printer
}
// Point to next IFD copy of this page
//
else
Write offset of new End of File as next IFD offset
to printer
}
}
// Finish Print Job
//
End Print Job on Printer

Addressing now what is shown in FIG. 8, here illustrated in block/schematic form at 36 is practice, according to the present invention, of direct TIFF printing of selected, collated, multi-page, per-page renditions of pages drawn from a TIFF-file data structure made in accordance with the present invention.

Printing of such multiple collated copies of a multi-page TIFF file is accomplished by appending a copy of each page's IFD to the end of the TIFF file in sequential page order for each copy greater than one in number which is called for, by changing the value of the last page's next IFD offset from zero (null) to the offset of the first page's first IFD copy, and by changing the next IFD offset of each IFD copy to the next appended IFD copy until the last IFD copy is reached, where the next IFD offset is set to zero, or null, to indicate the last copy in the job.

For example, in a specific print job calling for two copies of two pages, the IFD for pages one and two would be parsed from the TIFF file. Copies of the first and second IFDs would be appended the end of the TIFF data in sequential page order once per copy in number greater than one. The next IFD offset of the last page's IFD would be changed to point to the IFD offset of the first IFD copy (thus yielding the first page of the second copy), and the next IFD offset of the first IFD copy would be set to the IFD of the second page IFD copy. The next IFD offset of the second page IFD copy would be set to zero (null), thus to indicate the end of the last copy.

Table VII below sets forth an appropriate algorithm for this behavior.

TABLE VII
////------------- Multiple Page Collated Multi-Copy on Multi-Page TIFF
Reader -------------////
// Find and Record the IFDs and IFD offsets in the TIFF file
//
call subroutine FindRecordIFDOffsetsAndIFDData( )
// Schedule a new Print Job
//
Start Print Job
// Rewind TIFF file
//
Seek to the 1st byte in TIFF file
// Write TIFF data to Printer
//
while ( reading remaining TIFF data )
{
// Last Page in 1st Copy
//
if ( IFD offset of last page )
{
Read the IFD entries from TIFF file
Write the IFD entries to printer
Read and Discard the next IFD offset
Write File Offset of End of File corresponding to
1st page of 2nd copy to printer
}
else
write remaining TIFF data to printer
}
// Append IFD copies > 1 of each page in collated manner
//
for ( copies > 1 )
{
// Append IFD of this page to end of TIFF data
//
for each page
{
Write IFD copy of this page to printer
// End copies, Last Page of Last Copy
//
if ( last page of last copy )
{
Write 4 byte 0 to indicate last page of last copy to
printer
}
else
Write File Offset of End of File corresponding to
next page of copy to printer
}
// Finish Print Job
//
End Print Job on Printer

FIG. 9 in the drawings presents at 38 a block/schematic diagram which explains how practice of the invention can enable selective printing of pages from a TIFF file either in portrait or in landscape format, and specifically, illustrates a situation in which a part of the file is called for to be printed in portrait format, and the balance to be printed in landscape format.

Printing in landscape mode, which is not the normal default mode, is accomplished by rotating the image 90-degrees to the left, by setting the IFD directory entry for orientation to 8. 8=0th row represents the visual left-hand side of the image, and the 0th column represent the visual bottom of the image. Such printing in landscape mode is accomplished by parsing the IFD directory entries for the orientation entry, and by changing the entry, per page where required, to the value of 8.

Table VIII below describes and sets forth an algorithm for performing in this manner according to the invention.

TABLE VIII
////------------- Landscape Printing on TIFF Reader -------------////
// Schedule a new Print Job
//
Start Print job
// Rewind TIFF file
//
Seek to the 1st byte I TIFF file
// Write TIFF data to Printer
//
while ( reading remaining TIFF data )
{
//IFD of Page
//
if ( IFD offset )
{
Read No. of Directory Entries
// Parse and Write each Directory Entry to Printer
//
for each directory entry
{
Write Tag, Count and Data Type to Printer
/ Change Orientation Value to 8 ( Landscape )
//
if ( directory entry is orientation )
Write value of 8 in specified data type to printer
else
Write Data Value in specified data type to printer
}
}
}
// Finish Print Job
//
End Print Job on Printer

It will thus be apparent that the present invention proposes a unique and very elegant and sophisticated approach toward utilizing the page-order, and/or page-orientation, data content by specially re-structuring an otherwise conventional TIFF multi-page data file to accomplish driverless, rasterization-free, direct TIFF printing under circumstances allowing free selection and implementation of a very wide range of popular print options. IFD data which becomes modified by practice of the present is limited to page-order, and/or page-orientation, tag data.

While a number of file structure embodiments, and manners of practicing the present invention, have been fully described and illustrated herein, it is appreciated that variations and modifications may be made without departing from the spirit of the invention.