1. Field of the Invention
This invention generally relates to digital image processing and, more particularly, to a print job generation system and method for fingerprinting a print job.
2. Description of the Related Art
The origin and certain other details associated with the rendered output of a print job, are not conventionally embedded in the print job. Further, even the job characteristics that accompany a print job cannot be extracted, once the print job is printed. Thus, information concerning the origin of the print job, such as the desired anti-copy protection criteria, or the printer identification that produced the output, is lost. If this information is not printed with the document, administrators cannot detect or trace back the misuse of the printing devices, where confidentiality is an issue, or provide forensics information as to the source of a printout, when the document is associated with a crime investigation. The process of providing information about a document, with the document, when the document is rendered into an output, is referred to herein as fingerprinting.
It would be advantageous if fingerprint information could be added to a print job seamlessly by a print driver, or a print job generation system, before the print job is raster image processed.
It would be advantageous if a fingerprint, once it has been added to a print job, could remains intact with any subsequent rendering of the print job.
It would be advantageous if the system adding the fingerprint could be embedded in a client computer device, printer, or a print server.
The present invention improves on fingerprinting a print job with respect to the prior and illustrative art in that it can be implemented by the print driver, or other print job generation means. The invention is independent of the method used to rasterize the image. That is, the inventions works with page description language (PDL) printers and journal printing instructions, such as EMF in Microsoft Windows. Further, the invention is independent of the method used to transmit the print job to the destination device(s). That is, it works with existing print providers, that may be locally, network, or remotely connected.
The invention can collect information on the presumed (intended) destination of the print job. The fingerprinting method may be implemented at the source origination, such as client computing device, whereby source origination information can be collected. The fingerprinting method may also be implemented at the print server, whereby routing information can be collected. The fingerprinting information is collected pre-raster image processing (pre-RIP), whereby the fingerprint can be added by analyzing the content information, as well as imaging and job information.
Accordingly, a method is provided for print job fingerprinting in a print job generation system. The method comprises: at a print job generation system, accepting an electronically formatted document with print instructions; accepting fingerprint information; generating a fingerprint image from the fingerprint information; supplying a fingerprinted print job; and, generating a raster image of the fingerprinted print job. For example, the fingerprinted print job may be sent, via a print subsystem, to a printer that creates a raster image of the fingerprinted print job and generates a copy of the document, with the fingerprint image.
Accepting fingerprint information may include accepting information such as job ownership/origination, host, target printer, routing, job assembly, job scheduling, metadata, or job content information. The fingerprinted print job is generated in a format such as a journaled print job, page description language (PDL), machine-dependent raster image data, or machine independent bitmap data. Typically, the fingerprint image is generated in the same format as the print job. The image can be a marking such as a barcode, alpha-numeric text, watermark, font set, or steganographic image.
Additional details of the above-described method and a print job generation fingerprinting system are provided below.
Neither does this solution work if the print job is journaled on a client, spooled to a network print server, and rendered on a print server. An example of this includes EMF spooling from a Windows NT client to Windows NT print server. In this case, the client information is lost since the print job is rendered by the printer driver on the server, and not the client. In another incomplete method of addressing the fingerprinting issue (not shown), a fingerprinting print processor can be used, instead of a fingerprinting print driver, to add a fingerprint. However, many of the above-mentioned problems still exist.
The print job generation system 302 is embedded in the host 305. Generally, the host 305 may be a client computing device, a printer, or a print server. The print job generation system 302 supplies the print job and fingerprint image in a format such as a journaled print job, page description language (PDL), such a printer control language (PCL), PostScript (PS), or PDF, machine-dependent raster image data, or machine independent/bitmap data, such as TIFF.
The print job generation system 302 has an interface on line 306 to accept fingerprint information. The print job generation system 302 generates a fingerprint image from the fingerprint information and supplies a fingerprinted print job at an output on line 308. Typically, the print job generation system 302 is a print driver. However, in other aspects of the system it is a host print transform (HPT), such as on the IBM AS/400 operating system, or a direct print/image submit application.
The system typically comprises a raster image processor (RIP) 310 having an input on line 312 to accept the fingerprinted print job and an output on line 314 to supply a raster image of the fingerprinted print job. More specifically, the system may further comprise a print subsystem 316 having an input on line 308 to accept the fingerprinted print job and an output on line 312 to distribute the fingerprinted print job. A conventional print subsystem may include components such as a spooler 313 for print job storage, a print processor (not shown), port manager (not shown), or a print assist (not shown).
Also shown is a printer 318. The RIP 310 is embedded in printer 318. A print engine 320 has an input on line 314 to accept the raster image and an output on line 322 to supply a rendering of the document, with the fingerprint image. For example, the printer 318 supplies a hardcopy or otherwise tangible copy of the document with the added fingerprint image. Shown is a printed document where the fingerprint image is represented by the circled letter, capital “A”.
More generally, the system may be thought of as further comprising a rendering system 324 that may be a printer, scanner, fax, http server, document server, email server, or print job converter system. This rendering system has an input on line 312 to accept the fingerprinted print job and an output on line 326 to supply a rendered print job with the fingerprint image. The rendering may either be a soft (electronically formatted) copy, or a hard (tangible format) copy of the fingerprinted print job.
The print job generation system 302 accepts fingerprint information on line 306 such as job ownership/origination, host, target printer, routing, job assembly, job scheduling, metadata, and/or job content information. Job ownership/origination fingerprint information includes user name, biometric data, and a digital signature associated with the source of the electronically formatted document. Job scheduling fingerprint information includes job name, job ID, job submission time and date, and job size. Job assembly fingerprint information includes the number of pages/sheets, sheet assembly (duplex, n-up, booklet, tri-fold), finishing (stapling, folding, hole-punching, cutting, trimming), collation (copies, face-up, color separation), rendering (color, dpi, resolution), and consumables (paper stock and ink).
Routing fingerprint information includes print server name, print server queue, print server network address, port name, and print provider. Host fingerprint information includes host name, host machine address (MAC), and host network address, such as an IP address. Target printer fingerprint information includes printer name, printer model name, printer serial number, printer network address. Metadata fingerprint information includes access control and anti-copy protection information. That is, information concerning who has access to see, print, or distribute the print job.
In another aspect, the print job generation system 302 analyzes content information from the electronically formatted document, and generates a fingerprint image in response to the content information analysis.
Generally, the print job generation system 302 adds the fingerprint image to the print job either prior to rendering the print job, or while rendering the print job. In some aspects of the system, the print job generation system 302 generates and spools journaled data to the print subsystem 312. Subsequently, the print job generation system 302 despools the journaled data and adds the fingerprint image.
The print job generation system 302 may a fingerprinted print job with the fingerprint image in a format such as a barcode, alpha-numeric text, watermark, font set, and steganographic image. The invention is not limited to any particular image type. In some aspects, the print job generation system 302 supplies a fingerprinted print job having the fingerprint image scaled with respect to the sheet picture frame.
In a different aspect, the print job generation system 302 encrypts the fingerprint information and generates a fingerprint image from the encrypted fingerprint information. Alternately, (pre) encrypted fingerprint information may be accepted on line 306 and a fingerprint image may be generated from the encrypted fingerprint information. The image may plainly display the information in its encrypted form, or the image itself may be stenographic.
The rendering system 324 (i.e., printer, scanner, fax, http server, document server, email server, or print job converter system) may accept the fingerprinted print job with the encrypted information image and supply a rendered print job with the decrypted fingerprint image on line 326. For example, a printer may decrypt the information and superimpose the information in decrypted form as a watermark overlying a printed document.
In a different aspect, the print job generation system 302 adds a fingerprint image as print instructions accompanying a pre-RIP print job. Then, the printer-embedded RIP 310 accepts the fingerprinted print job, renders the fingerprint image print instructions and pre-RIP print job, and supplies a raster image of the fingerprinted print job at an output on line 314. The print engine 320 has an input on line 314 to accept the raster image and an output on line 322 to supply a rendering of the document, with the fingerprint image.
Fingerprint by Printer Driver
In one aspect of the invention, the print job is generated by a printer driver. Generally, the output from the printer driver, for example a spool file, is spooled to a spooler. The spooler despools the print job to a print processor associated with the selected printing device(s). The print processor then despools the print job to a port manager associated with the printing device, if the print job is rendered, or plays back the print job to the printer driver associated with the installed printer, if the print job is journaled. In other print subsystems, such as the spooling option ‘print directly to printer’ in Microsoft Windows, the spooler directly despools the rendered print job to the printing device.
During the rendering or journaling process, the printer driver collects information on the print job origin, print destination device and intermediate destination devices, such as a print server, and records some or all of the information as a fingerprint, by any means, into a pre-RIP or journaled print job. The information may be collected prior to rendering the print job, while rendering the print job, or after the print job is rendered. The fingerprint may also be further secured by encryption and access control mechanisms.
Print job information may be collected through a variety of means, but not limited to:
The information collected may fall into the following categories:
In this aspect, the fingerprinting print driver can be on the client computing device and/or server computing device, in the case of a journaled print job, such as EMF, spooled to a network printer.
In this aspect of the invention, the fingerprint printing instructions are added in a pre-RIP stage. In general, the output format of the printer driver is a PDL, such as PCL, Postscript, or PDF. The fingerprinting instructions appear in the same format as the printer driver output.
By generating the fingerprint instructions prior to the RIP and in the output format of the printer driver, the following advantages are obtained:
For example, if the fingerprint method is a barcode, the printer driver may consider the following factors and actions:
In another example, the fingerprint method is a font steganography. In this case, the fingerprint is encoded into some subset of font glyphs. The printer driver may consider the following factors and actions:
For example, the font steganography may use a technique where the encoded font glyphs deviate from the original font glyphs by some statistical amount. The calibration encodes some known pattern of information repetitiously, such that a subsequent scan by an imaging device detects the calibration and derives the statistical deviations.
At this point in the process, it is likely that some, or all of the client computing information is known by the printer driver on the server computing device. In this case, the client information can be embedded into the journaled print data by the client side printer driver and extracted by the server side printer driver from the journaled print data.
For example, in the Microsoft family of operating systems, the printer driver can add the information in a proprietary section of the Print Job DEVMODE that is prepended to the printing instructions. The printer driver on the print server reads the proprietary section and extracts out the information.
Fingerprinting—PJL Instructions to the Firmware
In this alternate aspect, the printing instructions in the printer ready format are generated by the printer firmware instead of the printer driver. The printer driver, instead of generating printing instructions, generates a sequence of commands in a proprietary format that instructs the printer firmware to encode a fingerprint into the printed output. For example, the proprietary commands may be an extension to PJL or a PDL format, but not necessarily limited to these formats. Below is an example:
The printer firmware performs functions to encode the fingerprint in a manner similar to the printer driver in the above-mentioned aspects.
Fingerprint—Configuration
Step 702, at a print job generation system, accepts an electronically formatted document with print instructions. Step 704 accepts fingerprint information. Step 706 generates a fingerprint image from the fingerprint information. Step 708 supplies a fingerprinted print job. For example, the fingerprinted print job may scale the fingerprint image with respect to the sheet picture frame. The fingerprinted print job may add the image as a barcode, alpha-numeric text, watermark, font set, or steganographic image for example. Step 710 creates a raster image of the fingerprinted print job.
In some aspects, Step 709a sends the fingerprinted print job to a print subsystem. Step 709b sends the fingerprinted print job from the print subsystem, to a printer. Then, Step 712 generates a hardcopy of the document, with the fingerprint image. Alternately, Step 714, subsequent to supplying the fingerprinted print job, renders the fingerprinted print job using a process such as copying, scanning, faxing, printing, transferring, or converting the print job format. As used herein, transferring in a part of the imaging process involving the use of a printer or MFP as an email, http, or document server. Then, Step 716 generates a rendered print job with the fingerprint image.
In one aspect, accepting an electronically formatted document at a print job generation system in Step 702 includes accepting the document at a print job generation system embedded in a host such as a client computing device, printer, or a print server. In another aspect, Step 702 accepts the electronically formatted document at a print driver. In a different aspect, Step 702 accepts print instructions as either print job generation system dependent, or print job generation system independent instructions.
In another aspect, accepting fingerprint information in Step 704 includes accepting information such as job ownership/origination, host, target printer, routing, job assembly, job scheduling, metadata, or job content information. Job ownership/origination fingerprint information includes information such as user name, biometric data, and a digital signature associated with the electronically formatted document source. Job scheduling fingerprint information includes information such as job name, job ID, job submission time and date, and job size.
Job assembly fingerprint information includes information such as the number of pages/sheets, sheet assembly (duplex, n-up, booklet, tri-fold), finishing (stapling, folding, hole-punching, cutting, trimming), collation (copies, face-up, color separation), rendering (color, dpi, resolution), and consumables (paper stock and ink). Routing fingerprint information includes information such as print server name, print server queue, print server network address, port name, and print provider. Host fingerprint information includes information such as host name, host machine address (MAC), and host network address.
Target printer fingerprint information includes information such as printer name, printer model name, printer serial number, and printer network address. Metadata fingerprint information includes information such as access control and anti-copy protection information.
Supplying a fingerprinted print job in Step 708 may include adding the fingerprint image in one of the following processes: adding the fingerprint image to the electronically formatted document prior to rendering the print job; adding the fingerprint image while rendering the print job; or, adding the fingerprint image after rendering the print job into a pre-raster image process (RIP) format.
In another aspect, Step 708 includes substeps. Step 708a generates a print job in a first format such as a journaled print job, page description language (PDL), machine-dependent raster image data, or machine independent bitmap data. Step 708b generates the fingerprint image in the first format.
In one aspect, accepting fingerprint information in Step 704 includes analyzing content information from the electronically formatted document. Then, Step 706 generates a fingerprint image in response to the content information analysis.
In a different aspect, Step 705 encrypts the fingerprint information, and Step 706 generates a fingerprint image from the encrypted fingerprint information. Alternately, accepting fingerprint information in Step 704 includes accepting encrypted fingerprint information, and Step 706 generates a fingerprint image from the encrypted fingerprint information. In one aspect, Step 711, subsequent to supplying the fingerprinted print job, decrypts the fingerprint image. Then, Step 712 renders a print job with the decrypted fingerprint image.
In another variation of the invention, supplying a fingerprinted print job in Step 708 includes other substeps (not shown). Step 708c adds a fingerprint image as print instructions accompanying a pre-RIP print job. Step 708d, at a printer, renders the fingerprint image print instructions and pre-RIP print job into a raster image of the fingerprinted print job.
A system and method have been presented for fingerprinting a print job in a print job generation system. Examples of processing modules and specifically ordered process steps have been used to clarify the invention. However, the invention is not limited to merely the examples. Although the invention has generally been explained in the context of a Microsoft Windows® operating system, the invention can also be practiced with subsystems of an Apple MacIntosh Operating System, Linux Operating System, System V Unix Operating Systems, BSD Unix Operating Systems, OSF Unix Operating Systems, Sun Solaris Operating Systems, HP/UX Operating Systems, or IBM Mainframe MVS and AS/400 Operating System, to name a limited list of other possibilities. Other variations and embodiments of the invention will occur to those skilled in the art.