PRINT TRANSFORMATION EFFECTS

A method of printing a variant of an original page at a printer based on one or more selected transformation effects. Applying transformation effects can include modifying commands in a print job to adjust global page settings or parameters of individual elements on the page, and/or adding new elements to the page. As such, one or more variants of an original page can be generated at a printer from a digital original or scanned page, and the printer can print out one or more copies of each variant.

BACKGROUND

Field of the Invention

The present disclosure relates to printers, particularly a system and method for transforming pages being printed or copied.

Background

Printers, such as multifunctional printers (MFPs), are often used to print multiple copies of the same document. In some situations, the document is a digital document that is transferred to the printer from another device, such as a computer or mobile device. In other situations, an MFP can copy a hard copy document by scanning it and then printing multiple copies of the document.

In either situation, the printer is normally configured to print copies of the digital or hard copy original that matches the original as closely as possible. However, in some cases users may desire to change the document's design for some or all copies of the document.

For example, a user who is printing signs, brochures, or other material for a conference may want to print copies that present the same content using different visual styles. Presenting the same content in different visual styles may help attract interest in the content. While conference attendees might ignore multiple exact copies of the same document, they might be more likely to review the content more often if they see it presented multiple times with different fonts, colors, or other design variations. Similarly, different visual styles may appeal to different attendees. Having multiple variations of a document available can allow different viewers to review a version produced in their preferred visual style, thus increasing the overall likelihood of a conference attendee reviewing and remembering the material.

Traditionally, to create multiple designs that present the same material in different visual styles, a user would need to manually generate each variant by altering attributes such as font styles, colors, and layouts. The user would then have to print or make copies of each variant manually. Producing and printing multiple variants of the same document can take significant amounts of time and effort. As such, many users may avoid producing multiple variants of a document, even if they would ideally prefer to do so.

What is needed is a system and method for automatically printing or copying one or more variants of an original document using a set of transformation effects that can alter the appearance of elements on a page before it is printed.

SUMMARY

The present disclosure provides a method of printing a document variant at a printer. The printer can receive page data describing elements of a page. The printer can also receive one or more transformation effect selections that indicate modifications to the elements of the page. The printer can modify the elements of the page according to the transformation effect selections. The printer can then print the page according to the modified elements.

The present disclosure also provides a printer comprising a page description language interpreter, a graphics rendering component, and a print engine. The page description language interpreter can receive a print job that has page data commands describing elements of a page, and effect commands that indicate one or more selected transformation effects. The page description language interpreter can adjust parameters of the page data commands according to the transformation effects, to modify the appearance of the page and/or individual objects on the page. The page description language interpreter can also convert the commands into a format expected by the graphics rendering component. The graphics rendering component can generate an orderlist from the converted commands that includes low level instructions for printing the page at the print engine. The graphics rendering component can generate and adds low level instructions to the orderlist regarding transformation effects that add new elements to the page. The print engine can follow the low level instructions in the orderlist to print the page using one or more printer components.

The present disclosure also provides a printer comprising scanner components, an input device, an image processor, a page description language interpreter, a graphics rendering component, and a print engine. The scanner components can scan include at least one image sensor that can scan a physical page into a digital representation of the page. The input device can accept one or more transformation effect selections from a user. The image processor can modify the digital representation of the page according to the transformation effect selections, and prepare a print job that includes commands describing the page and the selected transformation effects. The page description language interpreter can adjust parameters of the page data commands according to transformation effects, to modify the appearance of the page and/or individual objects on the page. The page description language interpreter can also convert the commands into a format expected by the graphics rendering component. The graphics rendering component can generate an orderlist from the converted commands that includes low level instructions for printing the page. The graphics rendering component can add low level instructions to the orderlist regarding transformation effects that add new elements to the page. The print engine can follow the low level instructions in the orderlist to print the page using one or more printer components.

DETAILED DESCRIPTION

FIG. 1depicts an embodiment of a printer100. A printer100can be a device configured to print text and/or images on paper or other substrates. As shown inFIG. 1, in some embodiments the printer100can be a multifunctional printer (MFP) that combines printing, scanning, copying, faxing, and/or other functions into a single device. An MFP can be configured to print documents that have been digitally transferred to the MFP from another device over a wired or wireless data connection. By way of a non-limiting example, an MFP can be configured to print a document sent to it by a computer over a network connection. An MFP can also be configured to copy, or scan and print, documents placed on a platen102and/or passed through an auto-document feeder at the MFP. In alternate embodiments, a printer100can be a single function device that is configured to print documents that have been digitally transferred to it by another device.

In some embodiments, a printer100can comprise one or more input/output devices104. The input/output devices104can be screens, buttons, keyboards, switches, dials, indicator lights, speakers, and/or any other type of input or output device. By way of a non-limiting example, an input/output device104can be a liquid-crystal display (LCD) screen mounted on an exterior housing. In some embodiments, one or more screens can be touch-sensitive. In other embodiments, users can interact with screens using other controls such as buttons or keyboards.

FIG. 2depicts a block diagram of a printer's components. A printer100can comprise at least one processor202, data storage204, a user interface206, and printer components208. In some embodiment, such as embodiments in which the printer100is an MFP, the printer100can further comprise scanner components210.

A processor202can be a chip, circuit, or controller configured to execute instructions to direct the operations of the printer100, such as a central processing unit (CPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), graphics processing unit (GPU), or any other chip, circuit, or controller. In some embodiments a plurality of chips, circuits, and/or controllers can operate together to direct the operations of the printer100.

Data storage204can be one or more internal and/or external digital storage devices, such as random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory, digital tape, a hard disk drive HDD), a solid state drive (SSD), any/or any other type of volatile or non-volatile digital memory. The data storage204can store instructions executable by the processor202to operate the printer100, including an operating system and/or applications.

The user interface206can comprise hardware and/or software elements for receiving instructions from users and/or displaying information to users. In some embodiments the user interface206can comprise graphical user interfaces and/or other interfaces operable by users through input/output devices104.

The printer components208can be components that apply ink and/or toner to paper to print text and/or images onto the paper. In some embodiments, the printer components208can be laser printer components, such as laser diodes, lenses, mirrors, photoconductor drums, toner hoppers, charge rolls, fusers, and/or other components. In other embodiments, the printer components208can be inkjet printer components, such as print heads and ink cartridges. In still other embodiments, the printer components208can comprise components of any other desired type of color or monochrome printer. The printer100can further comprise one or more paper storage areas from which it can draw pieces of paper to be printed on by the printer components208, such as paper drawers or trays, and/or other processing components such as a finisher.

The scanner components210can comprise one or more image sensors, such as contact image sensors (CIS), charge coupled devices (CCD), or image sensors of any other type. The image sensors can be configured to scan text and/or images on documents that are placed on a platen102or that are fed through a document feeder that sequentially pulls and scans individual pages from the document feeder.

The printer100can be configured to store digital representations of scanned documents in memory, such as in its data storage204. Scanned documents can be printed with the printer components208, stored for later retrieval, or transferred to other devices over a wired or wireless data connection. In some embodiments the printer components208and scanner components210can work together in a copy function to scan documents using the scanner components210and then print them using the printer components208.

In some embodiments the printer100can further comprise fax components for faxing scanned documents, network components for transmitting data over the internet or any other data network, and/or ports for connecting to other devices, such as USB and Ethernet ports.

FIG. 3depicts a diagram of a printer's document processing components. A printer100can comprise a raster image processor (RIP)302and a print engine304. The RIP302can prepare an orderlist for the print engine304. The orderlist can be a binary data representation of low-level graphics instructions that the print engine304can follow to produce markings on a piece of paper using the printer components208. In some embodiments in which the printer100comprises a scanner, such as when the printer100is an MFP, the printer100can further comprise a scanner processor306that processes images scanned by the scanner components210before sending image data to the RIP302and/or print engine304.

The RIP302can be firmware and/or software package that can prepare an orderlist from data representing a page to be printed. In some embodiments, the page data can be described by a print job received from a printer driver308running on an external device, such as a computer or mobile device. A printer driver308can be an application on the external device that can communicate with the printer100to submit print jobs to the printer100. In alternate embodiments, the page data processed by the RIP302can be data describing a page scanned by the scanner components210.

While in some embodiments the printer100can have its own RIP302, in alternate embodiments the printer100can additionally or alternately use one or more cloud RIPs302. A cloud RIP302can be an RIP302running on another printer, a server, or any other remote computing device with which the printer100can communicate over a network connection. In these embodiments, the printer100can lessen its processing load by transmitting data for one or more pages or print jobs to a cloud RIP302, such that the cloud RIP302can generate an orderlist and return the orderlist to the printer100.

A print job or other page data received by the RIP302can be represented using a page description language (PDL), such as PostScript, PCL (Printer Command Language), PDF (Portable Document Format), or XPS (XML Paper Specification). PDL code can include commands that describe the content, format, and/or layout of each individual element on a page, such as individual images and pieces of text. By way of a non-limiting example, when user instructs a computer to print a document or image, a printer driver308can be invoked that converts the computer's representation of that document or image into PDL code that is sent to the RIP302for interpretation and processing. In some embodiments or situations, individual PDL commands can be included with and/or wrapped within commands for a printer job language (PJL) that can describe changes to parameters and settings at the printer100, as will be discussed further below.

As shown inFIG. 3, an RIP302can comprise at least one PDL Interpreter310and a Graphics Rendering Component312. A PDL Interpreter310and the Graphics Rendering Component312can together process PDL and/or PJL code received from a source such as a printer driver308or a scanner processor306.

A PDL Interpreter310can parse and interpret commands in received PDL and/or PJL code into a format expected by the Graphics Rendering Component312. In some embodiments, the printer100can have multiple PDL Interpreters310that are each associated with a different PDL, such that each PDL Interpreter310can convert language-specific commands into a common format expected by the Graphics Rendering Component312.

In some embodiments, a PDL Interpreter310can verify or validate commands in the received code, such as performing parameter checking, checking for values that are out of an expected range, and/or converting received values into an expected format or range. The PDL Interpreter310can convert received values to a different scale, into different units, and/or transform values into any other expected format or range. By way of a non-limiting example, when the PDL code represents the value of a particular parameter within a range between 1 and 10, but the Graphics Rendering Component312expects the value of that parameter to be within a range of 1 to 100, the PDL Interpreter310can multiply the original value by 10 to convert it to a corresponding value within the expected range. Each PDL Interpreter310can pass the validated and/or interpreted commands to the Graphics Rendering Component312.

The Graphics Rendering Component312can receive validated and/or interpreted commands from a PDL Interpreter310, and use the commands to generate an orderlist. By way of a non-limiting example, the Graphics Rendering Component312can translate drawing calls and other commands or parameters from the interpreted PDL/PJL commands into binary data instructions for the orderlist.

The orderlist generated by the RIP302can be passed to the print engine304. The print engine304can comprise a graphics engine unit (GEU), a raster processing unit (RPU), and/or a halftone engine. The print engine304can also be linked with the printer components208. The GEU can execute low-level binary data instructions in an orderlist to generate a raster representation of a document. In some embodiments the GEU can be a hardware component, while in other embodiments the GEU can be implemented in software and/or firmware. In some embodiments the RPU can be a firmware component that performs color conversation on the raster representation, overlays stamps or other images on the raster representation, rotates the page, and/or performs other operations on the raster representation before it is printed. The halftone engine can convert the raster representation into a pattern of dots that can be printed by the printer components208.

In embodiments comprising a scanner processor306, the scanner processor306can comprise an optical character recognition (OCR) component314and/or an image processor316. In some embodiments the OCR component314and/or image processor316can process scanned representations of documents, and then pass them to the RIP302using PDL and/or PJL code for further processing. In alternate embodiments the components of the scanner processor306can pass a raster representation of the scanned document directly to the print engine304. In these embodiments, the print engine304can process the received raster representation directly with its RPU and/or halftone engine without generating a new raster representation from an orderlist.

An OCR component314can perform image analysis to identify and/or recognize markings within a scanned image. By way of a non-limiting example, the scanner components210can scan a document and produce a raster representation of the document, such as a bitmap. The OCR component314can then analyze the raster representation to identify and/or extract readable text elements, such that the readable text can be converted into a searchable digital format. The OCR component314can pass information about recognized text elements to the image processor316.

An image processor316can perform one or more image processing operations on a scanned image. By way of non-limiting examples, the image processor316can alter colors in a raster representation of a scanned image, or add text or other elements to the scanned image as overlays. As will be described below, in some embodiments the image processor316can apply one or more transformation effects400to elements on a page before passing information about the page to the RIP302or print engine304.

FIG. 4depicts a plurality of exemplary types of transformation effects400. The printer100can be configured to apply one or more transformation effects400to elements on a page before printing the page. Transformation effects400can comprise color effects, pattern and shading effects, photo filter effects, morphing effects, font effects, watermark and macro template effects, decoration effects, repositioning effects, and/or any effects of any other type. As will be described below, one or more transformation effects400can be applied at one or more stages when printing a page, such as within the printer driver308, within the RIP302, within the scanner processor306, and/or within the print engine304.

Color effects can be effects that alter the color of a page, or the color of one or more objects on a page. By way of a non-limiting example, a color effect can be replacing and/or filling the color of a line, object, or text with one or more desired colors, such as dark colors, bright or neon colors, or a gradient of colors. By way of another non-limiting example, a color effects can be altering the color space definitions for a page or an object, so that a color value in the original color space corresponds with a different color in the altered color space.

Pattern and shading effects can be effects that adds or changes patterned designs, shading, transparencies, and/or shadows on a page, or that adds or changes such elements to one or more objects on a page. By way of a non-limiting example, a pattern effect can be to superimpose a hash pattern over a page or a specific object on the page. By way of another non-limiting example, a shading effect can be to adjust the transparency of a raster image or text. By way of yet another non-limiting example, a shading effect can be to add a shadow or shading around all or part of an object.

Photo filter effects can be effects that change the contrast, brightness, and/or saturation of colors for one or more objects or an entire page. Photo filter effects can also be an effect that applies a filter to all or part of a page, such as making colors warmer or cooler, converting the image's colors to sepia tones, applying a negative film effect, or blurring images.

Morphing effects can be effects that adjust the size or shape of objects on a page. By way of non-limiting examples, morphing effects can include adjusting one or more scaling parameters to skew the shape and size of an object, distorting straight lines such that they are curved, and/or applying lens effects to expand, shrink, or balloon objects.

Font effects can be effects that alter the fonts used for text on a page. By way of non-limiting examples, font effects can be changing the font used for a portion of text, changing a font style between regular, bold, and/or italic, and/or changing the size of a font.

Watermark and macro template effects can be effects that add text or other images over or under some or all of a page. By way of a non-limiting example, preset or random text can be added as a watermark to one or more copies of a document. By way of another non-limiting example a background image, text, or images created according to a macro template can be added to one or more copies of a document.

Decoration effects can be effects that add decorations to a page. By way of a non-limiting example, a decoration effect can be to add decorative elements across all or part of a page, such as stars, leaves, glitter, light glares, or other floating objects. By way of another non-limiting example, decoration effects can be to add or change a border around an entire page, around an object such as a table, diagram, or image, or around any other portion of a page.

Repositioning effects can be effects that replace and/or reposition elements on a page, such as text and/or images. By way of a non-limiting example, a repositioning effect can be to rotate a portion of text from its original position. In some embodiments, the printer100can perform image analysis to interpolate background colors or patterns that would likely be behind existing objects, such that the objects can be moved to other locations and the space they previously occupied can be filled in with the interpolated colors or patterns.

As shown inFIG. 5, in some embodiments individual transformation effects400can be categorized as and/or implemented as a page effect502, an object effect504, an imaging filter506, a pixmap blending mask508, and/or a pixmap screen510. By way of a non-limiting example a color effect that alters all colors on an entire page can be categorized as a page effect502, while another color effect that alters the color of a single object can be categorized as an object effect504.

Page effects502can be transformation effects400that set or change global parameters that can alter the overall appearance of an entire page. Page effects502can include: scaling an entire page to fit a larger or smaller paper size; tilting an entire page; adding a frame or border to a page; and/or global adjustments of all colors on a page, such as increasing or decreasing the intensity of all colors on a page.

Object effects504can be transformation effects400that set or change parameters that are specific to individual objects or elements within a page. Object effects504can include: adding new objects or markings to a page, such as pen markings, lines, raster images, or text; removing objects from a page; and/or changing an object's color, shape, size, or positioning. In some embodiments or situations, object effects504can be applied on an object-type basis, such that groups of objects of the same type can be modified by an object effect504.

Imaging filters506can be transformation effects400that alter the appearance of groups of objects on a page. Imaging filters506can include adjusting shading, shadowing, reverse mapping, mirroring, repositioning, scaling, and/or pattern generation for one or more groups of objects, such as altering shadows for a group of shapes, adding hash patterns to a group of filled shapes, distorting or scaling groups of objects, and/or exaggerating colors of a group of objects. In some embodiments, an imaging filter506can be applied on a per-object basis and be performed during drawing or marking calls at the Graphics Rendering Component312.

Pixmap blending masks508can be predefined pixel map images, such as bitmaps, that can be placed under, placed over, and/or blended together with other rendered page content to combine the rendered content with the predefined pixel map images. As such, some transformation effects400that alter the appearance of a page can be implemented by adding a pixmap blending mask508to other rendered content. By way of a non-limiting example, some decoration effects such as an overlay of stars, leaves, glitter, of light glares can be stored as a predefined pixel map image that can be overlaid over a page once other content has been rendered. By way of another non-limiting example, some watermark or macro template effects can be prerendered as pixel map images, such that they can be overlaid over a page once other content has been rendered. In some embodiments, a pixmap blending mask508can be applied on a per-object basis, or a per-page basis during marking calls at the Graphics Rendering Component312, such that the Graphics Rendering Component312generates the pixmap blending mask508and combines it with other objects being drawn.

Pixmap screens510can be predefined pixel map screens that can alter or adjust a rendered page at the print engine304when the print engine304is preparing to print out the page. Pixmap screens510can be similar to halftone screens that are combined with rendered pages to create a pattern of dots that can be printed by printer components208. By way of a non-limiting example, the same rendered page can be printed to appear differently by using different pixmap screens510that generate different final patterns of dots, such as increasing or decreasing the dot size to adjust perceived colors. In some embodiments, pixmap screens510can be applied and/or augmented by a color conversion process at the print engine304.

Depending on the embodiment, situation, and/or specific set of transformation effects400that was selected, individual transformation effects400can be applied at the printer driver308, at the RIP302, at the print engine304, and/or at the scanner processor306.

FIGS. 6-10depict non-limiting exemplary menus that can be displayed on a computer or other device with a printer driver308when the printer driver308is activated to submit a print job from the device to the printer100. These exemplary menus can present options to users such that a user can select particular set of transformation effects400to apply to a document, as well as options or parameters for each selected transformation effect400.FIG. 6depicts an exemplary options menu for selecting page effects502, including controls to select the page's color intensity, tilt, scaling, and/or frame. Similarly,FIG. 7depicts an exemplary options menu for selecting object effects504, including controls to select an object type and specific effects to apply to objects of that type, including colors, glow effects, shadow effects, and/or font effects, as well as scaling factors and intensity factors for foreground and background colors.FIG. 8depicts an exemplary options menu for selecting imaging filters506, including controls for selecting a shadow thickness and/or color intensity for lines, text, and/or images.FIG. 9depicts an exemplary options menu for selecting pixmap blending masks508, including controls for selecting a particular blending mask and/or background pattern.FIG. 10depicts an exemplary options menu for selecting pixmap screens510, including controls for selecting a particular pixmap screen to apply to a page.

As shown inFIGS. 6-10, each selected set of transformation effects400can be applied to a specific range of copies of the page. By way of a non-limiting example,FIG. 6depicts the “Effects Assignment” portion of the options menu displaying one set of transformation effects400to apply to the first ten copies of a page, and a different set of transformation effects400to apply to the next ten copies of the page. As such, settings selected via the printer driver308for different ranges of copies can result in the same original page being printed with different effects.

In some embodiments, a printer driver308can present a “Random Effects” option to a user, that if selected can generate a random set of transformation effects400to apply to a document for some or all copies. By way of a non-limiting example, a user can select the “Random Effects” option to have the printer driver308randomly select sets of transformation effects400, of a “Custom Effects” option to view the menu shown inFIGS. 6-10and select specific transformation effects400for a print job.

WhileFIGS. 6-10depict exemplary menus that can be displayed by a printer driver308, when the printer100is used to copy a page with its scanner components210similar menus or options can be displayed through the printer's user interface206and/or input/output devices104. By way of a non-limiting example a screen on the printer100can display a user interface206through which a user can select standard copy options such as selecting a number of copies to print, finishing options, page rotation, page scaling, and/or other options. In these embodiments, the user interface206can also display an option such as “Advanced” or “Effects” through which options similar to those shown inFIGS. 6-10can be displayed, such that the user can select desired transformation effects400to apply to the page being scanned and/or copied. As with options displayed via the printer driver308, the options displayed directly by the printer's user interface206can be configured to allow a user to select different transformation effects400for different copy ranges, and/or select random effects.

In some embodiments or situations in which the printer100receives a print job from a printer driver308on another device, the printer driver308can apply some or all transformation effects400prior to sending the print job to the printer100. When the printer driver308applies the transformation effects400, it can send each copy range that has a different set of transformation effects400as a unique print job to the printer100. In other embodiments or situations, the printer driver308can send a single print job to the printer100that includes commands indicating selected transformation effects400for each copy range, such that the printer100can apply the transformation effects400as it processes the print job and prepares the page for printing, such as applying transformation effects400at the RIP302and/or print engine304.

In other embodiments or situations in which the printer100scans a document with its scanner components210, the scanner processor306can process the scanned representation of each page and then either pass data about the page to the RIP302for further processing or directly to the print engine304for printing. As such, in these embodiments or situations transformation effects400can be applied at the scanner processor306, at the RIP302, and/or at the print engine304.

FIG. 11depicts an embodiment of a process that can be used in embodiments in which transformation effects400are applied at the printer driver308before a print job is sent to the printer100. At step1102the printer driver308can receive a user's selection of transformation effects400. By way of a non-limiting example, the printer driver308can display options menus such as those shown inFIGS. 6-10to inform the user which transformation effects400are available and receive commands regarding which transformation effects400to apply to which copies.

At step1104, the printer driver308can determine whether multiple sets of transformation effects400were selected for different ranges of copies. If the printer driver308determines that only a single set of transformation effects400were selected that apply to all copies, the printer driver308can move to step1106to generate a print job using the selected transformation effects400. However, if the printer driver308determines that different sets of selected transformation effects400are applicable to different ranges of copies, the printer driver308can move to step1108to generate unique print jobs for each range of copies.

At steps1106and1108, the printer driver308can apply the selected transformation effects to the page to create an internal representation of the page that differs from the original page shown to the user on the device. By way of a non-limiting example, when a user selected transformation effects400that change the original font, font size, and font color of a piece of text, the printer driver308can create or adjust its internal representation of the page that adjusts that piece of text accordingly. The printer driver308can then generate a print job with PDL/PJL code that describes the adjusted internal representation. As such, the print job can directly indicate to the printer100how to render the printer driver's adjusted representation of the page, without further adjustment by the printer100.

At step1110, the printer driver308can submit each print job generated during step1106or step1108to the printer100to be printed. The printer100can process each print job as if it were any other print job, and directly follow the commands in the print job with its RIP302and print engine304to print the page. When the printer driver308submits multiple unique print jobs that correspond to different sets of transformation effects400for different copies of the same original page, the printer100can follow each distinct print job separately without considering each set of copies to be the same document.

In some embodiments or situations the printer driver308can apply some selected transformation effects400itself, but include commands for other selected transformation effects400within each unique print job. As such, the printer100can apply additional transformation effects400to the representation of the page described by a print job, as will be described further below.

In alternate embodiments, the printer driver308can create unique print jobs for each copy range with different selected transformation effects400using one or more cloud RIPs302. The RIPs302can return orderlists to the printer driver308that are specific to each set of transformation effects400. The printer driver308can thus submit each orderlist to the printer100for printing as separate print jobs, without the printer100applying the transformation effects400itself. By way of a non-limiting example, when a user selected different sets of transformation effects400for each of three different copy ranges, the printer driver308can submit the same print job to three different cloud RIPs302but send different commands to each cloud RIP302that indicates a different set of transformation effects400. Each cloud RIP302can follow a process with steps substantially similar to those described below with respect toFIG. 13for a local RIP302, to generate an orderlist that applies the selected transformation effects400. The cloud RIPs302can return orderlists to the printer driver308, and the printer driver308can then forward the orderlists to the printer100such that it can follow the orderlist to print each variant of the original page using its print engine304. In some embodiments, the printer driver308can attempt to use cloud RIPs302if any are available at the time a print job is started, but use the process ofFIG. 13to instruct the printer100apply transformation effects400itself within its local RIP302if no cloud RIPs302are available.

FIG. 12depicts an embodiment of processing levels for applying transformation effects400at the printer100. Although in some embodiments one or more transformation effects400can be applied at the printer driver308as shown inFIG. 11, in other embodiments one or more transformation effects400can be selected at the printer driver308but be applied at the printer100, such as during processing steps performed at the RIP302and/or print engine304. In these embodiments, selected transformation effects400can be applied at a page level1202, at a command level1204, at a graphics rendering level1206, and/or at an engine level1208. These processing levels can also be followed in alternate embodiments or situations discussed below in which the RIP302and/or print engine304applies transformation effects400on page data received from the scanner processor306. In some embodiments, applying different types of transformation effects400at different processing levels can assist in reducing processing load and/or avoiding processing bottlenecks. In some embodiments, transformation effects400at some or all processing levels can be accessed by the printer100using hashes or lookup tables.

Transformation effects400that can be applied at the page level1202can be effects that adjust default global settings for the page, and can be performed as the default PDL page configuration is being set up. As such, the page configuration can provide an initialized data structure that can override other default page settings. By way of non-limiting examples, effects at the page level1202can change the default page size or scaling. In some embodiments, transformation effects400at the page level1202can also be overlay or underlay pages that can be separately rendered and later combined with a full page of other rendered content, such as a border, a page of decoration effects, or a watermark page generated from a macro or template. By way of a non-limiting example, a page level effect can be a pixmap blending mask508that can be applied over or under a page.

Transformation effects400applied at the command level1204can be effects that can be implemented by modifying received PDL and/or PJL commands. By way of a non-limiting example when PDL commands in a print job have parameters indicating that a particular shape was originally set as being colored red and being located at a particular location on the page, but transformation effects400were selected to recolor the shape blue and reposition it to a different location, the parameters can be modified from their original values at the command level1204such that the parameters instead specify the modified color and location. By way of other non-limiting examples, transformation effects400implemented at the command level1204can be to adjust command parameters to change color spaces, color definitions, pen selections, scaling, and/or other settings that apply to attributes of text, shapes, raster images, and other objects.

In some embodiments the PDL Interpreter310can apply transformation effects400at the command level1204as it parses and interprets commands for the Graphics Rendering Component312. By way of a non-limiting example, in addition to converting PDL commands into a format expected by the Graphics Rendering Component312, the PDL Interpreter310can also apply transformation effects400by modifying parameters of the commands to change page and/or object attributes before the PDL Interpreter's interpretation of the commands are sent to the Graphics Rendering Component312.

Transformation effects400that can be applied at the graphics rendering level1206can be effects that can be implemented by adjusting algorithms used to render new objects and/or add new rendered content to existing objects. By way of non-limiting examples, algorithms can be adjusted to change positioning of new page content, scale new content, change colors or patterns on new objects, add new colors or patterns over existing objects, making new objects partially transparent, or to add effects to objects such as shadows, glows, or reflections. In some embodiments, the Graphics Rendering Component312can implement transformation effects400at the graphics rendering level1206as it prepares low level binary instructions for the print engine304in an orderlist.

Transformation effects400that can be applied at the engine level1208can be effects that can be implemented by adjusting a pattern of dots used by printer components208to print the document, before the document is printed. In some embodiments predefined, precompiled, or installed pixmap screens510can be stored as resources that can by dynamically loaded and applied before, after, or at the same time as halftone screens. By way of non-limiting examples, the normal dot pattern that would otherwise be created with a halftone screen can be altered with a predefined pixmap screen510or color conversion routine. In some embodiments, the print engine304can implement transformation effects400at the engine level1208.

FIGS. 13A-13Bdepict an embodiment of a process that can be used in embodiments in which transformation effects400are applied at the printer100after receiving a print job from a printer driver308.

At step1302the printer100can receive a print job from a printer driver308running on a computer or other device. The print job can include PDL and/or PJL code prepared by a printer driver308. The print job can include commands that describe elements of the page as it appeared to a user of the computer or other device that submitted the print job via the printer driver308. The print job can also include commands that specify parameters of transformation effects400selected by the user via the printer driver308, or parameters of transformation effects400that were randomly selected by the printer driver308. By way of a non-limiting example, a user can have selected specific transformation effects400via the printer driver308through options menus such as those shown inFIGS. 6-10, and the printer driver308can prepare the print job by including commands that identify the chosen transformation effects400and their parameters.

In some embodiments, a print job prepared by the printer driver308can specify commands regarding original elements of the page using PDL commands, while additional PJL commands before and/or after a set of PDL commands can indicate information about selected transformation effects400. In some embodiments or situations, PJL commands can be instructions that indicate selected transformation effects400that can modify original elements of the page that are described by later PDL commands within the print job. By way of non-limiting examples,FIGS. 14-18depict syntax for a plurality of exemplary PJL commands that can be included in a print job to instruct the RIP302and/or print engine304to apply desired transformation effects400.FIG. 14depicts non-limiting exemplary syntax for PJL commands to apply page effects502, including color adjustments, border masks, and page scaling and tilting.FIGS. 15A-15Bdepict non-limiting exemplary syntax for PJL commands to apply object effects504, including setting and adjusting colors for foreground objects, background objects, text, and raster images, as well as adjusting font attributes.FIG. 16depicts non-limiting exemplary syntax for PJL commands to apply imaging filters506, such as adding and adjusting shadows and shading to objects.FIG. 17depicts non-limiting exemplary syntax for PJL commands to apply pixmap blending masks508, including page decorations and photo filters.FIG. 18depicts non-limiting exemplary syntax for PJL commands to apply pixmap screens510, including photo screens. In alternate embodiments, the PJL commands can use different syntax for these and other transformation effects400, and/or commands regarding transformation effects400can be indicated with PDL commands or any other type of message or data.

Returning toFIG. 13A, at step1304the printer100can review commands in the print job to determine if the commands specify any transformation effects400that can be implemented as overlay or underlay pages, such as borders, watermarks, macro templates, or decoration effects, that can be rendered as separate pages that can be later combined with other content. If no overlay or underlay effects were specified, the printer100can move to step1308. If the print job specifies any overlay or underlay effects, the printer100can move to step1306and render a separate page with the selected overlay or underlay effects. In some embodiments, the overlay or underlay page can be rendered by elements of the RIP302, such as the Graphics Rendering Component312. The rendered overlay or underlay page can be stored in memory for use later in the process. In alternate situations, if the print job specifies overlay or underlay effects that have been pre-rendered and are already stored as a resource in memory, the printer100can locate the resource and prepare it for use later in the process. After preparing a page with the selected overlay or underlay effects, the printer100can move to step1308.

At step1308, the PDL Interpreter310can process a command in the received print job, such as a PDL or PJL command. If the PDL Interpreter310determines at step1310that the command does not relate to a page effect502or object effect504, the PDL Interpreter310can perform default operations at step1312to interpret the command into a format expected by the Graphics Rendering Component312. However, if at step1310the PDL Interpreter310determines that the command does relate to a page effect502or object effect504, at step1314the PDL Interpreter310can interpret the command into the expected format as well as modifying the command to apply the appropriate transformation effect400. By way of a non-limiting example, when the print job includes a PJL command for a particular page effect502that alters the page's scaling, such as a page scaling command with the syntax shown inFIG. 14, the PDL Interpreter310can prepare its interpretation of the print job's commands such that the page size is scaled from its original size by a percentage specified in the PJL command. By way of another non-limiting example, when the print job includes a PJL command that applies a text transformation to change the font for a piece of text from its original font, the PDL Interpreter310can alter the font parameters from the original parameters to instead instruct the Graphics Rendering Component312to use the new font when rendering the text.

In some embodiments the PDL Interpreter310can store a pair of functions for implementing each type of command at the command level1204. In some of these embodiments, one function from a pair can be accessed via a hash or lookup table, such that the printer100can avoid costlier checks of conditional if/else statements. By way of a non-limiting example, for a particular type for command, the PDL Interpreter310can use a hash or lookup table to use either a default function during step1312if no corresponding transformation effect400was indicated in the print job, or an alternate effects function during step1314if a corresponding transformation effect400was indicated in the print job. In some embodiments, a default function can be identified using a “command_function( )” naming scheme, while an alternate effects function can be identified using a “command_function_ex( )” naming scheme.

At step1316, after the PDL Interpreter310has generated an interpretation of the print job commands in the format expected by the Graphics Rendering Component312using either the original parameters or altered parameters to apply a page effect502or object effect504, the interpreted command can be passed to the Graphics Rendering Component312.

At step1318, the Graphics Rendering Component312can determine whether the interpreted command indicates an imaging filter506or a pixmap blending mask508should be applied. If the command does not indicate application of an imaging filter506or pixmap blending mask508, the Graphics Rendering Component312can move to step1320to prepare low-level instructions that correspond to the interpreted command. The low-level instructions can be included in an orderlist that will be followed by the print engine304. However, if at step1318the interpreted command is found to indicate that an imaging filter506or a pixmap blending mask508is to be applied, the Graphics Rendering Component312can at step1322prepare adjusted low-level instructions that will render the page content using the selected imaging filter506or pixmap blending mask508.

In some embodiments the Graphics Rendering Component312can store a pair of functions for implementing each type of command at the graphics rendering level1206. In some of these embodiments, one function from a pair can be accessed via a hash or lookup table, such that the printer100can avoid costlier checks of conditional if/else statements. By way of a non-limiting example, for a particular type for command, the Graphics Rendering Component312can use a hash or lookup table to use either a default function during step1320if no corresponding transformation effect400was indicated in the print job, or an alternate effects function during step1322if a corresponding transformation effect400was indicated in the print job. In some embodiments, a default function can be identified using a “graphics_function( )” naming scheme, while an alternate effects function can be identified using a “graphics_function_ex( )” naming scheme.

At step1324, the printer100can review the print job to determine if there are additional commands that have not yet been processed. If additional commands are present, the process can return to step1308to process the next command. In some embodiments, different commands can be simultaneously processed at different levels. By way of a non-limiting example, the PDL Interpreter310can be processing one command while the Graphics Rendering Component312processes another command that has already been processed by the PDL Interpreter310.

If at step1324the printer100determines that all commands have been processed, such that the orderlist contains low-level instructions for printing all of the page elements in their original or adjusted form, the printer100can move to step1326.

At step1326, the printer100can determine if an overlay and/or underlay page was generated earlier during step1306. If an overlay or underlay page was generated earlier, the Graphics Rendering Component312can modify the orderlist at step1328such that an overlay page will be printed on top of the other rendered content, and/or an underlay page will be printed under the other rendered content.

At step1330, the RIP302can pass the generated orderlist to the print engine304.

At step1332, the print engine304can determine if the orderlist indicates that a pixmap screen510should be applied. If no pixmap screen510was selected, the print engine304can execute the orderlist at step1334using a halftone screen to prepare a dot pattern that can be printed using the printer components208at step1338. However, if a pixmap screen510was selected, the print engine304can apply the pixmap screen510at step1336as it follows the orderlist to prepare the final dot pattern. By way of a non-limiting example, the print engine304can use halftone screens as well as selected pixmap screens to prepare the final dot pattern. The final dot pattern can be printed at step1338.

In some embodiments, the printer100can use one or more cloud RIPs302to offload one or more steps in the process ofFIG. 13. By way of a non-limiting example, if applying particular transformation effect400is expected to be processor and/or memory intensive, the printer100can reduce its load by offloading application of that transformation effect400to a cloud RIP302. The cloud RIP302can perform one or more steps ofFIG. 13and return the result to the printer100such that it can use the result locally in later steps.

FIGS. 19A-19Bdepict an exemplary embodiment of a process that can be used in embodiments in which transformation effects400are applied at the printer100after scanning a page with its scanner components210.

At step1902the printer100can receive a user's selection of transformation effects400. By way of a non-limiting example, the printer's user interface206can display options menus similar to those shown inFIGS. 6-10to inform the user which transformation effects400are available and receive commands regarding which transformation effects400to apply to which copies. In alternate embodiments or situations, a user can input commands that instruct the printer100to generate a random set of transformation effects400for one or more copy ranges.

At step1904the printer's scanner components210can scan a page on the platen102or through an automatic document feeder, to generate and store a digital raster representation of the scanned page in memory. The raster representation can be passed to the scanner processor306.

At step1906, the scanner processor306can determine whether the selected set of transformation effects400include any object effects504. If no object effects504were selected, the scanner processor306can move to step1908and apply other selected transformation effects400at the image processor316. By way of non-limiting examples, the image processor316can alter the scanned raster representation with page effects502such as changing the page size, with imaging filters506such as rendering and adding hash patterns to portions of the page, and/or with pixmap blending masks508such as adding a prerendered overlay page over the raster representation. The image processor316can forward the altered raster representation to the print engine at step1910to be printed. In some embodiments or situations, the scanner processor306can additionally inform the print engine304of any remaining selected transformation effects400that are to be applied at the print engine304during step1910, such as pixmap screens510.

Returning to step1906, if object effects504were selected, the scanner processor306can move to step1912and process the scanned raster representation with the OCR component314to attempt to identify text objects. The OCR component314can analyze the page to identify the size, position, and/or content of individual text objects. By way of non-limiting examples, the OCR component314can identify text, extract the text such that it is searchable and/or editable, and/or record the position and dimension of a bounding box around the text. After processing the raster representation of the page with the OCR component314, the scanner processor306can move to step1914.

At step1914, the scanner processor306can determine whether the OCR component314identified any text objects on the page. If it did not, the scanner processor306can move to step1916and implement selected transformation effects400at the image processor316, including object effects504not related to text processing. In addition to applying page effects502, imaging filters506and/or pixmap blending masks508at the image processor316as described in step1908, the image processor316can also apply object effects504on shapes or images during step1916. By way of non-limiting examples, the image processor316can use edge detection or other image analysis techniques to identify objects on the page and then alter their color, adjust their size or position, or perform any other type of editing or adjustment. In some embodiments, the image processor316can use colors and patterns around an individual object to interpolate a likely background behind an object, such that the area behind the object can be filled in with the interpolated background when the object's size is made smaller or the object is moved from its original location. After step1916, the image processor316can forward the altered raster representation to the print engine at step1910to be printed. In some embodiments or situations, the scanner processor306can additionally inform the print engine304of any remaining selected transformation effects400that are to be applied at the print engine304during step1910, such as pixmap screens510.

In alternate embodiments or situations, if object effects504were selected but none of the selected object effects504apply to text objects, the scanner processor306can move directly from step1906to step1916without processing the page with the OCR component314at step1912.

Returning to step1914, if the scanner processor306determines that text objects were recognized by the OCR component during step1912and object effects504were selected, the scanner processor306can move to step1918.

From step1918the scanner processor306can move to either step1920or step1922. The scanner processor306can move to step1920to prepare a print job for the RIP302, such that the RIP302can apply at least some selected transformation effects400including object effects504applicable to identified text objects. Alternately, the scanner processor306can move to step1928to apply transformation effects400itself, including object effects504applicable to identified text objects. In some embodiments the printer's image processor316can be configured to process text, such that in these embodiments the printer100can move to step1928from step1918. In alternate embodiments the printer100can have a different type of image processor316that is not configured to process text, such that in these embodiments the printer100can move to step1920from step1918. In still other embodiments, the printer100can choose between moving to step1920and step1928from step1918based on the image processor's current processing load or other factors.

At step1920, the image processor316can perform some or all selected page effects502on the scanned raster representation, such as adjusting the page size. In some embodiments the image processor316can also delete or erase identified text objects on the raster representation, such as by interpolating a background behind identified text and overlaying a box filled with the interpolated background over the identified text. In some embodiments, the image processor316can perform one or more object effects504on non-text objects, such as changing the color of a filled shape on the raster representation. After preparing the raster representation during step1920, the image processor316can move to step1922.

At step1922, the image processor316can prepare a print job for the RIP302. As described above, the print job can include PDL and/or PJL commands that identify elements of the page. Here, the image processor316can include the raster representation as an image file in the print job, as well as PDL/PJL commands about how to render the raster representation. The image processor316can also include commands about identified text objects, such as PDL commands that identify current attributes about an identified text object such as its content, font, and location, as well as wrapped PJL commands that indicate how the text object should be modified to apply selected object effects504to the text object. The print job can further include other commands regarding additional transformation effects400.

At step1924, the scanner processor306can pass the print job to the printer's local RIP302, or a remote cloud RIP302. The RIP302can follow the commands in the print job to apply the transformation effects400identified in the print job and generate an orderlist that indicates to the print engine304how to print the page as modified by the transformation effects400. In some embodiments, the RIP302can follow steps described above with respect toFIGS. 13A-13Bto generate an orderlist from the print job commands. By way of a non-limiting example a PDL Interpreter310can modify the raster representation sent as an image file in the print job as specified by any of the selected transformation effects400. By way of another non-limiting example, the Graphics Rendering Component312can apply an object effect504to an identified text object by rendering new text over the underlying raster image that corresponds to the content of the identified text object using a different font, font size, and/or position on the page. The RIP302can pass the orderlist it generates to the print engine304at step1926to be printed.

Returning to step1918, if the scanner processor306chooses to move to step1928to process object effects504related to text itself, the image processor316can perform some or all selected page effects502on the scanned raster representation at step1928, such as adjusting the page size.

At step1930, the image processor316can interpolate the background behind a text object, such as copying the color or pattern of surrounding pixels.

At step1932, the image processor316can delete the existing text object on the raster representation. In some embodiments the image processor316can generate a box filled with the interpolated background color or pattern, and overlay that box over the existing text object such that it is no longer visible on the raster representation. In other embodiments the image processor316can erase the text object and fill its former space with the interpolated background color or pattern.

At step1934, the image processor316can generate a new text object with the same content as the deleted text object, but with different attributes to apply the selected object effects504. By way of a non-limiting example, the image processor316can render a new text object using a different font, font size, and/or font color. The new text object can be placed at the original location of the deleted text object, or be placed at a different location on the page, as specified by selected transformation effects400.

At step1936, the image processor316can apply any other selected transformation effects to the raster representation, such as remaining page effects502, object effects504on other non-text objects, imaging filters506, and/or pixmap blending masks508.

After applying the selected transformation effects on the raster representation, the scanner processor306can pass the altered raster representation to the print engine at step1910to be printed. In some embodiments or situations, the scanner processor306can additionally inform the print engine304of any remaining selected transformation effects400that are to be applied at the print engine304during step1910, such as pixmap screens510.

As described above, the system and methods described above can be used to create one or more variants of an original digital or hard copy document such that the variants can be printed at the printer100. By way of a non-limiting example,FIG. 20depicts an example of an original document at the top left, which can be modified using one or more transformation effects400to create variants of the document. In this example the copy on the top right has altered fonts and altered background patterns relative to the original, the copy on the bottom left the same fonts but has the original's background images removed, and the copy on the bottom right has the same text content as the original but is rendered with different fonts, altered background fill patterns, and a removed center stripe shape. A user can select different sets of transformation effects400to apply to different sets of copies, such that any number of any or all of the page variants shown inFIG. 20can be printed from the same original page.