US20060139673A1 - Printer filter configuration - Google Patents
Printer filter configuration Download PDFInfo
- Publication number
- US20060139673A1 US20060139673A1 US11/024,049 US2404904A US2006139673A1 US 20060139673 A1 US20060139673 A1 US 20060139673A1 US 2404904 A US2404904 A US 2404904A US 2006139673 A1 US2006139673 A1 US 2006139673A1
- Authority
- US
- United States
- Prior art keywords
- printer
- filter
- printer filter
- filters
- pipeline
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000013011 mating Effects 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 23
- 238000006243 chemical reaction Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 15
- 230000015654 memory Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000007935 neutral effect Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1275—Print workflow management, e.g. defining or changing a workflow, cross publishing
- G06F3/1277—Print workflow management, e.g. defining or changing a workflow, cross publishing using filter pipeline, e.g. outside the driver, adding traps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1208—Improving or facilitating administration, e.g. print management resulting in improved quality of the output result, e.g. print layout, colours, workflows, print preview
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/126—Job scheduling, e.g. queuing, determine appropriate device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
Definitions
- This disclosure relates in general to printing and in particular, by way of example but not limitation, to enabling a flexible printer pipeline in a printer subsystem in which an arbitrary number of as well as differing types of printer filters may be utilized.
- FIG. 1 is an example of an existing printing scenario 100 .
- existing printing scenario 100 includes an application 101 , a print spooler 105 , and “n” printers 107 ( 1 . . . n).
- Application 101 may be, for example, a word processing program.
- Application 101 creates a printable file 103 .
- This creation of printable file 103 may possibly be effectuated in conjunction with a graphics subsystem, such as by application 101 calling an application programming interface (API) of the graphics subsystem.
- Printable file 103 is provided (e.g., as a stream of bits) to print spooler 105 .
- Print spooler 105 is a component that is capable of managing one or more printers 107 and orchestrating print jobs with printers 107 .
- Each printer 107 is associated with a driver 109 and a print processor 111 .
- printer # 1 107 ( 1 ) is associated with driver 109 ( 1 ) and print processor 111 ( 1 )
- printer #n 107 (n) is associated with driver 109 (n) and print processor 111 (n).
- Print processors 111 are capable of providing printing enhancements such as transparences, watermarks, binding layouts, and n-up printing.
- Drivers 109 are responsible for converting printable file 103 from a computer language to a printer language.
- Print processor 111 operates on printable file 103 to produce an enhanced printable file 103 .
- driver 109 operates on the enhanced printable file 103 to create a converted (and enhanced) printable file 103 .
- the converted printable file 103 can then be printed by a printer 107 that is associated with the print processor 111 and driver 109 .
- Each printer 107 has no more than a single associated driver 109 and a single associated print processor 111 .
- Each particular driver 109 and print processor 111 pair are specifically designed to work together. Consequently, drivers 109 and print processors 111 cannot be freely interchanged with one another.
- Print spoolers 105 are designed to utilize at most one driver 109 and one print processor 111 per printer 107 . Consequently, a new enhancement feature or conversion function can be added only by installing a completely new print processor 111 or driver 109 , respectively, which replaces a previous one.
- a flexible printing subsystem is enabled with a printer filter pipeline.
- a configurable and arbitrary number of printer filters forming a printer filter pipeline are applied to files that are to be printed.
- the printer filter pipeline may implement enhancement features and conversion functions as determined by the individual printer filters forming the printer filter pipeline.
- the printer filter pipeline is established in accordance with a printer filter configuration file.
- the printer filter configuration file stipulates a printer filter order and includes a printer filter entry associated with each printer filter to be part of the printer filter pipeline. Each printer filter entry identifies the associated printer filter by name and enumerates the interfaces thereof.
- Printer filters may be adjacently linked in a printer filter pipeline when their mating interfaces match.
- FIG. 1 is an example of an existing printing scenario.
- FIG. 2 is an example of a flexible printing scenario having a printer filter pipeline.
- FIG. 3 is a device having an example of a flexible printing subsystem that is capable of establishing and utilizing a printer filter pipeline with a printer filter configuration file.
- FIG. 4 is a block diagram example of a printer filter configuration file.
- FIG. 5 is a block diagram example of a printer filter pipeline having three printer filters, the printer filter pipeline established in accordance with a printer filter configuration file.
- FIG. 6 is a flow diagram that illustrates an example of a method for establishing a printer filter pipeline in accordance with a printer filter configuration file.
- FIG. 7 illustrates an example of a computing (or general device) operating environment that is capable of (wholly or partially) implementing at least one aspect of printer filter configuration as described herein.
- FIG. 2 is an example of a flexible printing scenario 200 having a printer filter pipeline 212 .
- each printer filter pipeline 212 may be comprised of an arbitrary and configurable number of printer filters 210 .
- Each printer filter 210 may implement one or more conversion functions and/or an enhancement features.
- Printer filters 210 may be interconnected to form a printer filter pipeline 212 in different orders and in varying numbers. The data types exchanged between printer filters 210 are also flexible.
- flexible printing scenario 200 includes an application 202 , a print spooler 206 , and “n” printers 208 ( 1 . . . n), where “n” is an integer equal to one or greater.
- Application 202 may be, for example, a word processor, a spreadsheet program, an email client, a web browser, an artistic and/or entertainment program, an installation program, some combination thereof, and so forth.
- Printers 208 may be any type of printer, including professional or consumer printers, ink jet or laser printers, networked or directly-connected printers, and so forth.
- Each printer 208 corresponds to a respective printer filter pipeline 212 and is associated with multiple printer filters 210 thereof.
- printer # 1 208 ( 1 ) corresponds to printer filter pipeline 212 ( 1 ) and is associated with filter A 210 A( 1 ), filter B 210 B( 1 ), filter C 210 C( 1 ), . . . and possibly more such filters 210 as indicated by the ellipses.
- Printer #n 208 (n) corresponds to printer filter pipeline 212 (n) and is associated with filter A 210 A(n), filter B 210 B(n), filter C 210 C(n), filter D 210 D(n) . . . and possibly more such filters 210 .
- individual printer filters 210 are capable of providing at least one printing enhancement feature and/or are responsible for at least partially converting printable file 204 into a printer-compatible language from a computer-compatible format.
- application 202 creates or otherwise has access to a printable file 204 .
- printable file 204 is provided (e.g., as a stream of bits) to print spooler 206 after a user activates a print command through application 202 (or using another software construct).
- printable file 204 may be in a computer-compatible format such as an enhanced metafile format (EMF).
- EMF enhanced metafile format
- Print spooler 206 accepts printable file 204 from application 202 to effectuate the printing process.
- application 202 may not directly provide printable file 204 to print spooler 206 and that print spooler 206 likewise may not directly accept printable file 204 from application 202 .
- application 202 may directly provide printable file 204 to a graphics subsystem (not shown), which may modify printable file 204 and then provide (modified) printable file 204 to print spooler 206 .
- application 202 may call an API of the graphics subsystem. Regardless, application 202 effectively provides printable file 204 directly or indirectly to print spooler 206 .
- print spooler 206 is a component that is capable of managing one or more printers 208 and orchestrating print jobs with printers 208 . More specifically, print spooler 206 is capable of utilizing at least one designated printer filter pipeline 212 when orchestrating print jobs. Print spooler 206 is adapted to apply printable file 204 to the print filters 210 of the designated corresponding printer filter pipeline 212 . After printable file 204 is passed through printer filters 210 of the corresponding printer filter pipeline 212 for conversion and possible enhancement, printable file 204 comprises a printer-compatible file that may be consumed for printing by printer 208 .
- Differently-formatted versions of printable file 204 may concurrently exist within a scenario or device. Differently-formatted versions of printable file 204 may arise, for example, as printable file 204 is applied to and traverses printer filter pipeline 212 . For instance, there may simultaneously be a (e.g., residual) computer-language compatible printable file 204 and a printer-language compatible printable file 204 , as well as any intermediate versions. Also, a copy of printable file 204 (in any format) may be stored when an original is forwarded from application 202 to print spooler 206 , for example, or a copy of printable file 204 (in any format) may be forwarded when an original is stored.
- a copy of printable file 204 in any format
- Application 202 and printers 208 may optionally be specially designed and/or modified to operate in conjunction with a printing subsystem that is capable of utilizing a printer filter pipeline 212 .
- an application 202 may add a printer filter 210 to a printer filter pipeline 212 and/or rely on features or functions of a particular printer filter 210 or a combination of printer filters 210 .
- a printer 208 may be capable of following an instruction that results from one or more printer filters 210 .
- Applications 202 and printers 208 may alternatively entail other special designs or modifications to improve and/or facilitate their operation in conjunction with printer filter pipelines 212 .
- FIG. 3 is a device 300 having an example of a flexible printing subsystem 304 that is capable of establishing and utilizing a printer filter pipeline with a printer filter configuration file 306 .
- device 300 may include at least one processor, one or more media, input/output (I/O) interface(s), and other hardware/software/firmware.
- I/O input/output
- An example device and operating environment that is capable of implementing at least one aspect of printer filter configuring is described further herein below with particular reference to FIG. 7 in a section entitled “Example Operating Environment for Computer or Other Device”.
- device 300 includes an operating system 302 , one or more applications 202 , and printing subsystem 304 .
- printing subsystem 304 may be fully or partially part of and/or integrated with operating system 302 .
- printing subsystem 304 may run on top of or along side of operating system 302 .
- printing subsystem 304 includes print spooler 206 and “N” printer filters 210 ( 1 . . . N), with “N” comprising an integer of one or greater.
- Filter A 210 A, filter B 210 B, filter C 210 C, filter D 210 D . . . filter N 210 N are specifically shown in FIG. 3 .
- one, two, three, or more printer filters 210 may be present at device 300 .
- Printing subsystem 304 also includes “n” printer filter configuration files 306 .
- printer filter configuration file # 1 306 ( 1 ) . . . printer filter configuration file #n 306 (n) are stored at device 300 as part of printing subsystem 304 .
- printer filter configuration file #n 306 (n) are stored at device 300 as part of printing subsystem 304 .
- each printer filter configuration file 306 includes sufficient information to enable printing subsystem 304 to establish a printer filter pipeline 212 (of FIG. 2 ) as well as to utilize the established printer filter pipeline 212 in a print job.
- a printer filter configuration file 306 may identify the printer filters 210 of a given printer filter pipeline 212 , may enumerate input and output interfaces for the individual printer filters 210 , may stipulate an order for the printer filters 210 of the given printer filter pipeline 212 , and so forth.
- An example printer filter configuration file 306 is described further herein below with particular reference to FIG. 4 .
- Printer filters 210 A- 210 N may provide any printing enhancement(s) and/or perform any language or format conversion(s). Eight examples of printer filters 210 A- 210 N are described below.
- a printer filter 210 may be a watermark filter that underlays a specified watermark on at least one page of a print job.
- a printer filter 210 may be a selector filter that selects between or among different available versions of a current print job. For instance, different versions may be based on language (e.g., English, French, or German), on colors (e.g., grayscale versus color, color depth, etc.), and so forth.
- a printer filter 210 may be an N-up filter that places “N” logical pages on each printed sheet.
- a printer filter 210 may be a binding filter that changes directional orientation of printed pages depending on what type of binding (e.g., book form, top binding, side binding, etc.) is intended.
- a printer filter 210 may be a transparency filter that ensures that color mixtures are appropriate to properly reflect the transparency of objects as well as the relative depths of respective objects.
- a printer filter 210 may be a renderer filter that performs a conversion from a computer format to a printer language. For instance, a conversion from EMF to either Postscript or printer control language (PCL) may be performed.
- a printer filter 210 may be an accounting filter that tracks a number of printed pages and may assign each printed page to a different category (e.g., personal/employee, customer number, corporate number, file number, etc.).
- a printer filter 210 may be a color enhancement filter that tunes color combinations.
- One or more other printer filter 210 realizations may alternatively be implemented.
- FIG. 4 is a block diagram example of a printer filter configuration file 306 .
- Printer filter configuration file 306 is used by printing subsystem 304 (of FIG. 3 ) to establish a printer filter pipeline 212 and/or to utilize a constructed printer filter pipeline 212 .
- printer filter configuration file 306 is directed to “N” printer filters 210 as indicated by associated “N” printer filter entries 408 .
- printer filter configuration file 306 is directed to printer filter A 210 A, printer filter B 210 B . . . printer filter N 210 N as indicated by associated printer filter entry A 408 A, printer filter entry B 408 B . . . printer filter entry N 408 N, respectively.
- printer filter configuration information for the “N” printer filters 210 A- 210 N may be arranged and/or organized in any manner. In a described implementation, however, filter names 402 and filter interfaces 404 are arranged together with regard to their respective printer filters 210 in respective printer filter entries 408 . As illustrated, printer filter entry A 408 A includes a filter name A 402 A and a filter interface 404 A, printer filter entry B 408 B includes a filter name B 402 B and a filter interface 404 B . . . and printer filter entry N 408 N includes a filter name N 402 N and a filter interface 404 N.
- Printer filter configuration file 306 also includes a printer filter order 406 .
- the printer filter order information for printer filter order 406 includes a stipulated order in which printer filters 210 A- 210 N are to be established for a printer filter pipeline 212 that corresponds to the printer filter configuration file 306 .
- Printer filter order 406 may be realized in any of many possible manners. For example, printer filter order information may be inherently included in printer filter configuration file 306 by the order of filter entries 408 .
- printer filter configuration file 306 may include a field that comprises the printer filter order information of printer filter order 406 .
- An example of a printer filter order 406 and the resulting printer filter pipeline 212 is described further herein below with particular reference to FIG. 5 .
- printer filter configuration file 306 need not employ all printer filters 210 that are available on a given device. Similarly, a printer filter order 406 of a given printer filter configuration file 306 need not stipulate all of the printer filters 210 that have an associated filter entry 408 in that given printer filter configuration file 306 .
- printer filter configuration file 306 may be realized in any manner, in a described implementation printer filter configuration file 306 is realized as an assembly (in managed code environments) or as a dynamic link library (.dll) file (in traditional or pre-compiled code environments).
- XML extensible markup language
- FIG. 5 is a block diagram example of a printer filter pipeline 212 * having three printer filters 210 in which printer filter pipeline 212 * is established in accordance with a printer filter configuration file having a printer filter order 406 *.
- Filter order 406 * stipulates an order of printer filters 210 for printer filter pipeline 212 *.
- the stipulated filter order is “B-D-A”.
- printer filter pipeline 212 * is to be established or constructed in the following order: (1) printer filter B 210 B, (2) printer filter D 210 D, and (3) printer filter A 210 A.
- printer filter pipeline 212 * includes three filters: (1) printer filter B 210 B, (2) printer filter D 210 D, and (3) printer filter A 210 A.
- Each printer filter 210 includes an input interface 502 and an output interface 504 .
- Printer filter B 210 B has an input interface 502 of type ⁇ and an output interface 504 also of type ⁇ .
- Printer filter D 210 D has an input interface 502 of type ⁇ and an output interface 504 of type ⁇ .
- Printer filter A 210 A has an input interface 502 of type ⁇ and an output interface 504 of type ⁇ .
- each filter interface 404 can enumerate both an input interface 502 and an output interface 504 .
- Examples of printer filter interface types include, but are not limited to: a stream interface type, a visual tree (VT) interface type, a fixed document interface type, a document sequence interface type, a fixed page interface type, other present and future interface types, some combination thereof, and so forth.
- VT visual tree
- an interface type of an output interface 504 may be a subset of an interface type of an input interface 502 and still be compatible.
- the mating interfaces (i) between printer filter B 210 B and printer filter D 210 D and (ii) between printer filter D 210 D and printer filter A 210 A do match. More specifically, the output interface 504 of printer filter B 210 B and the input interface 502 of printer filter D 210 D are both of an interface type ⁇ . Also, the output interface 504 of printer filter D 210 D and the input interface 502 of printer filter A 210 A are both of an interface type ⁇ . Consequently, a printable file 204 may be passed (i) between printer filter B 210 B and printer filter D 210 D and (ii) between printer filter D 210 D and printer filter A 210 A.
- printable file 204 is applied thereto as input data 506 .
- Input data 506 represents printable file 204 in a computer-language-compatible format.
- printable file 204 is filtered in some manner, as is described herein above with particular reference to FIG. 3 .
- output data 508 represents printable file 204 in a printer-language-compatible format after filtering.
- Printable file 204 as output data 508 may therefore be forwarded by print spooler 206 (of FIGS. 2 and 3 ) to a printer 208 .
- FIG. 6 is a flow diagram 600 that illustrates an example of a method for establishing a printer filter pipeline in accordance with a printer filter configuration file.
- Flow diagram 600 is also directed to utilizing a printer filter pipeline.
- Flow diagram 600 includes eight (8) blocks 602 - 616 .
- FIGS. 2-5 are used in particular to illustrate certain aspects and examples of the method.
- the actions of flow diagram 600 may be performed by a printing subsystem 304 of a device 300 .
- a printer filter configuration file is accessed.
- a printer filter configuration file 306 may be accessed.
- a printer filter order that stipulates an order for printer filters is extracted.
- a printer filter order 406 that stipulates an order for printer filters 210 for a printer filter pipeline 212 may be extracted (i) from a (e.g., separate) field of printer filter configuration file 306 or (ii) by analysis of an instrinsic order of printer filter entries 408 of printer filter configuration file 306 .
- an associated printer filter entry is extracted.
- an associated printer filter entry 408 may be extracted from printer filter configuration file 306 .
- Each extracted printer filter entry 408 may include an identified printer filter name 402 and an enumerated printer filter interface 404 .
- Each enumerated printer filter interface 404 may include an input interface 502 and an output interface 504 .
- mating interfaces of the stipulated printing filters along the printer filter pipeline match. For example, it may be verified that mating interfaces of adjacent printer filters 210 of printer filter pipeline 212 match. More specifically, it may be verified that an interface type of an output interface 504 for each printer filter 210 is compatible with an interface type of an input interface 502 for a succeeding printer filter 210 in printer filter pipeline 212 .
- a non-matching mating interface is detected based on the verification. For example, it may be determined if two mated interfaces 504 / 502 of adjacent printer filters 210 are detected to be non-matching during the verification. If yes, a non-matching mating interface is detected, then at block 612 a non-matching printer filter error notification is provided.
- printing subsystem 304 in conjunction with operating system 302 may provide an error notification to a user that indicates an incompatible printer filter pipeline 212 has been stipulated by the order of printer filters 210 in printer filter order 406 .
- printer filter pipeline 212 is constructed (using printer filters) responsive to a printer filter order and based on printer filter entries.
- printer filter pipeline 212 may be constructed using printer filters 210 responsive to printer filter order 406 and based on printer filter entries 408 of printer filter configuration file 306 .
- printer filter pipeline 212 * may be constructed.
- the constructed printer filter pipeline is utilized with one or more print jobs.
- a printable file 204 may be applied to printer filter pipeline 212 such that printer filters 210 thereof filter printable file 204 so that printable file 204 is converted from a computer-language format to a printer-language format and optionally enhanced.
- actions of flow diagram 600 may be performed in many different alternative orders. For example, actions of individual different blocks 602 - 616 may be performed fully or partially simultaneously. As another example, the action(s) of block 614 may be performed prior to the action(s) of block 608 and 610 .
- printer filter configuration file 306 An example of a printer filter configuration file 306 is presented below. This example is a file that is formatted in XML. This XML-formatted example printer filter configuration file 306 has been somewhat tuned to correspond to the example of FIG. 5 . If there is no separate field for printer filter order 406 *, the “ ⁇ FilterOrder>” section may be omitted and the order may be inferred from the filter order listing. In practice, a first filter 210 of a particular printer filter pipeline 212 that has a “FilterDataInReader” being “ComputerLanguageCompatibleFileReader” may be the only filter 210 of that particular printer filter pipeline 212 that has a given “FilterDataTypeIn”.
- FIGS. 1-6 The devices, actions, aspects, features, algorithms, procedures, modules, components, etc. of FIGS. 1-6 are illustrated in diagrams that are divided into multiple blocks. However, the order, interconnections, interrelationships, layout, etc. in which FIGS. 1-6 are described and/or shown is not intended to be construed as a limitation, and any number of the blocks can be modified, combined, rearranged, augmented, omitted, etc. in any manner to implement one or more systems, methods, devices, procedures, media, apparatuses, arrangements, etc. for printer filter configuration. Furthermore, although the description herein includes references to specific implementations (including a general device of FIG.
- the illustrated and/or described implementations can be implemented in any suitable hardware, software, firmware, or combination thereof and using any suitable file format(s); computer, printer, or other language format(s); printer filter configuration data structure(s); printer filter interface type(s); print spooler mechanism(s); printing subsystem architecture(s); and so forth.
- FIG. 7 illustrates an example computing (or general device) operating environment 700 that is capable of (fully or partially) implementing at least one system, device, apparatus, component, arrangement, protocol, approach, method, procedure, media, API, some combination thereof, etc. for printer filter configuration as described herein.
- Operating environment 700 may be utilized in the computer and network architectures described below.
- Example operating environment 700 is only one example of an environment and is not intended to suggest any limitation as to the scope of use or functionality of the applicable device (including computer, network node, entertainment device, mobile appliance, general electronic device, etc.) architectures. Neither should operating environment 700 (or the devices thereof) be interpreted as having any dependency or requirement relating to any one or to any combination of components as illustrated in FIG. 7 .
- printer filter configuration realizations may be implemented with numerous other general purpose or special purpose device (including computing system) environments or configurations.
- Examples of well known devices, systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, thin clients, thick clients, personal digital assistants (PDAs) or mobile telephones, watches, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, video game machines, game consoles, portable or handheld gaming units, network PCs, videoconferencing equipment, minicomputers, mainframe computers, network nodes, distributed or multi-processing computing environments that include any of the above systems or devices, some combination thereof, and so forth.
- PDAs personal digital assistants
- printer filter configuring may be described in the general context of processor-executable instructions.
- processor-executable instructions include routines, programs, protocols, objects, interfaces, components, data structures, etc. that perform and/or enable particular tasks and/or implement particular abstract data types.
- Realizations for printer filter configuring, as described in certain implementations herein, may also be practiced in distributed processing environments where tasks are performed by remotely-linked processing devices that are connected through a communications link and/or network.
- processor-executable instructions may be located in separate storage media, executed by different processors, and/or propagated over transmission media.
- Example operating environment 700 includes a general-purpose computing device in the form of a computer 702 , which may comprise any (e.g., electronic) device with computing/processing capabilities.
- the components of computer 702 may include, but are not limited to, one or more processors or processing units 704 , a system memory 706 , and a system bus 708 that couples various system components including processor 704 to system memory 706 .
- Processors 704 are not limited by the materials from which they are formed or the processing mechanisms employed therein.
- processors 704 may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)).
- processor-executable instructions may be electronically-executable instructions.
- the mechanisms of or for processors 704 , and thus of or for computer 702 may include, but are not limited to, quantum computing, optical computing, mechanical computing (e.g., using nanotechnology), and so forth.
- System bus 708 represents one or more of any of many types of wired or wireless bus structures, including a memory bus or memory controller, a point-to-point connection, a switching fabric, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- bus architectures may include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus, some combination thereof, and so forth.
- Computer 702 typically includes a variety of processor-accessible media. Such media may be any available media that is accessible by computer 702 or another (e.g., electronic) device, and it includes both volatile and non-volatile media, removable and non-removable media, and storage and transmission media.
- processor-accessible media may be any available media that is accessible by computer 702 or another (e.g., electronic) device, and it includes both volatile and non-volatile media, removable and non-removable media, and storage and transmission media.
- System memory 706 includes processor-accessible storage media in the form of volatile memory, such as random access memory (RAM) 710 , and/or non-volatile memory, such as read only memory (ROM) 712 .
- RAM random access memory
- ROM read only memory
- a basic input/output system (BIOS) 714 containing the basic routines that help to transfer information between elements within computer 702 , such as during start-up, is typically stored in ROM 712 .
- BIOS basic input/output system
- RAM 710 typically contains data and/or program modules/instructions that are immediately accessible to and/or being presently operated on by processing unit 704 .
- Computer 702 may also include other removable/non-removable and/or volatile/non-volatile storage media.
- FIG. 7 illustrates a hard disk drive or disk drive array 716 for reading from and writing to a (typically) non-removable, non-volatile magnetic media (not separately shown); a magnetic disk drive 718 for reading from and writing to a (typically) removable, non-volatile magnetic disk 720 (e.g., a “floppy disk”); and an optical disk drive 722 for reading from and/or writing to a (typically) removable, non-volatile optical disk 724 such as a CD, DVD, or other optical media.
- a hard disk drive or disk drive array 716 for reading from and writing to a (typically) non-removable, non-volatile magnetic media (not separately shown)
- a magnetic disk drive 718 for reading from and writing to a (typically) removable, non-volatile magnetic disk 720 (e.g., a “floppy disk”
- Hard disk drive 716 , magnetic disk drive 718 , and optical disk drive 722 are each connected to system bus 708 by one or more storage media interfaces 726 .
- hard disk drive 716 , magnetic disk drive 718 , and optical disk drive 722 may be connected to system bus 708 by one or more other separate or combined interfaces (not shown).
- the disk drives and their associated processor-accessible media provide non-volatile storage of processor-executable instructions, such as data structures, program modules, and other data for computer 702 .
- example computer 702 illustrates a hard disk 716 , a removable magnetic disk 720 , and a removable optical disk 724
- processor-accessible media may store instructions that are accessible by a device, such as magnetic cassettes or other magnetic storage devices, flash memory, compact disks (CDs), digital versatile disks (DVDs) or other optical storage, RAM, ROM, electrically-erasable programmable read-only memories (EEPROM), and so forth.
- Such media may also include so-called special purpose or hard-wired IC chips.
- any processor-accessible media may be utilized to realize the storage media of the example operating environment 700 .
- processor-executable instructions may be stored on hard disk 716 , magnetic disk 720 , optical disk 724 , ROM 712 , and/or RAM 710 , including by way of general example, an operating system 728 , one or more application programs 730 , other program modules 732 , and program data 734 .
- These processor-executable instructions may include, for example, one or more printer filter configuration file 306 data structure(s), a program/module for print spooler 206 , applications 202 and operating system 302 , one or more printer filters 210 , a printable file 204 , and so forth.
- a user may enter commands and/or information into computer 702 via input devices such as a keyboard 736 and a pointing device 738 (e.g., a “mouse”).
- Other input devices 740 may include a microphone, joystick, game pad, satellite dish, serial port, video camera, scanner, and/or the like.
- input/output interfaces 742 are coupled to system bus 708 .
- input devices and/or output devices may instead be connected by other interface and bus structures, such as a parallel port, a game port, a universal serial bus (USB) port, an infrared port, an IEEE 1394 (“Firewire”) interface, an IEEE 802.11 wireless interface, a Bluetooth® wireless interface, and so forth.
- USB universal serial bus
- IEEE 1394 IEEE 1394 (“Firewire”) interface
- IEEE 802.11 wireless interface IEEE 802.11 wireless interface
- Bluetooth® wireless interface a Bluetooth® wireless interface
- a monitor/view screen 744 or other type of display device may also be connected to system bus 708 via an interface, such as a video adapter 746 .
- Video adapter 746 (or another component) may be or may include a graphics card for processing graphics-intensive calculations and for handling demanding display requirements.
- a graphics card includes a graphics processing unit (GPU), video RAM (VRAM), etc. to facilitate the expeditious display of graphics and performance of graphics operations.
- other output peripheral devices may include components such as speakers (not shown) and a printer 748 , which may be connected to computer 702 via input/output interfaces 742 .
- Computer 702 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computing device 750 .
- remote computing device 750 may be a peripheral device, a personal computer, a portable computer (e.g., laptop computer, tablet computer, PDA, mobile station, etc.), a palm or pocket-sized computer, a watch, a gaming device, a server, a router, a network computer, a peer device, another network node, or another device type as listed above, and so forth.
- remote computing device 750 is illustrated as a portable computer that may include many or all of the elements and features described herein with respect to computer 702 .
- Logical connections between computer 702 and remote computer 750 are depicted as a local area network (LAN) 752 and a general wide area network (WAN) 754 .
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, the Internet, fixed and mobile telephone networks, ad-hoc and infrastructure wireless networks, mesh networks, other wireless networks, gaming networks, some combination thereof, and so forth.
- Such networks and logical and physical communications connections are additional examples of transmission media.
- computer 702 When implemented in a LAN networking environment, computer 702 is usually connected to LAN 752 via a network interface or adapter 756 . When implemented in a WAN networking environment, computer 702 typically includes a modem 758 or other component for establishing communications over WAN 754 . Modem 758 , which may be internal or external to computer 702 , may be connected to system bus 708 via input/output interfaces 742 or any other appropriate mechanism(s). It is to be appreciated that the illustrated network connections are examples and that other manners for establishing communication link(s) between computers 702 and 750 may be employed.
- remote application programs 760 reside on a memory component of remote computer 750 but may be usable or otherwise accessible via computer 702 .
- application programs 730 and other processor-executable instructions such as operating system 728 are illustrated herein as discrete blocks, but it is recognized that such programs, components, and other instructions reside at various times in different storage components of computing device 702 (and/or remote computing device 750 ) and are executed by processor(s) 704 of computer 702 (and/or those of remote computing device 750 ).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
Description
- This disclosure relates in general to printing and in particular, by way of example but not limitation, to enabling a flexible printer pipeline in a printer subsystem in which an arbitrary number of as well as differing types of printer filters may be utilized.
- Although the paperless office has been contemplated for decades, it is not yet a reality in most environments. Moreover, a hardcopy version of certain kinds of documents and artistic creations may always be desirable. Hence, printing is an important function provided by computing devices.
-
FIG. 1 is an example of an existingprinting scenario 100. As illustrated,existing printing scenario 100 includes anapplication 101, aprint spooler 105, and “n” printers 107(1 . . . n).Application 101 may be, for example, a word processing program.Application 101 creates aprintable file 103. This creation ofprintable file 103 may possibly be effectuated in conjunction with a graphics subsystem, such as byapplication 101 calling an application programming interface (API) of the graphics subsystem.Printable file 103 is provided (e.g., as a stream of bits) to printspooler 105. Print spooler 105 is a component that is capable of managing one ormore printers 107 and orchestrating print jobs withprinters 107. - Each
printer 107 is associated with adriver 109 and aprint processor 111. As illustrated,printer # 1 107(1) is associated with driver 109(1) and print processor 111(1), and printer #n 107(n) is associated with driver 109(n) and print processor 111(n).Print processors 111 are capable of providing printing enhancements such as transparences, watermarks, binding layouts, and n-up printing.Drivers 109 are responsible for convertingprintable file 103 from a computer language to a printer language. - Print
processor 111 operates onprintable file 103 to produce an enhancedprintable file 103. After the enhancements are provided byprint processor 111,driver 109 operates on the enhancedprintable file 103 to create a converted (and enhanced)printable file 103. The convertedprintable file 103 can then be printed by aprinter 107 that is associated with theprint processor 111 anddriver 109. - Each
printer 107, or more specifically each printer queue inprint spooler 105, has no more than a single associateddriver 109 and a single associatedprint processor 111. Eachparticular driver 109 andprint processor 111 pair are specifically designed to work together. Consequently,drivers 109 andprint processors 111 cannot be freely interchanged with one another.Print spoolers 105 are designed to utilize at most onedriver 109 and oneprint processor 111 perprinter 107. Consequently, a new enhancement feature or conversion function can be added only by installing a completelynew print processor 111 ordriver 109, respectively, which replaces a previous one. - In short, existing printing subsystems are designed to utilize one
driver 109 and oneprint processor 111 for any givenprinter 107. The order in which they operate is predefined withprint processor 111 operating prior todriver 109. Both the input and the output interfaces fordrivers 109 andprint processors 111 are fixed. Finally, the data types with whichdrivers 109 andprint processors 111 interact are also fixed. - Accordingly, there is a need for general schemes and/or techniques that can facilitate printing flexibility and/or adjustability across a range of printing features and functions.
- A flexible printing subsystem is enabled with a printer filter pipeline. A configurable and arbitrary number of printer filters forming a printer filter pipeline are applied to files that are to be printed. In a described implementation, the printer filter pipeline may implement enhancement features and conversion functions as determined by the individual printer filters forming the printer filter pipeline. The printer filter pipeline is established in accordance with a printer filter configuration file. The printer filter configuration file stipulates a printer filter order and includes a printer filter entry associated with each printer filter to be part of the printer filter pipeline. Each printer filter entry identifies the associated printer filter by name and enumerates the interfaces thereof. Printer filters may be adjacently linked in a printer filter pipeline when their mating interfaces match.
- Other method, system, approach, apparatus, device, media, procedure, arrangement, etc. implementations are described herein.
- The same numbers are used throughout the drawings to reference like and/or corresponding aspects, features, and components.
-
FIG. 1 is an example of an existing printing scenario. -
FIG. 2 is an example of a flexible printing scenario having a printer filter pipeline. -
FIG. 3 is a device having an example of a flexible printing subsystem that is capable of establishing and utilizing a printer filter pipeline with a printer filter configuration file. -
FIG. 4 is a block diagram example of a printer filter configuration file. -
FIG. 5 is a block diagram example of a printer filter pipeline having three printer filters, the printer filter pipeline established in accordance with a printer filter configuration file. -
FIG. 6 is a flow diagram that illustrates an example of a method for establishing a printer filter pipeline in accordance with a printer filter configuration file. -
FIG. 7 illustrates an example of a computing (or general device) operating environment that is capable of (wholly or partially) implementing at least one aspect of printer filter configuration as described herein. -
FIG. 2 is an example of aflexible printing scenario 200 having aprinter filter pipeline 212. In a described implementation, eachprinter filter pipeline 212 may be comprised of an arbitrary and configurable number of printer filters 210. Each printer filter 210 may implement one or more conversion functions and/or an enhancement features. Printer filters 210 may be interconnected to form aprinter filter pipeline 212 in different orders and in varying numbers. The data types exchanged between printer filters 210 are also flexible. - As illustrated,
flexible printing scenario 200 includes anapplication 202, aprint spooler 206, and “n” printers 208(1 . . . n), where “n” is an integer equal to one or greater.Application 202 may be, for example, a word processor, a spreadsheet program, an email client, a web browser, an artistic and/or entertainment program, an installation program, some combination thereof, and so forth.Printers 208 may be any type of printer, including professional or consumer printers, ink jet or laser printers, networked or directly-connected printers, and so forth. - Each
printer 208 corresponds to a respectiveprinter filter pipeline 212 and is associated with multiple printer filters 210 thereof. As illustrated,printer # 1 208(1) corresponds to printer filter pipeline 212(1) and is associated withfilter A 210A(1),filter B 210B(1),filter C 210C(1), . . . and possibly more such filters 210 as indicated by the ellipses. Printer #n 208(n) corresponds to printer filter pipeline 212(n) and is associated withfilter A 210A(n),filter B 210B(n),filter C 210C(n),filter D 210D(n) . . . and possibly more such filters 210. As is described further herein below with particular reference toFIG. 3 , individual printer filters 210 are capable of providing at least one printing enhancement feature and/or are responsible for at least partially convertingprintable file 204 into a printer-compatible language from a computer-compatible format. - In operation,
application 202 creates or otherwise has access to aprintable file 204.Printable file 204 is provided (e.g., as a stream of bits) toprint spooler 206 after a user activates a print command through application 202 (or using another software construct). By way of example only, whenapplication 202 providesprintable file 204 to printspooler 206,printable file 204 may be in a computer-compatible format such as an enhanced metafile format (EMF).Print spooler 206 acceptsprintable file 204 fromapplication 202 to effectuate the printing process. - It should be understood that
application 202 may not directly provideprintable file 204 to printspooler 206 and thatprint spooler 206 likewise may not directly acceptprintable file 204 fromapplication 202. There may be one or more intervening system components. For example,application 202 may directly provideprintable file 204 to a graphics subsystem (not shown), which may modifyprintable file 204 and then provide (modified)printable file 204 to printspooler 206. For instance,application 202 may call an API of the graphics subsystem. Regardless,application 202 effectively providesprintable file 204 directly or indirectly to printspooler 206. - In a described implementation,
print spooler 206 is a component that is capable of managing one ormore printers 208 and orchestrating print jobs withprinters 208. More specifically,print spooler 206 is capable of utilizing at least one designatedprinter filter pipeline 212 when orchestrating print jobs.Print spooler 206 is adapted to applyprintable file 204 to the print filters 210 of the designated correspondingprinter filter pipeline 212. Afterprintable file 204 is passed through printer filters 210 of the correspondingprinter filter pipeline 212 for conversion and possible enhancement,printable file 204 comprises a printer-compatible file that may be consumed for printing byprinter 208. - Differently-formatted versions of
printable file 204 may concurrently exist within a scenario or device. Differently-formatted versions ofprintable file 204 may arise, for example, asprintable file 204 is applied to and traversesprinter filter pipeline 212. For instance, there may simultaneously be a (e.g., residual) computer-language compatibleprintable file 204 and a printer-language compatibleprintable file 204, as well as any intermediate versions. Also, a copy of printable file 204 (in any format) may be stored when an original is forwarded fromapplication 202 to printspooler 206, for example, or a copy of printable file 204 (in any format) may be forwarded when an original is stored. -
Application 202 andprinters 208 may optionally be specially designed and/or modified to operate in conjunction with a printing subsystem that is capable of utilizing aprinter filter pipeline 212. For example, anapplication 202 may add a printer filter 210 to aprinter filter pipeline 212 and/or rely on features or functions of a particular printer filter 210 or a combination of printer filters 210. Also, aprinter 208 may be capable of following an instruction that results from one or more printer filters 210.Applications 202 andprinters 208 may alternatively entail other special designs or modifications to improve and/or facilitate their operation in conjunction withprinter filter pipelines 212. -
FIG. 3 is adevice 300 having an example of aflexible printing subsystem 304 that is capable of establishing and utilizing a printer filter pipeline with a printerfilter configuration file 306. Although not explicitly illustrated inFIG. 3 ,device 300 may include at least one processor, one or more media, input/output (I/O) interface(s), and other hardware/software/firmware. An example device and operating environment that is capable of implementing at least one aspect of printer filter configuring is described further herein below with particular reference toFIG. 7 in a section entitled “Example Operating Environment for Computer or Other Device”. - As illustrated,
device 300 includes anoperating system 302, one ormore applications 202, andprinting subsystem 304. Optionally,printing subsystem 304 may be fully or partially part of and/or integrated withoperating system 302. Alternatively,printing subsystem 304 may run on top of or along side ofoperating system 302. - In a described implementation,
printing subsystem 304 includesprint spooler 206 and “N” printer filters 210(1 . . . N), with “N” comprising an integer of one or greater.Filter A 210A, filterB 210B,filter C 210C,filter D 210D . . . filterN 210N are specifically shown inFIG. 3 . However, one, two, three, or more printer filters 210 may be present atdevice 300. -
Printing subsystem 304 also includes “n” printer filter configuration files 306. Specifically, printer filterconfiguration file # 1 306(1) . . . printer filter configuration file #n 306(n) are stored atdevice 300 as part ofprinting subsystem 304. Although no one-to-one correspondence need be established or otherwise exist, in a described implementation there is a respective printer filter configuration file 306(1 . . . n) for each installed printer 208(1 . . . n). - In a described implementation, each printer
filter configuration file 306 includes sufficient information to enableprinting subsystem 304 to establish a printer filter pipeline 212 (ofFIG. 2 ) as well as to utilize the establishedprinter filter pipeline 212 in a print job. For example, a printerfilter configuration file 306 may identify the printer filters 210 of a givenprinter filter pipeline 212, may enumerate input and output interfaces for the individual printer filters 210, may stipulate an order for the printer filters 210 of the givenprinter filter pipeline 212, and so forth. An example printerfilter configuration file 306 is described further herein below with particular reference toFIG. 4 . - Printer filters 210A-210N, individually and in groups of two or more, may provide any printing enhancement(s) and/or perform any language or format conversion(s). Eight examples of
printer filters 210A-210N are described below. First, a printer filter 210 may be a watermark filter that underlays a specified watermark on at least one page of a print job. Second, a printer filter 210 may be a selector filter that selects between or among different available versions of a current print job. For instance, different versions may be based on language (e.g., English, French, or German), on colors (e.g., grayscale versus color, color depth, etc.), and so forth. - Third, a printer filter 210 may be an N-up filter that places “N” logical pages on each printed sheet. Fourth, a printer filter 210 may be a binding filter that changes directional orientation of printed pages depending on what type of binding (e.g., book form, top binding, side binding, etc.) is intended. Fifth, a printer filter 210 may be a transparency filter that ensures that color mixtures are appropriate to properly reflect the transparency of objects as well as the relative depths of respective objects.
- Sixth, a printer filter 210 may be a renderer filter that performs a conversion from a computer format to a printer language. For instance, a conversion from EMF to either Postscript or printer control language (PCL) may be performed. Seventh, a printer filter 210 may be an accounting filter that tracks a number of printed pages and may assign each printed page to a different category (e.g., personal/employee, customer number, corporate number, file number, etc.). Eighth, a printer filter 210 may be a color enhancement filter that tunes color combinations. One or more other printer filter 210 realizations may alternatively be implemented.
-
FIG. 4 is a block diagram example of a printerfilter configuration file 306. Printerfilter configuration file 306 is used by printing subsystem 304 (ofFIG. 3 ) to establish aprinter filter pipeline 212 and/or to utilize a constructedprinter filter pipeline 212. As illustrated, printerfilter configuration file 306 is directed to “N” printer filters 210 as indicated by associated “N” printer filter entries 408. Specifically, printerfilter configuration file 306 is directed toprinter filter A 210A,printer filter B 210B . . .printer filter N 210N as indicated by associated printerfilter entry A 408A, printerfilter entry B 408B . . . printerfilter entry N 408N, respectively. - The printer filter configuration information for the “N” printer filters 210A-210N may be arranged and/or organized in any manner. In a described implementation, however, filter names 402 and filter interfaces 404 are arranged together with regard to their respective printer filters 210 in respective printer filter entries 408. As illustrated, printer filter entry A 408A includes a
filter name A 402A and afilter interface 404A, printerfilter entry B 408B includes afilter name B 402B and afilter interface 404B . . . and printerfilter entry N 408N includes afilter name N 402N and afilter interface 404N. - Printer
filter configuration file 306 also includes aprinter filter order 406. The printer filter order information forprinter filter order 406 includes a stipulated order in which printer filters 210A-210N are to be established for aprinter filter pipeline 212 that corresponds to the printerfilter configuration file 306.Printer filter order 406 may be realized in any of many possible manners. For example, printer filter order information may be inherently included in printerfilter configuration file 306 by the order of filter entries 408. Alternatively, printerfilter configuration file 306 may include a field that comprises the printer filter order information ofprinter filter order 406. An example of aprinter filter order 406 and the resultingprinter filter pipeline 212 is described further herein below with particular reference toFIG. 5 . - It should be noted that a printer
filter configuration file 306 need not employ all printer filters 210 that are available on a given device. Similarly, aprinter filter order 406 of a given printerfilter configuration file 306 need not stipulate all of the printer filters 210 that have an associated filter entry 408 in that given printerfilter configuration file 306. Although printerfilter configuration file 306 may be realized in any manner, in a described implementation printerfilter configuration file 306 is realized as an assembly (in managed code environments) or as a dynamic link library (.dll) file (in traditional or pre-compiled code environments). An example of a printerfilter configuration file 306 that is in an extensible markup language (XML) format is presented below after the description ofFIG. 6 . -
FIG. 5 is a block diagram example of aprinter filter pipeline 212* having three printer filters 210 in whichprinter filter pipeline 212* is established in accordance with a printer filter configuration file having aprinter filter order 406*.Filter order 406* stipulates an order of printer filters 210 forprinter filter pipeline 212*. In this example, the stipulated filter order is “B-D-A”. Hence,printer filter pipeline 212* is to be established or constructed in the following order: (1)printer filter B 210B, (2)printer filter D 210D, and (3)printer filter A 210A. - As illustrated,
printer filter pipeline 212* includes three filters: (1)printer filter B 210B, (2)printer filter D 210D, and (3)printer filter A 210A. Each printer filter 210 includes aninput interface 502 and anoutput interface 504. Asprintable file 204 is applied toprinter filter pipeline 212* and as it traverses each printer filter 210, each printer filter 210 receivesprintable file 204 at itsinput interface 502 and forwards a filteredprintable file 204 at itsoutput interface 504. -
Printer filter B 210B has aninput interface 502 of type Θ and anoutput interface 504 also of type Θ.Printer filter D 210D has aninput interface 502 of type Θ and anoutput interface 504 of type Δ. Printer filter A 210A has aninput interface 502 of type Δ and anoutput interface 504 of type Σ. With reference also toFIG. 4 , each filter interface 404 can enumerate both aninput interface 502 and anoutput interface 504. Examples of printer filter interface types include, but are not limited to: a stream interface type, a visual tree (VT) interface type, a fixed document interface type, a document sequence interface type, a fixed page interface type, other present and future interface types, some combination thereof, and so forth. - For a
printable file 204 to traverseprinter filter pipeline 212*, mating interfaces between any two adjacent printer filters 210 are matched. Two interface types match if they are identical or known to be compatible such that data formatted as one interface type can be understood and correctly processed as data formatted as the other interface type. By way of example only, an interface type of anoutput interface 504 may be a subset of an interface type of aninput interface 502 and still be compatible. - As shown, the mating interfaces (i) between
printer filter B 210B andprinter filter D 210D and (ii) betweenprinter filter D 210D andprinter filter A 210A do match. More specifically, theoutput interface 504 ofprinter filter B 210B and theinput interface 502 ofprinter filter D 210D are both of an interface type Θ. Also, theoutput interface 504 ofprinter filter D 210D and theinput interface 502 ofprinter filter A 210A are both of an interface type Δ. Consequently, aprintable file 204 may be passed (i) betweenprinter filter B 210B andprinter filter D 210D and (ii) betweenprinter filter D 210D andprinter filter A 210A. - For
printer filter pipeline 212* overall,printable file 204 is applied thereto asinput data 506.Input data 506 representsprintable file 204 in a computer-language-compatible format. Asprintable file 204 traverses each respective filter 210 from its associatedinput interface 502 to its associatedoutput interface 504,printable file 204 is filtered in some manner, as is described herein above with particular reference toFIG. 3 . After traversing the printer filters 210 ofprinter filter pipeline 212*,printable file 204 is produced asoutput data 508. Thus,output data 508 representsprintable file 204 in a printer-language-compatible format after filtering.Printable file 204 asoutput data 508 may therefore be forwarded by print spooler 206 (ofFIGS. 2 and 3 ) to aprinter 208. -
FIG. 6 is a flow diagram 600 that illustrates an example of a method for establishing a printer filter pipeline in accordance with a printer filter configuration file. Flow diagram 600 is also directed to utilizing a printer filter pipeline. Flow diagram 600 includes eight (8) blocks 602-616. Although the actions of flow diagram 600 may be performed in other environments and with a variety of hardware and software combinations,FIGS. 2-5 are used in particular to illustrate certain aspects and examples of the method. By way of example only, the actions of flow diagram 600 may be performed by aprinting subsystem 304 of adevice 300. - At
block 602, a printer filter configuration file is accessed. For example, a printerfilter configuration file 306 may be accessed. Atblock 604, a printer filter order that stipulates an order for printer filters is extracted. For example, aprinter filter order 406 that stipulates an order for printer filters 210 for aprinter filter pipeline 212 may be extracted (i) from a (e.g., separate) field of printerfilter configuration file 306 or (ii) by analysis of an instrinsic order of printer filter entries 408 of printerfilter configuration file 306. - At
block 606, for each stipulated printer filter, an associated printer filter entry is extracted. For example, for each printer filter 210 that is stipulated inprinter filter order 406, an associated printer filter entry 408 may be extracted from printerfilter configuration file 306. Each extracted printer filter entry 408 may include an identified printer filter name 402 and an enumerated printer filter interface 404. Each enumerated printer filter interface 404 may include aninput interface 502 and anoutput interface 504. - At
block 608, it is verified that mating interfaces of the stipulated printing filters along the printer filter pipeline match. For example, it may be verified that mating interfaces of adjacent printer filters 210 ofprinter filter pipeline 212 match. More specifically, it may be verified that an interface type of anoutput interface 504 for each printer filter 210 is compatible with an interface type of aninput interface 502 for a succeeding printer filter 210 inprinter filter pipeline 212. - At
block 610, it is determined if a non-matching mating interface is detected based on the verification. For example, it may be determined if two matedinterfaces 504/502 of adjacent printer filters 210 are detected to be non-matching during the verification. If yes, a non-matching mating interface is detected, then at block 612 a non-matching printer filter error notification is provided. For example,printing subsystem 304 in conjunction withoperating system 302 may provide an error notification to a user that indicates an incompatibleprinter filter pipeline 212 has been stipulated by the order of printer filters 210 inprinter filter order 406. - If, on the other hand, no non-matching mating interface is detected (as determined at block 610), then at block 614 a printer filter pipeline is constructed (using printer filters) responsive to a printer filter order and based on printer filter entries. For example,
printer filter pipeline 212 may be constructed using printer filters 210 responsive toprinter filter order 406 and based on printer filter entries 408 of printerfilter configuration file 306. For instance, with aprinter filter order 406* (ofFIG. 5 ), aprinter filter pipeline 212* may be constructed. - At
block 616, the constructed printer filter pipeline is utilized with one or more print jobs. For example, aprintable file 204 may be applied toprinter filter pipeline 212 such that printer filters 210 thereof filterprintable file 204 so thatprintable file 204 is converted from a computer-language format to a printer-language format and optionally enhanced. - The actions of flow diagram 600 may be performed in many different alternative orders. For example, actions of individual different blocks 602-616 may be performed fully or partially simultaneously. As another example, the action(s) of
block 614 may be performed prior to the action(s) ofblock - An example of a printer
filter configuration file 306 is presented below. This example is a file that is formatted in XML. This XML-formatted example printerfilter configuration file 306 has been somewhat tuned to correspond to the example ofFIG. 5 . If there is no separate field forprinter filter order 406*, the “<FilterOrder>” section may be omitted and the order may be inferred from the filter order listing. In practice, a first filter 210 of a particularprinter filter pipeline 212 that has a “FilterDataInReader” being “ComputerLanguageCompatibleFileReader” may be the only filter 210 of that particularprinter filter pipeline 212 that has a given “FilterDataTypeIn”.<?xml version=“_._”?> <PrinterFilterConfiguration xmlns:xsd=“http://www.w3.org/YEAR/XMLSchema”> <Configuration ConfigurationId=“ExampleIDNo-...” ConfigurationVersion=“#”> <Filters> <FilterInfo FilterName=“Filter B” FilterInterface=“Interface Type X” FilterDataTypeIn=“Data Type θ” FilterDataInReader=“ComputerLanguageCompatibleFileReader” FilterDataOutType=“Data Type θ” FilterDataOutWriter=“IntermediateWriter” PublicKeyToken =“########” Version=“_._._._” Culture=“neutral” /> <FilterInfo FilterName=“Filter D” FilterInterface=“Interface Type Y” FilterDataTypeIn=“Data Type θ” FilterDataInReader=“IntermediateReader” FilterDataOutType=“Data Type Δ” FilterDataOutWriter=“IntermediateWriter” PublicKeyToken =“########” Version=“_._._._” Culture=“neutral” /> <FilterInfo FilterName=“Filter A” FilterInterface=“Interface Type Z” FilterDataTypeIn=“Data Type Δ” FilterDataInReader=“IntermediateReader” FilterDataOutType=“Data Type Σ” FilterDataOutWriter=“PrinterLanguageCompatibleFileWriter” PublicKeyToken =“########” Version=“_._._._” Culture=“neutral” /> </Filters> <FilterOrder> <FilterInfoReference FilterName=“Filter B”/> <FilterInfoReference FilterName=“Filter D”/> <FilterInfoReference FilterName=“Filter A”/> </FilterOrder> </Configuration> </PrinterFilterConfiguration> - The devices, actions, aspects, features, algorithms, procedures, modules, components, etc. of
FIGS. 1-6 are illustrated in diagrams that are divided into multiple blocks. However, the order, interconnections, interrelationships, layout, etc. in whichFIGS. 1-6 are described and/or shown is not intended to be construed as a limitation, and any number of the blocks can be modified, combined, rearranged, augmented, omitted, etc. in any manner to implement one or more systems, methods, devices, procedures, media, apparatuses, arrangements, etc. for printer filter configuration. Furthermore, although the description herein includes references to specific implementations (including a general device ofFIG. 7 ), the illustrated and/or described implementations can be implemented in any suitable hardware, software, firmware, or combination thereof and using any suitable file format(s); computer, printer, or other language format(s); printer filter configuration data structure(s); printer filter interface type(s); print spooler mechanism(s); printing subsystem architecture(s); and so forth. -
FIG. 7 illustrates an example computing (or general device) operatingenvironment 700 that is capable of (fully or partially) implementing at least one system, device, apparatus, component, arrangement, protocol, approach, method, procedure, media, API, some combination thereof, etc. for printer filter configuration as described herein.Operating environment 700 may be utilized in the computer and network architectures described below. -
Example operating environment 700 is only one example of an environment and is not intended to suggest any limitation as to the scope of use or functionality of the applicable device (including computer, network node, entertainment device, mobile appliance, general electronic device, etc.) architectures. Neither should operating environment 700 (or the devices thereof) be interpreted as having any dependency or requirement relating to any one or to any combination of components as illustrated inFIG. 7 . - Additionally, printer filter configuration realizations may be implemented with numerous other general purpose or special purpose device (including computing system) environments or configurations. Examples of well known devices, systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, thin clients, thick clients, personal digital assistants (PDAs) or mobile telephones, watches, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, video game machines, game consoles, portable or handheld gaming units, network PCs, videoconferencing equipment, minicomputers, mainframe computers, network nodes, distributed or multi-processing computing environments that include any of the above systems or devices, some combination thereof, and so forth.
- Implementations for printer filter configuring may be described in the general context of processor-executable instructions. Generally, processor-executable instructions include routines, programs, protocols, objects, interfaces, components, data structures, etc. that perform and/or enable particular tasks and/or implement particular abstract data types. Realizations for printer filter configuring, as described in certain implementations herein, may also be practiced in distributed processing environments where tasks are performed by remotely-linked processing devices that are connected through a communications link and/or network. Especially but not exclusively in a distributed computing environment, processor-executable instructions may be located in separate storage media, executed by different processors, and/or propagated over transmission media.
-
Example operating environment 700 includes a general-purpose computing device in the form of acomputer 702, which may comprise any (e.g., electronic) device with computing/processing capabilities. The components ofcomputer 702 may include, but are not limited to, one or more processors orprocessing units 704, asystem memory 706, and asystem bus 708 that couples various systemcomponents including processor 704 tosystem memory 706. -
Processors 704 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example,processors 704 may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions. Alternatively, the mechanisms of or forprocessors 704, and thus of or forcomputer 702, may include, but are not limited to, quantum computing, optical computing, mechanical computing (e.g., using nanotechnology), and so forth. -
System bus 708 represents one or more of any of many types of wired or wireless bus structures, including a memory bus or memory controller, a point-to-point connection, a switching fabric, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures may include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus, some combination thereof, and so forth. -
Computer 702 typically includes a variety of processor-accessible media. Such media may be any available media that is accessible bycomputer 702 or another (e.g., electronic) device, and it includes both volatile and non-volatile media, removable and non-removable media, and storage and transmission media. -
System memory 706 includes processor-accessible storage media in the form of volatile memory, such as random access memory (RAM) 710, and/or non-volatile memory, such as read only memory (ROM) 712. A basic input/output system (BIOS) 714, containing the basic routines that help to transfer information between elements withincomputer 702, such as during start-up, is typically stored inROM 712.RAM 710 typically contains data and/or program modules/instructions that are immediately accessible to and/or being presently operated on by processingunit 704. -
Computer 702 may also include other removable/non-removable and/or volatile/non-volatile storage media. By way of example,FIG. 7 illustrates a hard disk drive ordisk drive array 716 for reading from and writing to a (typically) non-removable, non-volatile magnetic media (not separately shown); amagnetic disk drive 718 for reading from and writing to a (typically) removable, non-volatile magnetic disk 720 (e.g., a “floppy disk”); and anoptical disk drive 722 for reading from and/or writing to a (typically) removable, non-volatileoptical disk 724 such as a CD, DVD, or other optical media.Hard disk drive 716,magnetic disk drive 718, andoptical disk drive 722 are each connected tosystem bus 708 by one or more storage media interfaces 726. Alternatively,hard disk drive 716,magnetic disk drive 718, andoptical disk drive 722 may be connected tosystem bus 708 by one or more other separate or combined interfaces (not shown). - The disk drives and their associated processor-accessible media provide non-volatile storage of processor-executable instructions, such as data structures, program modules, and other data for
computer 702. Althoughexample computer 702 illustrates ahard disk 716, a removablemagnetic disk 720, and a removableoptical disk 724, it is to be appreciated that other types of processor-accessible media may store instructions that are accessible by a device, such as magnetic cassettes or other magnetic storage devices, flash memory, compact disks (CDs), digital versatile disks (DVDs) or other optical storage, RAM, ROM, electrically-erasable programmable read-only memories (EEPROM), and so forth. Such media may also include so-called special purpose or hard-wired IC chips. In other words, any processor-accessible media may be utilized to realize the storage media of theexample operating environment 700. - Any number of program modules (or other units or sets of processor-executable instructions) may be stored on
hard disk 716,magnetic disk 720,optical disk 724,ROM 712, and/orRAM 710, including by way of general example, anoperating system 728, one ormore application programs 730,other program modules 732, andprogram data 734. These processor-executable instructions may include, for example, one or more printerfilter configuration file 306 data structure(s), a program/module forprint spooler 206,applications 202 andoperating system 302, one or more printer filters 210, aprintable file 204, and so forth. - A user may enter commands and/or information into
computer 702 via input devices such as akeyboard 736 and a pointing device 738 (e.g., a “mouse”). Other input devices 740 (not shown specifically) may include a microphone, joystick, game pad, satellite dish, serial port, video camera, scanner, and/or the like. These and other input devices are connected toprocessing unit 704 via input/output interfaces 742 that are coupled tosystem bus 708. However, input devices and/or output devices may instead be connected by other interface and bus structures, such as a parallel port, a game port, a universal serial bus (USB) port, an infrared port, an IEEE 1394 (“Firewire”) interface, an IEEE 802.11 wireless interface, a Bluetooth® wireless interface, and so forth. - A monitor/
view screen 744 or other type of display device may also be connected tosystem bus 708 via an interface, such as avideo adapter 746. Video adapter 746 (or another component) may be or may include a graphics card for processing graphics-intensive calculations and for handling demanding display requirements. Typically, a graphics card includes a graphics processing unit (GPU), video RAM (VRAM), etc. to facilitate the expeditious display of graphics and performance of graphics operations. In addition to monitor 744, other output peripheral devices may include components such as speakers (not shown) and aprinter 748, which may be connected tocomputer 702 via input/output interfaces 742. -
Computer 702 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computing device 750. By way of example,remote computing device 750 may be a peripheral device, a personal computer, a portable computer (e.g., laptop computer, tablet computer, PDA, mobile station, etc.), a palm or pocket-sized computer, a watch, a gaming device, a server, a router, a network computer, a peer device, another network node, or another device type as listed above, and so forth. However,remote computing device 750 is illustrated as a portable computer that may include many or all of the elements and features described herein with respect tocomputer 702. - Logical connections between
computer 702 andremote computer 750 are depicted as a local area network (LAN) 752 and a general wide area network (WAN) 754. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, the Internet, fixed and mobile telephone networks, ad-hoc and infrastructure wireless networks, mesh networks, other wireless networks, gaming networks, some combination thereof, and so forth. Such networks and logical and physical communications connections are additional examples of transmission media. - When implemented in a LAN networking environment,
computer 702 is usually connected toLAN 752 via a network interface oradapter 756. When implemented in a WAN networking environment,computer 702 typically includes amodem 758 or other component for establishing communications overWAN 754.Modem 758, which may be internal or external tocomputer 702, may be connected tosystem bus 708 via input/output interfaces 742 or any other appropriate mechanism(s). It is to be appreciated that the illustrated network connections are examples and that other manners for establishing communication link(s) betweencomputers - In a networked environment, such as that illustrated with
operating environment 700, program modules or other instructions that are depicted relative tocomputer 702, or portions thereof, may be fully or partially stored in a remote media storage device. By way of example,remote application programs 760 reside on a memory component ofremote computer 750 but may be usable or otherwise accessible viacomputer 702. Also, for purposes of illustration,application programs 730 and other processor-executable instructions such asoperating system 728 are illustrated herein as discrete blocks, but it is recognized that such programs, components, and other instructions reside at various times in different storage components of computing device 702 (and/or remote computing device 750) and are executed by processor(s) 704 of computer 702 (and/or those of remote computing device 750). - Although systems, media, devices, methods, procedures, apparatuses, techniques, schemes, approaches, procedures, arrangements, and other implementations have been described in language specific to structural, logical, algorithmic, and functional features and/or diagrams, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or diagrams described. Rather, the specific features and diagrams are disclosed as exemplary forms of implementing the claimed invention.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/024,049 US7554682B2 (en) | 2004-12-28 | 2004-12-28 | Printer filter configuration |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/024,049 US7554682B2 (en) | 2004-12-28 | 2004-12-28 | Printer filter configuration |
Publications (2)
Publication Number | Publication Date |
---|---|
US20060139673A1 true US20060139673A1 (en) | 2006-06-29 |
US7554682B2 US7554682B2 (en) | 2009-06-30 |
Family
ID=36611100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/024,049 Expired - Fee Related US7554682B2 (en) | 2004-12-28 | 2004-12-28 | Printer filter configuration |
Country Status (1)
Country | Link |
---|---|
US (1) | US7554682B2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070268527A1 (en) * | 2005-10-24 | 2007-11-22 | Kyocera Mita Corporation | Image forming device |
US20070279676A1 (en) * | 2006-06-06 | 2007-12-06 | Kabushiki Kaisha Toshiba | System and method for pipelined dataflow document processing |
US20090109458A1 (en) * | 2007-10-31 | 2009-04-30 | Ricoh Company, Ltd. | Image Processing Apparatus and Application Executing Method |
JP2009111905A (en) * | 2007-10-31 | 2009-05-21 | Ricoh Co Ltd | Information processing apparatus and information processing method |
US20090328031A1 (en) * | 2008-06-27 | 2009-12-31 | Xerox Corporation | Dynamic xps filter |
US20100214599A1 (en) * | 2009-02-26 | 2010-08-26 | Konica Minolta Systems Laboratory, Inc. | Method for printing with XPSDrv printer driver |
WO2020045768A1 (en) * | 2018-08-30 | 2020-03-05 | Hewlett-Packard Development Company, L.P. | Printer filter pipeline comprising custom printer filter |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007164526A (en) * | 2005-12-14 | 2007-06-28 | Canon Inc | Information processing apparatus and method |
US20080225310A1 (en) * | 2007-03-15 | 2008-09-18 | Canon Kabushiki Kaisha | Data processing using print driver |
JP5145871B2 (en) * | 2007-10-30 | 2013-02-20 | 株式会社リコー | Image processing apparatus and application execution method |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5220674A (en) * | 1987-07-17 | 1993-06-15 | Digital Equipment Corporation | Local area print server for requesting and storing required resource data and forwarding printer status message to selected destination |
US5604887A (en) * | 1994-01-21 | 1997-02-18 | Microsoft Corporation | Method and system using dedicated location to share information between real and protected mode device drivers |
US5812767A (en) * | 1995-07-28 | 1998-09-22 | International Business Machines Corporation | System for user registering an address resolution routine to provide address resolution procedure which is used by data link provider interface for resolving address conflicts |
US5845058A (en) * | 1994-10-05 | 1998-12-01 | Microsoft Corporation | Device independent spooling in a print architecture |
US5933584A (en) * | 1993-03-13 | 1999-08-03 | Ricoh Company, Ltd. | Network system for unified business |
US6202147B1 (en) * | 1998-06-29 | 2001-03-13 | Sun Microsystems, Inc. | Platform-independent device drivers |
US6222638B1 (en) * | 1997-09-29 | 2001-04-24 | Canon Kabushiki Kaisha | Displaying printer property sheets |
US6476927B1 (en) * | 1998-01-21 | 2002-11-05 | Electronics For Imaging, Inc. | Job token printer assignment system |
US6661526B1 (en) * | 1999-05-04 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Printer drivers using filters that are operating system-independent and printer-independent |
US6683696B1 (en) * | 1998-10-27 | 2004-01-27 | Hewlett-Packard Development Company, L.P. | Filter based data imaging method for an image forming device |
US6718550B1 (en) * | 1996-06-26 | 2004-04-06 | Sun Microsystems, Inc. | Method and apparatus for improving the performance of object invocation |
US6795089B2 (en) * | 2000-12-20 | 2004-09-21 | Microsoft Corporation | Dynamic, live surface and model elements for visualization and modeling |
US7064856B2 (en) * | 2000-08-04 | 2006-06-20 | Bell Business Solutions Inc. | Printer driver system for remote printing |
US7136941B2 (en) * | 2002-12-04 | 2006-11-14 | Microsoft Corporation | Print management architecture for computing devices having a set of filters functions wherein the functions are prevented from conflicting with one another |
US7423769B2 (en) * | 1999-11-02 | 2008-09-09 | Ricoh Company, Ltd. | Graphical user interface |
-
2004
- 2004-12-28 US US11/024,049 patent/US7554682B2/en not_active Expired - Fee Related
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5220674A (en) * | 1987-07-17 | 1993-06-15 | Digital Equipment Corporation | Local area print server for requesting and storing required resource data and forwarding printer status message to selected destination |
US5933584A (en) * | 1993-03-13 | 1999-08-03 | Ricoh Company, Ltd. | Network system for unified business |
US5604887A (en) * | 1994-01-21 | 1997-02-18 | Microsoft Corporation | Method and system using dedicated location to share information between real and protected mode device drivers |
US5845058A (en) * | 1994-10-05 | 1998-12-01 | Microsoft Corporation | Device independent spooling in a print architecture |
US5812767A (en) * | 1995-07-28 | 1998-09-22 | International Business Machines Corporation | System for user registering an address resolution routine to provide address resolution procedure which is used by data link provider interface for resolving address conflicts |
US6718550B1 (en) * | 1996-06-26 | 2004-04-06 | Sun Microsystems, Inc. | Method and apparatus for improving the performance of object invocation |
US6222638B1 (en) * | 1997-09-29 | 2001-04-24 | Canon Kabushiki Kaisha | Displaying printer property sheets |
US6476927B1 (en) * | 1998-01-21 | 2002-11-05 | Electronics For Imaging, Inc. | Job token printer assignment system |
US6202147B1 (en) * | 1998-06-29 | 2001-03-13 | Sun Microsystems, Inc. | Platform-independent device drivers |
US6683696B1 (en) * | 1998-10-27 | 2004-01-27 | Hewlett-Packard Development Company, L.P. | Filter based data imaging method for an image forming device |
US6661526B1 (en) * | 1999-05-04 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Printer drivers using filters that are operating system-independent and printer-independent |
US7423769B2 (en) * | 1999-11-02 | 2008-09-09 | Ricoh Company, Ltd. | Graphical user interface |
US7064856B2 (en) * | 2000-08-04 | 2006-06-20 | Bell Business Solutions Inc. | Printer driver system for remote printing |
US6795089B2 (en) * | 2000-12-20 | 2004-09-21 | Microsoft Corporation | Dynamic, live surface and model elements for visualization and modeling |
US7136941B2 (en) * | 2002-12-04 | 2006-11-14 | Microsoft Corporation | Print management architecture for computing devices having a set of filters functions wherein the functions are prevented from conflicting with one another |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070268527A1 (en) * | 2005-10-24 | 2007-11-22 | Kyocera Mita Corporation | Image forming device |
US20070279676A1 (en) * | 2006-06-06 | 2007-12-06 | Kabushiki Kaisha Toshiba | System and method for pipelined dataflow document processing |
US20090109458A1 (en) * | 2007-10-31 | 2009-04-30 | Ricoh Company, Ltd. | Image Processing Apparatus and Application Executing Method |
JP2009111905A (en) * | 2007-10-31 | 2009-05-21 | Ricoh Co Ltd | Information processing apparatus and information processing method |
US8120818B2 (en) * | 2007-10-31 | 2012-02-21 | Ricoh Company, Ltd. | Image processing apparatus and computer-readable storage medium that add marking type information to predetermined image |
US20090328031A1 (en) * | 2008-06-27 | 2009-12-31 | Xerox Corporation | Dynamic xps filter |
US8479192B2 (en) | 2008-06-27 | 2013-07-02 | Xerox Corporation | Dynamic XPS filter |
US20100214599A1 (en) * | 2009-02-26 | 2010-08-26 | Konica Minolta Systems Laboratory, Inc. | Method for printing with XPSDrv printer driver |
WO2020045768A1 (en) * | 2018-08-30 | 2020-03-05 | Hewlett-Packard Development Company, L.P. | Printer filter pipeline comprising custom printer filter |
CN112106019A (en) * | 2018-08-30 | 2020-12-18 | 惠普发展公司,有限责任合伙企业 | Printer filter pipeline including custom printer filter |
EP3762816A4 (en) * | 2018-08-30 | 2021-12-08 | Hewlett-Packard Development Company, L.P. | Printer filter pipeline comprising custom printer filter |
Also Published As
Publication number | Publication date |
---|---|
US7554682B2 (en) | 2009-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090006951A1 (en) | Document processing method | |
US8543915B2 (en) | “Proof print” for job settings | |
US7471401B2 (en) | Information processing apparatus, printing processing method, and program therefor | |
US7992145B2 (en) | Multilevel ticket-based job management architecture for computing devices | |
CN1731350B (en) | Image processing apparatus and control method thereof, and data processing apparatus | |
US7710590B2 (en) | Automatic maintenance of page attribute information in a workflow system | |
JP4900937B2 (en) | Information processing apparatus, control method therefor, and program | |
US8319986B2 (en) | Method of protecting leakage of information and information processing apparatus and driver program implementing the same | |
US7554682B2 (en) | Printer filter configuration | |
US20090168103A1 (en) | Information Processing Device, Information Processing Method and Computer-Readable Record Medium | |
US20060290965A1 (en) | Data processing apparatus, data processing method, and program | |
US9141895B2 (en) | Information processing apparatus, data editing method, and computer program product | |
US8081338B2 (en) | Form processing apparatus and method | |
US20060262336A1 (en) | Manual annotation document reformation | |
US8045205B2 (en) | Image forming device, and method and computer readable medium therefor | |
US20100088584A1 (en) | Methods and systems for processing a document in a print-production system | |
US20150146258A1 (en) | Information processing apparatus, recording medium, and control method | |
JP2008282404A (en) | Document output system and method | |
US8159687B2 (en) | Method and system for page exception programming utilizing metadata | |
JP2008112376A (en) | Apparatus and program for controlling print | |
US20080304097A1 (en) | System and method for staged processing of electronic document processing jobs | |
JP2007058621A (en) | Document management device and document management method | |
JP2005193559A (en) | Image forming apparatus | |
JP7608908B2 (en) | Printing system, printing method, information processing device, and program | |
EP1265129A2 (en) | Image processing apparatus, image processing system and image processing program storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SEDKY, KHALED S.;TRUFINESCU, ADINA M.;YUE, FENG;REEL/FRAME:015869/0960 Effective date: 20050301 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034543/0001 Effective date: 20141014 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20210630 |