Translating PDL-based print stream to job ticket-based print stream

Using techniques described herein, separate “job ticket” data and printable data may be generated automatically from a PDL-compliant print stream. According to one technique, an automated mechanism receives a PDL-compliant print stream as input. The PDL-compliant print stream describes both printable content and control data, as described above. The automated mechanism separates the printable content data from the control data. The automated mechanism may translate the printable content data from a printer definition language into a format that is designed to be understood by human beings. The automated mechanism generates two separate “packages” of data; one “package” describes the printable content, and the other “package,” the “job ticket,” describes the control data. Thus, in one embodiment of the invention, the automated mechanism separates the PDL-compliant print stream into a “job ticket” and printable content data. The “job ticket” may be stored separately from the printable content data.

FIELD OF THE INVENTION

The present invention relates to printers, and more particularly to translating a printer definition language (PDL)-based print stream into a job ticket-based print stream.

BACKGROUND

A printer definition language (or, alternatively, “page description language”) (PDL) is a language that describes the contents of a printable page at a higher level than the level at which an actual bitmap would describe those contents. Some examples of printer definition languages include Advanced Function Presentation (AFP), Diablo, Device Independent (DVI), Eltron Programming Language (EPL), ESC/P2, Intelligent Printer Data Stream (IPDS), Metacode, Printer Command Language (PCL), Portable Document Format (PDF), PostScript, Personal Printer Data Stream (PPDS), Scalable Vector Graphics (SVG), and XSL Formatting Objects (XSL-FO).

A print stream contains information that a printing device (e.g., a printer, copying machine, or multi-function peripheral) receives and uses to print content on print media (usually paper of some kind). When such information is described in a printer definition language, the print stream that contains that information is a PDL-compliant print stream.

Typically, a PDL-compliant print stream contains two kinds of data: (1) the data that describes the content of the text and/or images that are actually to be printed and seen on the resulting printed page and (2) control data that describes other attributes of the printing task or job, but that is independent of the content itself. Examples of attributes that might be described within control data include paper size (and/or input tray), printer identity, whether the content is to be printed in color or grayscale, resolution (e.g. in dots per inch), and the number of copies to be printed. In many cases, the control data describes printing device-dependent attributes; the specific PDL in which the control data are expressed may depend on the set of PDLs that the target printing device is configured to interpret. The same printable content could be printed at different times and locations with different print control attributes.

For example, a first PDL-compliant print stream might describe a particular image (the content) and first control data that indicates that the particular image is to be printed at 300 dpi on letter-size paper in grayscale, while a second PDL-compliant print stream might describe the same particular image and second control data that indicates that the particular image is to be printed at 600 dpi on A4-size paper in color. In this example, the first and second PDL-compliant print streams both describe the same particular image, but the print streams describe very different control data. The control data in each print stream may influence the way that the resulting printed image appears, but the data that describes the actual image is the same in both print streams.

In a PDL-compliant print stream, the control data is usually formatted in a manner that is not designed for human consumption, since only the printing device itself needs to understand the control data. Most human beings would have considerable difficulty trying to decipher the meaning of the control data that is contained within a PDL-compliant print stream, especially since the control data expressed in one PDL may look vastly different from the same control data when expressed in another PDL.

Sending both the content-describing data and the control data in a single print stream typically is suitable in environments in which printing is an informal, secondary concern, such as at homes and at businesses that are not primarily in the business of printing documents in exchange for monetary compensation. Consequently, PDL-compliant print streams are commonly used to print documents in these environments. When produced by operating systems that execute on desktop computers that are used in these environments, print streams usually are PDL-compliant print streams.

However, the printing industry, including businesses whose primary concern is printing documents in exchange for monetary compensation, typically do not deal with PDL-compliant print streams. In contrast, such printing businesses typically generate two separate “packages” of information to describe a print task or job; one “package” describes the printable content but not the control data, and the other “package” describes the control data but not the printable content. Because the printable content and the control data are maintained in separate “packages,” employees of printing businesses can more easily modify the attributes described in the control data without affecting the printable content. Employees of printing businesses often find it necessary to modify such attributes in order to satisfy customer requirements, to make the best use of the available printing resources, and to produce a finished product that is of the highest possible quality.

In order to allow easy modification of the attributes, the “package” that describes the control data usually represents the attributes in a manner that human beings can read and understand. Indeed, human beings often are the entities that generate the control data under the circumstances described. The “package” that describes the control data is called the “job ticket.”

Because the relatively affordable desktop systems that are used in less print-intensive environments usually produce only PDL-compliant print streams, in which the printable content data is mixed with the control data, the printing industry may be hesitant to adopt these desktop systems, despite the affordability of these desktop systems. The difficulty that employees of print-focused businesses might have in understanding and modifying the control data contained within PDL-compliant print streams could prevent such businesses from using affordable desktop systems (and the software that executes on such systems) to generate print streams. Indeed, because the difficult-to-understand control data is mixed with the printable content in PDL-compliant print streams, a human being's attempt to modify the control data in a PDL-compliant print stream might often result in the human being accidentally corrupting the data that describes the printable content.

SUMMARY

Embodiments of the invention automatically generate separate “job ticket” data and printable data from a PDL-compliant print stream. According to one embodiment of the invention, an automated mechanism such as a computer program receives a PDL-compliant print stream as input. The PDL-compliant print stream describes both printable content and control data, as described above. The automated mechanism separates the printable content data from the control data. The automated mechanism may translate the printable content data from a printer definition language into a format that is designed to be understood by human beings. The automated mechanism generates two separate “packages” of data; one “package” describes the printable content, and the other “package,” the “job ticket,” describes the control data. Thus, in one embodiment of the invention, the automated mechanism separates the PDL-compliant print stream into a “job ticket” and printable content data. The “job ticket” may be stored separately from (e.g., in a different file) the printable content data.

Once generated, the “job ticket” and printable content data may be provided as input to a “job ticket-ready” printing device that prints the printable content in accordance with the print control attributes described within the “job ticket.” Print control attributes within the “job ticket” can be modified manually as needed thereafter, without fear of disturbing the printable content data.

DETAILED DESCRIPTION

Converting PDL-Based Stream Into Job Ticket-Based Stream

FIG. 1is a block diagram that conceptually illustrates how a PDL-compliant print stream is converted into a job ticket and printable objects, according to an embodiment of the invention. As is shown inFIG. 1, a PDL-compliant print stream102comprises both print control data104and printable content106. Print control data104is expressed in the terms and syntax of a PDL (e.g., PCL, PostScript, etc.). Through techniques described herein, PDL-compliant print stream102is automatically converted into a job ticket108and printable objects110.

Job ticket108expresses the information that was contained in print control data104, but in one embodiment, job ticket108does not express this information in the PDL in which print control data104expressed this information. Instead, job ticket108may express this information in terms and syntax that are designed to be read, understood, and modified by human beings.

Printable objects110expressed the information that was contained in printable content106. Printable objects110may be stored separately from job ticket108. Printable objects110may be stored in a file that is separate from a file in which job ticket108is stored. Job ticket108may be modified without modifying printable objects110.

Example Technique

In one embodiment of the invention, if a print job received as input to the automated conversion mechanism already consists of a job ticket and separate printable data, then no conversion is performed relative to the print job. However, if the print job comprises a PDL-compliant print stream that includes both print control data and printable content data, then the print job is converted into a job ticket-based print job as described above.

FIG. 2is a flow diagram that illustrates an example of a technique for converting a PDL-compliant print stream into a job ticket and printable data, according to an embodiment of the invention. The technique illustrated is one of many possible examples of various embodiments of the invention. Other embodiments may include more, fewer, or different steps than those illustrated inFIG. 2. In alternative embodiments of the invention, one or more of the steps may be performed in a different order. The technique described may be performed by a printer driver, a printer controller, a print job submission system, an application that prints, or any printing system, for example.

The performance of the technique begins in block202. In block202, a determination is made as to whether the print job (or print stream) is a PDL-compliant print job. This determination may involve determining whether print control data in the print job is expressed in a PDL. If the print job is a PDL-compliant print job, then control passes to block204. Otherwise, the technique described with reference toFIG. 2is finished.

In block204, the PDL-compliant print job is automatically interpreted. In one embodiment of the invention, the interpreting involves locating, in a PDL control command table, each PDL command that is expressed in the PDL-compliant print job.

In block206, a job ticket is automatically generated based on the print control data expressed in the PDL-compliant print job. In one embodiment of the invention, the generation of the job ticket involves writing, to a job ticket file, one or more commands that correspond to each PDL control command located in the PDL control command table. In one embodiment of the invention, the commands written to the job ticket file are located in a job ticket command table, and are not expressed in PDL. In one embodiment of the invention, the commands are expressed in Job Definition Format (JDF), which is an XML-based format.

In block208, printable content data is automatically generated. The printable content data may be generated by extracting printable content data from the PDL-compliant print stream and writing that data into a file, which may be separate from a file to which job ticket commands were written. The technique described with reference toFIG. 2is then finished.

As a result of the foregoing technique, a job ticket and separate printable data are automatically generated. The job ticket and the printable data may be stored and/or sent to a job ticket-ready printer for printing. The job ticket may be manually modified one or more times after being automatically generated. The job ticket may be modified in between times that the job ticket-based job is sent to printers. If necessary, the job ticket and the printable data may be merged into a PDL-compliant print stream, possibly after the job ticket has been modified.

There is no limitation on where the PDL-compliant print stream-to-job ticket-based print stream may be performed.FIGS. 3A-Care block diagrams that illustrate different systems in which embodiments of the invention may be practiced. In each illustrated embodiment, the automated conversion mechanism is located in a different entity.

FIG. 3Aillustrates a system in which the automated conversion mechanism is located in a job ticket-ready printer, according to an embodiment of the invention.FIG. 3Ashows a PDL-based client302, a PDL-compliant print stream304, and a job ticket-ready printer306. PDL-based client302may be a desktop computer on which a printable content-generating application executes, for example. Job ticket-ready printer306includes an automated conversion mechanism308.

According to the embodiment of the invention depicted inFIG. 3A, PDL-based client302generates PDL-compliant print stream304. PDL-based client302sends PDL-compliant print stream304to job ticket-ready printer306. After receiving PDL-compliant print stream304from PDL-based client302, job ticket-ready printer306routes the PDL-compliant print stream to automated conversion mechanism308. In response to receiving PDL-compliant print stream304, automated conversion mechanism308automatically converts PDL-compliant print stream304into a separate job ticket and printable data using techniques described above. Job ticket-ready printer306may then print the resulting printable data onto physical media based on the commands expressed in the job ticket.

An alternative embodiment of the invention is shown inFIG. 3B.FIG. 3Billustrates a system in which the automated conversion mechanism is located at a PDL-based client, according to an embodiment of the invention. LikeFIG. 3A,FIG. 3Bshows a PDL-based client302and a job ticket-ready printer306. However, inFIG. 3B, automated conversion mechanism308is located at PDL-based client302instead of within job ticket-ready printer306. For example, automated conversion mechanism308may be a process that executes on PDL-based client302, assuming that PDL-based client302is a computer. Indeed, automated conversion mechanism308may even be integrated into the application that generates the printable data.

According to the embodiment of the invention depicted inFIG. 3B, PDL-based client302routes a PDL-compliant print stream to automated conversion mechanism308. In response to receiving the PDL-compliant print stream, automated conversion mechanism308automatically converts the PDL-compliant print stream into a job ticket and printable data310using techniques described above. After the conversion has been performed, PDL-based client302sends job ticket and printable data310to job ticket-ready printer306. Job ticket-ready printer306may then print the resulting printable data onto physical media based on the commands expressed in the job ticket.

Yet another alternative embodiment of the invention is shown inFIG. 3C.FIG. 3Cillustrates a system in which the automated conversion mechanism is located within a printer driver at a PDL-based client, according to an embodiment of the invention. LikeFIG. 3B,FIG. 3Bshows a PDL-based client302and ajob ticket-ready printer306. However, inFIG. 3C, automated conversion mechanism308is located within a printer driver312that is located at PDL-based client302, whereas, inFIG. 3B, automated conversion mechanism308was not located within a printer driver. Printer driver312may be a process to which all applications executing on the PDL-based client302send printable data to be printed, for example.

According to the embodiment of the invention depicted inFIG. 3C, PDL-based client302routes a PDL-compliant print stream to printer driver312. Printer driver312routes the PDL-compliant print stream to automated conversion mechanism308. In response to receiving the PDL-compliant print stream, automated conversion mechanism308automatically converts the PDL-compliant print stream into a job ticket and printable data310using techniques described above. After the conversion has been performed, PDL-based client302sends job ticket and printable data310to job ticket-ready printer306. Job ticket-ready printer306may then print the resulting printable data onto physical media based on the commands expressed in the job ticket.

Thus, the automated conversion mechanism may be located in any of a variety of different entities and components that are involved in the printing process.

Example Translation System Detail

FIG. 4is a block diagram that illustrates a more detailed example of a printing system in which an embodiment of the invention may be implemented. The system shown inFIG. 4is one example; embodiments of the invention may include more, fewer, or different components than those shown inFIG. 4. One or more of the components shown inFIG. 4may be implemented within a single executable program, or within multiple separate executable programs. One or more of the components shown inFIG. 4may be implemented as separate threads of execution of a single process.

FIG. 4shows a PDL-to-job ticket conversion table402, ajob ticket translator408, a printable data generator410, job ticket data storage416, and printable data storage418. PDL-to-job ticket conversion table402comprises a PDL control command table404and a job ticket command table406. PDL control command table404comprises entries that specify PDL commands, potentially from multiple different PDLs (e.g., PostScript, PCL, etc.). Job ticket command table402comprises entries that comprise, in one embodiment of the invention, non-PDL commands that are functionally equivalent to PDL commands in PDL control command table404. In one embodiment of the invention, PDL-to-job ticket conversion table402comprises, for each entry in PDL control command table404, a mapping from that entry to one or more corresponding entries in job ticket command table406.

According to one embodiment of the invention, PDL parser414reads or otherwise receives PDL-compliant print stream424as input. PDL parser414parses the PDL-compliant print stream and provides the parsed stream to PDL interpreter412. PDL interpreter412interprets the PDL print control commands in the stream and provides those commands to job ticket translator408.

According to one embodiment of the invention, for each PDL print control command in the stream, job ticket translator408looks up, in PDL control command table404, an entry that specifies that command. For each such entry, job ticket translator408follows the mappings between that entry and one or more corresponding entries in job ticket command table406. For each corresponding entry in job ticket command table406, job ticket translator408reads the functionally equivalent non-PDL command from that entry and writes that functionally equivalent non-PDL command to a job ticket420, which job ticket translator stores in job ticket data storage416.

For example, PDL-compliant print stream424might contain PDL commands as follows:

The above commands might functionally represent commands to set the paper size to A4, to set the number of copies to be printed to 100, and to set Tray2as the paper input tray for the print job, for example.

Based on the above PDL commands, job ticket translator408might generate job ticket420that contains functionally equivalent (i.e., designed and intended to cause a printing device to perform the same operations) XML based JDF commands as follows:

The commands in the job ticket typically will be much more understandable by human beings than the equivalent commands specified in the PDL-compliant print stream. Consequently, human beings typically will find the modification of the commands in the job ticket to be much easier than the modification of the equivalent commands in the PDL-compliant print stream. Additionally, when the job ticket is structured with XML tags, the job ticket can be validated automatically against an XML schema to ensure that the job ticket is valid and well-formed, thereby avoiding errors.

At the same time that job ticket translator408is generating job ticket420, printable data generator410may extract, from the stream interpreted by PDL interpreter412, the data that represents the actual printable content (e.g., text and/or images). Printable data generator410stores, in printable data storage418, data that represents this printable content, shown inFIG. 4as printable data422. Printable data422is separate from job ticket420, and, in one embodiment of the invention, contains no print control commands of the kind that would be contained in PDL-compliant print stream424and job ticket420. In one embodiment of the invention, job ticket data stored416and printable data storage418may occupy the same physical storage device (e.g., a hard disk drive or flash memory), but are located in logically separate files with different file names.

Implementation Mechanisms