Source: http://www.google.com/patents/US7526504?dq=5,072,412
Timestamp: 2016-05-27 12:17:48
Document Index: 98681783

Matched Legal Cases: ['art 804', 'art 806', 'art 804', 'art 806', 'art 806', 'art 1', 'art1', 'art 1', 'art1', 'Application No. 200480001329']

Patent US7526504 - Spooling strategies using structured job information - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsSpooling strategies are described for producing job information that conforms to a hierarchical structure, and then storing the job information in a spool storage. The job information is then retrieved from the spool storage and consumed. The structured job information includes a multi-level hierarchy...http://www.google.com/patents/US7526504?utm_source=gb-gplus-sharePatent US7526504 - Spooling strategies using structured job informationAdvanced Patent SearchPublication numberUS7526504 B2Publication typeGrantApplication numberUS 11/831,278Publication dateApr 28, 2009Filing dateJul 31, 2007Priority dateMay 3, 2004Fee statusPaidAlso published asUS7580948, US8639723, US20050262134, US20080021923, US20090168105Publication number11831278, 831278, US 7526504 B2, US 7526504B2, US-B2-7526504, US7526504 B2, US7526504B2InventorsKhaled S. Sedky, Harvinder Pal Singh, Feng Yue, Adina M. Trufinescu, Oliver H. FoehrOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (105), Non-Patent Citations (55), Referenced by (4), Classifications (17), Legal Events (2) External Links: USPTO, USPTO Assignment, EspacenetSpooling strategies using structured job information
US 7526504 B2Abstract
Spooling strategies are described for producing job information that conforms to a hierarchical structure, and then storing the job information in a spool storage. The job information is then retrieved from the spool storage and consumed. The structured job information includes a multi-level hierarchy of nodes, including a job level that represents the entire job, a document level that represents a document to be processed within the job; a rendition level that represents a rendition of the document to be processed; and a page level that represents a page associated with the rendition. The hierarchical structure can also include resource nodes and metadata nodes associated with any level of the hierarchy, respectively representing resources and metadata. The hierarchy can optionally be composed using one or more selection and sequence parts. Program logic implements the production and consumption of the job information by providing a collection of logic modules for selectively adding and retrieving elements to the hierarchically structure. The program logic also provides logic for enumerating the contents of the job information and for signaling the occurrence of various events associated with the processing of the job information.
The present application is also related to co-pending and commonly assigned U.S. patent application Ser. No. 10/794,669, entitled “Multi level Ticket-Based Job Management Architecture for Computing Devices,” filed on Mar. 5, 2004, which is incorporated herein by reference in its entirety.
The present application is also related to co-pending and commonly assigned U.S. patent application Ser. No. 10/836,327, entitled “Document Mark Up Methods and Systems,” filed on May 1, 2004, which is incorporated herein by reference in its entirety.
This subject matter relates to strategies for producing and consuming job information using spool storage, and, in another implementation, to a format and related interfaces used for producing and consuming job information.
Computing devices commonly render documents using spooling techniques (where “spool” is an acronym for Simultaneous Peripheral Operations On-Line). In a typical spooling technique, a device generates a document and stores it in a spool storage. The spool storage can be implemented using memory (such as RAM memory), or, more commonly, using disk storage. When the device is ready to process the document, the device can then access the document from the spool storage and convert it to a format that is compatible with the format expectations of an output device (such as a format defined by the Page Description Language). The device can then forward the converted document to the output device, whereupon the output device prints the document, or performs some other processing with respect to the document. Storing a document in a spool storage (rather than directly outputting the document to the printer) is generally advantageous because it allows the device to perform other tasks while the document is being processed for printing. Generally, a print job refers to the task of processing an identified document using a spooling strategy. The print job specifies job information to be processed by the spooling strategy.
A method and associated logic are described for producing job information to be processed by a spooling module. The method comprises: (a) producing a data structure that specifies the job information, wherein the data structure defines a plurality of nodes organized into a hierarchical arrangement representing different aspects of the job information; and (b) storing the data structure in a spool storage for later retrieval and processing by the spooling module.
FIG. 1 shows an exemplary system for producing and consuming job information that conforms to a hierarchical structure, using spool storage.
The following description sets forth exemplary mechanisms for generating and consuming job information that conforms to a hierarchical structure. In a production phrase, the structured job information can be created and stored in a spool storage. In a consumption phase, the job information can then be retrieved from this storage for processing. A collection of application programming interface (API) classes facilitate the production and consumption of the job information. These API classes allow selective addition, retrieval and enumeration of targeted elements within the job information.
The term “job” used herein refers to a task in which one or more actions are performed to process job information. For instance, a print job may entail printing job information that defines one or more documents. More generally, reference to “processing” job information can refer to any kind of rendering of such job information, such as printing or displaying such job information. Alternatively, processing can refer to distributing the job information to a target destination (with or without modifying it), archiving the job information, or some other form of processing. The term “job information” refers to any kind of information used to specify the nature of the job, such as the actual information to be rendered, and/or information that defines how the job is to be rendered, and so on.
A “package” is a logical concept that refers to a collection of job information that comprehensively specifies an entire job. The package can contain multiple parts, also referred to as “elements” or “features” herein. In the case where the job information defines a hierarchical tree of nodes, such nodes may define respective elements in the package. Collections of elements can be treated as a single unit. For instance, a package may specify multiple collections that respectively define different renditions of a single document, and each of these collections can contain multiple elements (e.g., image resources, font resources, etc.).
The term “rendition” refers to a version of a document. For example, one rendition of a document may correspond to a color version of the document, and another may correspond to a black and white version.
The term “spool storage” represents storage for storing job information implemented using any physical storage medium. In one case, a device may implement the spool storage using RAM memory. In another case, the device may implement the spool storage using disk storage, solid state memory, and so on. The spool storage can be fixed or removable. The spool storage may define a single file, a collection of associated files, or some other storage strategy. A unit of spool storage (such as a single file) that stores an entire package defining a job is also referred to as a “container.” Alternatively, the spool storage can refer to transitory information transmitted via a communication channel and inherently retained by that channel during transport.
More generally, any of the functions described herein can be implemented using software, firmware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations. The terms “module,” “functionality,” and “logic” as used herein generally represents software, firmware, or a combination of software and firmware. In the case of a software implementation, the terms “module,” “functionality,” or “logic” represent program code that performs specified tasks when executed on a processing device or devices (e.g., CPU or CPUs). The program code can be stored in one or more fixed and/or removable computer readable memory devices.
Certain examples in this disclosure are framed in the exemplary context of an object-oriented programming paradigm. By way of background, in such an approach, an application implements program modules as respective objects. Objects can include properties which convey attributes of the objects (e.g., the characteristics or traits of the objects). Objects can include methods associated therewith that provide functions that can be performed by the objects. Objects interact by passing messages to each other. The object-oriented programming paradigm commonly organizes objects in parent-child hierarchies. A child inherits the properties of its parent. A class refers to a general “blueprint” which describes a collection of objects. However, the principles described herein are not to be construed as limited to an object-oriented programming paradigm.
Finally, certain examples in this disclosure are framed in the exemplary context of a virtual programming environment. A virtual machine (VM) environment executes programs in a manner which is generally independent of the underlying complexities in the platform used to implement the execution. Microsoft Corporation's .NET Framework (provided by Microsoft Corporation of Redmond, Wash.) provides a virtual machine environment with its Common Language Runtime (CLR) functionality. More specifically, the .NET programming involves compiling source code using a compiler. The compiler produces an intermediate language (IL) code and metadata. In an execution phase, the .NET programming model uses a CLR loader and a just-in-time (JIT) compiler to transform the IL and metadata into native code. The native code constitutes the actual machine code that will run on an execution platform (e.g., a specific computing machine). The compilation process provided by the loader/JIT component is referred to as “just-in-time” because the compilation can take place just prior to the execution of the code. However, the principles described herein are not to be construed as limited to a virtual programming environment or the .NET programming environment; that is, the features of the spooling strategies described herein are platform-independent, meaning that they can be implemented on any commercial computing platform.
In any event, where one or more computing devices are used to perform aspects of the system 100, those computing devices can correspond to any type of computing devices (e.g., general purpose computing devices, application-specific computing devices (e.g., game consoles such as Xbox™ game consoles produced by Microsoft Corporation of Redmond, Wash.), portable computing devices (such as a personal digital assistants, mobile phones, etc.), and so on. FIG. 10, to be discussed below in turn, shows one exemplary computer environment for implementing aspects of the system 100.
The interface functionality 114 formats the output of the application module 110 into the structure 108 of the job information 102. Generally, exemplary and non-limiting functions performed by the application functionality 114 can include: (1) persisting the job information 102 in the spool storage 112 having the desired structure 108; (2) submitting job information 102 to the spooling module 116 for scheduling and printing; (3) monitoring different stages of the job production and hooking up to back end notifications to inform any interested listening entities; (4) monitoring different stages of the job consumption and hooking up to back end notifications to inform any interested listening entities; (5) enabling the spooling module 116 to send output data to the target entities (120, 122, 124), and so on. Section A.3 provides further details regarding exemplary logic that can be used to implement the interface functionality 114. By way of preview, a first collection of classes can be used to create (e.g., “add”) the job information 102 in the production phase 104 of operation, and a second collection of classes can be used to retrieve (e.g., “get”) the job information 102 in the consumption phase 106. That is, these classes can be used to selectively add elements (jobs, documents, renditions, pages, resources, metadata, etc.) to the job information 102, and to selectively get elements (jobs, documents, renditions, pages, resources, metadata, etc.) from the job information 102. The interface functionality 114 also provides functionality for retrieving information regarding the job information 102, and for enabling the generation of notifications for various events pertaining to the production and consumption of the job information 102.
Suppose, as explained above, that the terminal filter n 136 is a filter of the first class which generates an output result having job information 102 which still conforms to the structure 108. A target entity 118 represents an appropriate device to receive such an output result. This target entity 118 is referred to as “structure-aware” because it receives job information 102 conforming to the structure 108 and thus must provide necessary processing functioning to recognize such information 102 and process it appropriately.
Suppose, alternatively, that the terminal filter n 136 is a filter of the second class or third class which generates job information which no longer conforms to the structure 108. A target entity 120 represents an appropriate entity to receive such an output result. This target entity 120 is referred to as “structure-unaware” because it receives job information 102 that no longer conforms to the structure 108, and thus the entity 120 does not need to devote any specialized functionality for processing information expressed in this structure 108; indeed, the target entity 120 need not, and generally will not, be aware that the job information 102 its receives (e.g., in an appropriate PDL format) was ever originally expressed using the structure 108.
There is a third case where the terminal filter n 136 generates an output result which modifies the structured format 108 to some extent, but still maintains some vestiges of the structure 108. Target entity 122 is an example of the kind of entity that can receive and processing this output result. FIG. 1 identifies this kind of entity 122 as being “partially structure-aware” because it should include at least some processing functionality for interpreting whatever remnants of the structure 108 that still remain in the output result.
More specifically, the type of processing that the filter logic 128 performs on the job information 102 can be controlled, in element, by one or more “print tickets” associated with the job information 102. The print tickets include attribute information that defines the operations that should be performed on the job information 102 as it passes through the filter logic 130. Different print tickets can be associated with different elements of the structure 108 of the job information 102, as will be described in the next subsection (A.2).
The system 100 can also function in a client-server mode of operation, where the spooling module 116 responds to requests from a client module (which may comprise one of the target entities). In a client-server implementation, a server-side application (not shown) creates document content “on-the-fly” in response to a client request. A server process generates parts of the job information 102, one at a time; while a separate process, at the same time, pulls parts from the job information 102, one at a time, to send “down” to the client module.
The job information 102 uses a hierarchical scheme to connect its nodes together. A hierarchical scheme couples the nodes together using parent-child relationships. That is, a “top-most” node defines a so-called root node. The root node includes one or more child nodes, and the child nodes, in turn, can include one or more of their own respective child nodes, and so on. The child nodes can inherit methods, properties, metadata, etc. associated with their respective parent/ancestor nodes.
A particular kind of metadata is a print ticket 220. The print ticket 220 can also be associated with any level of the hierarchy of the schema 200. For instance, exemplary metadata 220 can be associated with the job level 202, the document level 204, the rendition level 206, and/or the page level 208. A print ticket defines the types of processing operations that should be performed on associated elements of the hierarchy of the job information 102. For instance, a print ticket associated with the job package level 202 will apply to the entirety of the package defined by the job information 102. A print ticket associated with an individual page 208 of the job information 102 will have a localized effect by only affecting that page 208. Further, inheritance applies to the methods, properties, metadata, etc. in the job information 102. As such, to determine what print instruction apply to any given node, the spooling module 116 can “walk” the tree from a child node to its root (or vice versa), aggregating any print instructions that may apply along the way. This aggregation allows general instructions to be uniformly inherited by all children. A print instruction of a child node may override the general instructions of a parent node.
As noted above, the nodes shown in FIG. 3 are logical entities. Mapping rules define how the logical nodes map to parts of actual physical storage (e.g., in spool storage 112). A logical package may be “physically” embodied by a collection of loose files, a .ZIP file archive, a compound file, or some other format. In one case, some of the nodes directly correspond, in one-to-one fashion, to parts (e.g., files) stored in the spool storage 112, such as pages, image resources, font resources, etc. Other nodes may not map, in one-to-one fashion, to actual parts of the spool storage 112.
FIG. 4 shows an example of a collection of files 400 associated with a single job (e.g., a single package). A container is defined by a package that is stored together as an integral unit, such as an integral composite file having individual component files. This is the case in FIG. 4. A first series of entries 402 in the file structure corresponds to the document-related nodes shown in the left portion of FIG. 3 (although FIG. 4 is not otherwise related to the example of FIG. 3). A second series of entries 404 in the file structure correspond to the resource-related nodes shown in the right portion of FIG. 3. The document-related entries 402 include a general folder node associated with a root node of the entire package. Metadata is associated with this node. The package includes a “Documents,” folder, which in turn includes a “Document 1” folder, which in turn includes a “Letter” folder, which in turn includes a file labeled “Page x.” These entries correspond to the hierarchy of nodes in FIG. 3 from document node to page node. A metadata file and a page data file are associated with the “Page x” file. Another metadata file is provided which applies to all of the entries of the Document 1 folder.
By way of overview, the interface functionality 114 facilitates interaction between the application module 110 and the job information 102 stored in spool storage 112, and between the spooling module 116 and the job information 102. This interaction can involve creating the job information 102 and storing the job information 102 in the spool storage 112, and retrieving the thus-created job information 102 from the spool storage 112. More specifically, different “clients” within the spooling module 116, such as various filters (132, 134, . . . 136), can retrieve the job information 102 for consumption using the logical hierarchical structure 108. The interface functionality 114 can also involve generating queries to determine features of the job information 102. The interface functionality can also set up various notification modules (e.g., event handlers) that generate notifications upon the occurrence of various events pertaining to the production and/or consumption of the job information.
To this end, FIG. 5 broadly shows that the interface functionality 114 can include three basic exemplary functions. “Add functionality” 502 serves the purpose of creating the job information 102. The add functionality 502 comes into play in the production phase 104 of the system 100 shown in FIG. 1. “Get functionality” 504 serves the purpose of retrieving the thus-created job information 102. The get functionality 502 can come into play in the consumption phase 106 of the system 100 shown in FIG. 1. Finally, “inquiry/notification functionality” 506 serves the role of determining various characteristics of the job information 102 in the context of the production and/or consumption of the job information 102. The inquiry/notification functionality 506 also sets up and monitors various notification modules that generate notifications upon various events associated with the production and/or consumption of the job information 102.
The interface functionality 114 can manipulate the job information in the above-described manner using different data access techniques, such as a synchronous mode of operation and an asynchronous mode of operation. In a synchronous mode of operation, a program module can invoke a function and then wait for its response before continuing on. In an asynchronous mode of operation, the program module can invoke a function and then continue on performing another task. The called function reports it results to the program module at a later time without holding up the tasks performed by the program module. One way of performing an asynchronous method is by first invoking a “begin” operation which invokes the function, prompting it to immediately return a response. The program module then continues on performing other tasks while the function executes its operation. The program module can then invoke an “end” operation which queries the function to determine whether it has performed its task yet. If so, the end operation will prompt the function to return any result generated by the function to the program module.
By virtue of the above design, the interface functionality 114 provides an abstraction for use in interacting with the job information 102. The interface functionality 114 thus can be conceptualized as a virtualized container model that wraps the underlying actual physical job information 102 stored in the spool storage 112. FIG. 6 illustrates this concept by showing the interface functionality 114 as a “shim” over the job information 102.
A.4. Implementation Variations: Exemplary Use of a “Reach Package” and Associated API to Create and Consume Job Information
To begin with, a Metro package is a logical entity that holds a collection of related parts. A single Metro package may contain multiple payloads, each acting as a different representation of document-related information. More precisely, a payload defines a collection of parts, including an identifiable “root” part and all the parts required for valid processing of that root part.
According to one feature, Metro functionality introduces a higher-level mechanism, referred to as “relationships,” to describe references between parts. Relationships provide a way to represent the kind of connection between a source part and a target part in a package without modifying the parts. As such, relationships make the connections between parts directly “discoverable” without examining the content in the parts. This makes the connections independent of content-specific schema, and also allows the connections to be resolved more quickly.
FIG. 7 shows a fixed panel feature 702 (to be described below) (called “spine”) that binds together three pages (704, 706, 708). The set of pages (704, 706, 708) bound together by the spine feature 702 has a print ticket 710 associated with it. Additionally, page 2 (706) has its own print ticket 712. The connections from the spine feature 702 to its print ticket 710 and from page 2 (706) to its print ticket (712) can be represented using the relationships mechanism described above.
More specifically, a part and its associated relationship part can be coupled together using a naming convention. In FIG. 7, the relationship part for the spine feature 702 can be stored in /content/_rels/spine.xml.rels and the relationships for page 2 (706) can be stored in /content/_rels/p2.xml.rels. Two exemplary naming conventions are used here. First, the relationship part for some other (original) part in a given “folder” in the name hierarchy is stored in a “sub-folder” called_rels. Second, the name of this relationship-holding part is formed by appending the .rels extension to the name of the original part.
<Relationships Xmlns=“Http://mmcfrels-PLACEHOLDER”>
Target=“../tickets/ticket1.xml”
Name=“http://mmcf-print-ticket/PLACEHOLDER”/>
As indicated above, relationships are represented using <Relationship> elements nested in a single <Relationships> element. The “Target” element specifies a URI that points to the part at the other end of the relationship. The “Name” element specifies an absolute URI that uniquely defines the role of the relationship.
Metro functionality also provides a number of basic building block parts. A so-called “start part” defines a part that is typically processed first when a package is opened. Accordingly, the start part represents the logical root of the content stored in the package.
Metro functionality also defines two mechanisms for building higher-order structures from parts: selectors and sequences. A selector is a part which “selects” among a number of other parts. For example, a selector part might “select” between a part representing an English version of a document and a part representing a French version of the document. A sequence is a part which “sequences” a number of other parts, causing all of the part's children to be processed. For example, a sequence part might combine (into a linear sequence) two parts, one of which represents a five-page document and one of which represents a ten-page document.
Moreover, Reach features can be combined together into different compositions to create compound documents. For instance, Reach packages support a specific kind of sequence (called a fixed panel sequence) that can be used, for example, to “glue” together a set of fixed panels into a single, larger “document.” For example, two documents can be “glued” together that originate from different sources: a two-page cover memo (defining a first fixed panel feature) and a twenty-page report (defining a second fixed panel feature).
Reach packages also support a number of specific selectors that can be used when building document packages containing alternate representations of the “same” content. In particular, Reach packages allow selection based on language, color capability, and page size, etc. More specifically, a language selector chooses between representations based on their natural language. A color selector chooses between representations based on whether they are black/white or color. A page size selector chooses between representations based on their page size. A content type selector chooses between representations based on whether their content types can be understood by the system. Consider, for instance, the case of a language selector. In one example, job information 102 may constitute a bi-lingual document that uses a language selector to pick between the English representation and the French representation of the document. A language representation is chosen by inspecting the different representations and choosing the one that matches the system's specified default language.
<PageContent Source=“p1.xml” />
<PageContent Source=“p2.xml” />
More specifically, each fixed page part contains FixedPage markup describing the rendering of a single page of content. The excerpt provided below shows exemplary markup of the source content that can be used for the page referenced in the sample markup above (<PageContent Source=“p1.xml”/>):
<FixedPage PageHeight=“1056” PageWidth=“816”>
OriginX = “96”
OriginY = “96”
UnicodeString = “This is Page 1!”
FontUri = “../Fonts/Times.TTF”
FontRenderingEmSize = “16”
FIG. 8 shows one example of job information 800 that can be created using Metro and Reach functionality. The job information 800 includes a composition block 802 that includes a sequence part 804 and a selector part 806. The sequence part 804 can “glue” together a number of other parts. The selector part 806 can select between different parts.
Namely, the selector part 806 selects between fixed payload 808 and fixed payload 810. Fixed payload 808 has a structure defined by a fixed panel 812. Namely, the fixed panel 812 “glues” together two fixed pages (814, 816). Fixed payload 810 has a structure defined by another fixed panel 818. The fixed panel 818 binds together two fixed pages (820, 822). The fixed pages (814, 816, 820, 822) can reference a number of font and image resources (824, 826, 828, 830, 832). A selector 834 can be used that allows fixed pages 816 and 822 to select either image 826 or image 828. Further note that fixed pages from different fixed payloads (808, 810) can share resources. For instance, both fixed payloads (808, 810) can draw from image resources 826 and 828. Both fixed payloads (808, 810) can also draw from font resource 830.
Corresponding Reach-enabled API functionality can be used to create and consume job information 102 that conforms to the Reach package structure. Like the examples set forth in FIG. 5 (with respect to the fixed-hierarchy job information 102), the Reach-enabled API functionality can include “add functionality” for adding parts to the Reach-constructed job information 102, and “get functionality” for retrieving parts from the Reach-constructed job information. More specifically, the Reach-enabled API functionality can include logic for adding and getting root parts of the job information 102, selector parts, sequence parts, fixed panel parts, fixed page parts, image resources, font resources, print tickets, and so forth. The root parts can correspond to selector parts or sequence parts.
As a final note to this section, unless otherwise stated, subsequent references to jobs, documents, renditions, pages and resources are intended to abstractly refer to any implementation of these features, including, but not limited to, the fixed-hierarchy examples developed in Section A.3 and the flexible-hierarchy examples developed in this section (Section A.4). In other words, unless otherwise noted, the terms jobs, documents, renditions, pages and resources should be construed in an implementation-independent manner. Moreover, the labels themselves (e.g., jobs, documents, renditions, pages, etc.) are arbitrary; for example, a level in the hierarchy that serves the role of representing different versions of a document can be regarded as a “rendition” level based on its operative role, regardless of a particular implementation's naming convention, which may refer to this level using a different term.
Step 906 entails retrieving the job information 102 from the spool storage 112 and consuming this job information 102 using the spooling module 116 and by applying the consumption-related classes described in Section A.3 (or, in the case of the flexible-hierarchy model, Section A.4). Such consumption may entail applying different combinations of processing operations provided by individual filters (132, 134, . . . 136). Step 908 generally represents any such processing of job information 102. The processing may entail converting the job information 102 having the structure 108 to processed job information 102 that still maintains the structure 108. This output result would be appropriate to send to the “structure-aware” target entity 118 which can interpret this structure 108. The processing may alternatively entail converting the job information 102 having the structure 108 into job information that no longer has any semblance to the structure 108. This output result would be appropriate to send to the “structure-unaware” target entity 120. Or the processing may entail converting the job information 102 having the structure 108 to processed job information 102 that has some vestiges of the structure 108, but which deviates from the structure in one or more respects. This output result would be appropriate to send to the “partially structure-aware” target entity 122.
Other kinds of computer storage media include a hard disk drive 1018 for reading from and writing to a non-removable, non-volatile magnetic media, a magnetic disk drive 1020 for reading from and writing to a removable, non-volatile magnetic disk 1022 (e.g., a “floppy disk”), and an optical disk drive 1024 for reading from and/or writing to a removable, non-volatile optical disk 1026 such as a CD-ROM, DVD-ROM, or other optical media. The hard disk drive 1018, magnetic disk drive 1020, and optical disk drive 1024 are each connected to the system bus 1010 by one or more data media interfaces 1028. Alternatively, the hard disk drive 1018, magnetic disk drive 1020, and optical disk drive 1024 can be connected to the system bus 1010 by a SCSI interface (not shown), or other coupling mechanism. Although not shown, the computer 1002 can include other types of computer readable media, such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, electrically erasable programmable read-only memory (EEPROM), etc.
The computer environment 1000 can include a variety of input devices. For instance, the computer environment 1000 includes the keyboard 1038 and a pointing device 1040 (e.g., a “mouse”) for entering commands and information into computer 1002. The computer environment 1000 can include other input devices (not illustrated), such as a microphone, joystick, game pad, satellite dish, serial port, scanner, card reading devices, digital or video camera, etc. Input/output interfaces 1042 couple the input devices to the processing unit 1006. More generally, input devices can be coupled to the computer 1002 through any kind of interface and bus structures, such as a parallel port, serial port, game port, universal serial bus (USB) port, etc.
SetMetadata attaches an arbitrary metadata item to an element. AddResource adds a resource item to an element. An element can link to a resource by storing linking information in its metadata. GetStream returns a stream object attached to an identified object. Commit commits all added metadata and objects to file. Close commits and closes an identified object and contained stream. GetStreamPending returns an indication of “true” if a request is pending as a result of the invocation of certain requests to perform streaming operations. GetMetadataPending returns an array of pending requests as a result of the invocation of certain requests to retrieve metadata. GetMetadataCountPending returns an indication of “true” if a request is pending as a result of the invocation of certain requests to determine the count of metadata. GetResourcesPending returns an array of pending requests as a result of the invocation of certain requests to retrieve resources. GetResourceCountPending returns an indication of “true” as a result of the invocation of certain requests to retrieve a resource count. GetURI returns a URI that was automatically generated upon creation of an identified element. An abstract class PrintSysCtnrBaseConsumer defines a base class of all types of elements that can be consumer from a container by the consumer. This class can include various functions, such as the following exemplary list of functions:
GetMetadata reads a collection of Metadata items from an identified object. It blocks until requested items become available, or until the collection in a container is finalized. It returns a number of items read. GetMetadata reads a metadata item identified by name from an identified object. It blocks until requested items become available, or until the collection in a container is finalized. It returns “true” if the item is found. GetMetadataCount blocks until a metadata collection is complete and returns a number of items. GetResources reads a collection of resource items from an identified object. It blocks until the requested items become available, or until the collection in a container is finalized. It returns a number of items read. GetResourceCount blocks until a resource collection is complete. It returns a number of items. GetStream returns a user stream attached to an identified object. If there is no user stream yet, the call blocks until one becomes available or the element is finalized. This stream supports asynchronous reads. If a synchronous read operation is performed on the stream, it can block until the producer has closed. A class PrintSysCtnrRootProduce, which inherits from the class PrintSysCtnrBaseProducer, provides the following exemplary functions:
AddJob adds a job object to the container. GetJobsPending returns an array of pending requests as a result of the invocation of certain requests to retrieve jobs. GetJobCountPending returns an indication of “true” if a request is pending as a result of the invocation of certain requests to get job count. A class PrintSysCtnrRootConsumer, which inherits from the class PrintSysCtnrBaseConsumer, provides the following exemplary functions:
AddDocument adds a new document to a job. AddToPrintList adds an item to a list of objects that have to be printed (where the item can be a document, rendition, page, etc.). DocumentsConsumePending returns an array of pending requests as a result of the invocation of certain requests to retrieve documents. GetDocumentCountPending returns an indication of “true” if a request is pending as a result of the invocation of certain requests to get document count. GetPrintListPending returns an array of pending requests as a result of the invocation of certain requests to get prints lists. GetPrintListCountPending returns an indication of true if a request is pending as a result of the invocation of certain requests to get print list count. A class PrintSysCtnrJobConsumer, which inherits from the class PrintSysCtnrBaseConsumer, provides the following exemplary functions:
AddRendition adds a rendition object to an identified document. GetRenditionsPending returns an array of pending requests as a result of the invocation of certain requests to get renditions. GetJobCountPending returns an indication of “true” if a request is pending as a result of the invocation of certain requests to get job count A class PrintSysCtnrDocumentConsumer, which inherits from the class PrintSysCtnrBaseConsumer, provides the following exemplary functions:
AddPage adds a page object to a rendition. GetPagesPending returns an array of pending requests as a result of the invocation of certain requests to get pages. GetJobCountPending returns an indication of “true” if a request is pending as a result of the invocation of certain requests to get job content. A class PrintSysCtnrRenditionConsumer, which inherits from the class PrintSysCtnrBaseConsumer, includes the following exemplary functions:
AddFixedPage. The actual page markup can be added in at least two ways: a) using GetStream and manually writing markup to that stream; and b) using AddFixedPage by performing serialization in the delegate callback. The latter method is preferred between filters because it allows retention of the in-memory page; further, necessary serialization can be avoided. PrintSysCtnrPageProducer defines a wrapper for a single page FixedPage; calling AddFixedPage more than once ca n throw an exception. GetFixedPagePending returns an indication of “true” if certain requests to get a page are pending. A class PrintSysCtnrPageConsumer, which inherits from the class PrintSysCtnrBaseConsumer, includes the following exemplary functions:
AddObject provides a technique for adding an object to an element. The actual resource markup can be added in at least two ways: a) by using GetStream and manually writing markup to that stream; and b) using AddObject by performing serialization in the delegate callback. The latter procedure is preferred between filters because it allows for the retention of the in-memory resource, thereby avoiding unnecessary serialization. PrintSysCtnrResourceProducer is a wrapper for a single resource object; calling AddObject more than once can throw an exception. GetObjectPending returns an indication of “true” if certain requests to get an object are pending. A class PrintSysCtnrResourceConsumer, which inherits from the class PrintSysCtnrBaseConsumer, includes the following exemplary functions:
Get PropertyName retrieves the metadata property name. GetObject retrieves the metadata object. This can return “null” if the metadata was set as a stream. GetStream retrieves the Metadata stream. This will return “null” if the metadata was set as an object. A class ProducerMetadata includes the following exemplary functions:
ProducerMetadata creates a ProducerMetadata item that can then be attached to an arbitrary element. ProducerMetadata creates a ProducerMetadata item that can then be attached to an arbitrary element. A class EffectivePrintTicketHandler provides functionality for merging information PrintTickets on multiple levels in the job hierarchy along an access path to the current node in the hierarchy. This functionality can perform this task by “walking up” the hierarchy using the parent properties of each node, and then walking back down and merging the PrintTickets along the way. This class can include the following exemplary functions:
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS4410286Jun 16, 1981Oct 18, 1983International Business Machines CorporationPrinting complex charactersUS4594674Feb 18, 1983Jun 10, 1986International Business Machines CorporationGenerating and storing electronic fontsUS4649513Sep 13, 1984Mar 10, 1987International Business Machines CorporationApparatus and method for processing system printing data records on a page printerUS4870611Sep 13, 1984Sep 26, 1989International Business Machines CorporationApparatus and method for system printing mode controlUS5179702Jun 11, 1990Jan 12, 1993Supercomputer Systems Limited PartnershipSystem and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread schedulingUS5222205Mar 16, 1990Jun 22, 1993Hewlett-Packard CompanyMethod for generating addresses to textured graphics primitives stored in rip mapsUS5469532Nov 16, 1992Nov 21, 1995Microsoft CorporationSystem and method for font wrapping printer dataUS5469533Jul 10, 1992Nov 21, 1995Microsoft CorporationResource-oriented printer system and method of operationUS5487138Sep 2, 1993Jan 23, 1996Hewlett-Packard CompanyMethod to reduce memory requirements in Asian printers while improving performanceUS5537526Nov 12, 1993Jul 16, 1996Taugent, Inc.Method and apparatus for processing a display document utilizing a system level document frameworkUS5613124Jun 7, 1995Mar 18, 1997Microsoft CorporationMethod and system for generating and storing multiple representations of a source object in object storageUS5699493Jun 23, 1995Dec 16, 1997Lexmark International, Inc.Method and apparatus for providing job accounting information to a host computer from a printerUS5727220Nov 29, 1995Mar 10, 1998International Business Machines CorporationMethod and system for caching and referencing cached document pages utilizing a presentation data streamUS5745121Jul 21, 1995Apr 28, 1998Canon Information Systems Research Australia Pty LtdMethods and apparatus for optimizing the composition of graphical elementsUS5745122Aug 20, 1996Apr 28, 1998Adobe Systems IncorporatedMethod of establishing constraints between master and slave graphical elementsUS5745910Apr 17, 1996Apr 28, 1998Apple Computer, Inc.Frame structure which provides an interface between parts of a compound documentUS5752055Oct 15, 1996May 12, 1998International Business Machine Corp.Systems and method for automatically linking parts within compound documentsUS5752056Mar 2, 1994May 12, 1998Apple Computer, Inc.System for binding document parts and handlers by fidelity of parts or by automatic translation of partsUS5806078Jun 9, 1994Sep 8, 1998Softool CorporationVersion management systemUS5819295Sep 26, 1996Oct 6, 1998Matsushita Electric Industrial Co., Ltd.Document storing and managing systemUS5845058Nov 20, 1996Dec 1, 1998Microsoft CorporationDevice independent spooling in a print architectureUS5903903Apr 25, 1996May 11, 1999Microsoft CorporationSystem for determining the sequence and placement of pages for a multiple-page documentUS5905504Dec 19, 1996May 18, 1999Hewlett Packard CompanySystem and method for dithering and quantizing image data to optimize visual quality of a color recovered imageUS5911138Jun 4, 1993Jun 8, 1999International Business Machines CorporationDatabase search facility having improved user interfaceUS5940581Mar 21, 1996Aug 17, 1999Apple Computer, Inc.Dynamic font management for large character setsUS5950215Feb 7, 1996Sep 7, 1999Nec CorporationSystem for managing a compound documentUS5960168Dec 3, 1998Sep 28, 1999Microsoft CorporationDeferred printingUS5993088Sep 30, 1998Nov 30, 1999International Business Machines CorporationMethod for improving print performance and quality by accumulating, storing and using resource accounting information with a print jobUS6026416May 30, 1996Feb 15, 2000Microsoft Corp.System and method for storing, viewing, editing, and processing ordered sections having different file formatsUS6070175Aug 26, 1997May 30, 2000The United States As Represented By The Director The National Security AgencyMethod of file editing using framemaker enhanced by application programming interface clientsUS6094665Sep 18, 1997Jul 25, 2000Hewlett-Packard CompanyMethod and apparatus for correcting a uniform resource identifierUS6134552Jan 28, 1998Oct 17, 2000Sap AktiengesellschaftKnowledge provider with logical hyperlinksUS6138162Feb 11, 1997Oct 24, 2000Pointcast, Inc.Method and apparatus for configuring a client to redirect requests to a caching proxy server based on a category ID with the requestUS6144974Dec 13, 1996Nov 7, 2000Adobe Systems IncorporatedAutomated layout of content in a page frameworkUS6173295Sep 15, 1997Jan 9, 2001International Business Machines CorporationMethod, system, and program for creating a job ticket inlcuding information on components and print attributes of a print jobUS6182080Sep 12, 1997Jan 30, 2001Netvoyage CorporationSystem, method and computer program product for storage of a plurality of documents within a single fileUS6182096Jun 30, 1998Jan 30, 2001International Business Machines CorporationMethod and apparatus of creating highly portable output files by combining pages from multiple input filesUS6195676Jan 11, 1993Feb 27, 2001Silicon Graphics, Inc.Method and apparatus for user side scheduling in a multiprocessor operating system program that implements distributive scheduling of processesUS6199082Jul 17, 1995Mar 6, 2001Microsoft CorporationMethod for delivering separate design and content in a multimedia publishing systemUS6212530May 12, 1998Apr 3, 2001Compaq Computer CorporationMethod and apparatus based on relational database design techniques supporting modeling, analysis and automatic hypertext generation for structured document collectionsUS6247018Apr 16, 1998Jun 12, 2001Platinum Technology Ip, Inc.Method for processing a file to generate a databaseUS6247066Nov 4, 1996Jun 12, 2001Hitachi, Ltd.Compound document processing methodUS6269403Jun 30, 1997Jul 31, 2001Microsoft CorporationBrowser and publisher for multimedia object storage, retrieval and transferUS6344855Jul 26, 1999Feb 5, 2002Apple Computer, Inc.Encapsulated network entity reference of a network component system for integrating object oriented software componentsUS6362870Oct 26, 1998Mar 26, 2002Hewlett-Packard CompanyImage copier having enhanced duplex capabilities; method of printing a copy of a document to produce a duplex copy productUS6385727Sep 25, 1998May 7, 2002Hughes Electronics CorporationApparatus for providing a secure processing environmentUS6407821Sep 8, 1998Jun 18, 2002International Business Machines CorporationMethod and apparatus for printing documents including embedded print objects with an intelligent printing systemUS6418448Dec 6, 1999Jul 9, 2002Shyam Sundar SarkarMethod and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the webUS6427230Nov 9, 1998Jul 30, 2002Unisys CorporationSystem and method for defining and managing reusable groups software constructs within an object management systemUS6447184Jul 30, 1998Sep 10, 2002Canon Kabushiki KaishaMethod and apparatus for controlling a printing operationUS6449653Mar 25, 1997Sep 10, 2002Microsoft CorporationInterleaved multiple multimedia stream for synchronized transmission over a computer networkUS6457017May 16, 1997Sep 24, 2002Softscape, Inc.Computing system for information managementUS6466935Jun 4, 1999Oct 15, 2002International Business Machines CorporationApplying relational database technology to process control in manufacturing processesUS6480206Feb 23, 1999Nov 12, 2002Sun Microsystems, Inc.Method and apparatus for an extensible editorUS6507858Feb 25, 1998Jan 14, 2003Microsoft CorporationSystem and method for storing ordered sections having different file formatsUS6538760Sep 8, 1998Mar 25, 2003International Business Machines Corp.Method and apparatus for generating a production print stream from files optimized for viewingUS6549918Sep 21, 1998Apr 15, 2003Microsoft CorporationDynamic information format conversionUS6571279May 19, 1999May 27, 2003Pinpoint IncorporatedLocation enhanced information delivery systemUS6583789Dec 3, 1998Jun 24, 2003International Business Machines CorporationMethod and system for processing glyph-based quality variability requestsUS6591278Mar 3, 2000Jul 8, 2003R-Objects, Inc.Project data management system and methodUS6604144Jun 30, 1997Aug 5, 2003Microsoft CorporationData format for multimedia object storage, retrieval and transferUS6608693Apr 30, 1999Aug 19, 2003Hewlett-Packard Development Company, L.P.Apparatus and method for generating a print job from a command stream describing multiple copies of a documentUS6609200Dec 28, 2000Aug 19, 2003Financial Services Technology ConsortiumMethod and system for processing electronic documentsUS6615281May 5, 2000Sep 2, 2003International Business Machines CorporationMulti-node synchronization using global timing source and interrupts following anticipatory wait stateUS6654147Jul 6, 1999Nov 25, 2003Creo Il Ltd.Anti-aliasing for digital printingUS6657647Sep 25, 2000Dec 2, 2003Xoucin, Inc.Controlling the order in which content is displayed in a browserUS6658477May 12, 1999Dec 2, 2003Microsoft CorporationImproving the control of streaming data through multiple processing modulesUS6674540May 24, 1999Jan 6, 2004Hewlett-Packard Development Company, L.P.Assembling and printing compound documentsUS6675353Jul 26, 1999Jan 6, 2004Microsoft CorporationMethods and systems for generating XML documentsUS6675356Dec 22, 1998Jan 6, 2004Xerox CorporationDistributed document-based calendaring systemUS6681223Jul 27, 2000Jan 20, 2004International Business Machines CorporationSystem and method of performing profile matching with a structured documentUS6715126Sep 15, 1999Mar 30, 2004International Business Machines CorporationEfficient streaming of synchronized web content from multiple sourcesUS6763343Sep 20, 1999Jul 13, 2004David M. BrookePreventing duplication of the data in reference resource for XML page generationUS6771291Jun 7, 2000Aug 3, 2004The Perfect Web CorporationMethod for developing electronic documents employing multiple display regionsUS6781609May 9, 2000Aug 24, 2004International Business Machines CorporationTechnique for flexible inclusion of information items and various media types in a user interfaceUS6789229Apr 19, 2000Sep 7, 2004Microsoft CorporationDocument pagination based on hard breaks and active formatting tagsUS6812941Dec 9, 1999Nov 2, 2004International Business Machines Corp.User interface management through view depthUS6826626Jul 21, 2000Nov 30, 2004Clear Blue Technologies Management, Inc.Method of and apparatus for rapid retrieval of data in a content distribution networkUS6867874Nov 16, 1999Mar 15, 2005Seiko Epson CorporationDirect server-accessing printer and control method thereofUS6891632Jul 17, 1998May 10, 2005Peerless Systems, Inc.Method and apparatus for selecting print strategy for optimal performanceUS6910843Nov 26, 2001Jun 28, 2005Hewlett-Packard Development Company, L.P.Cover authoring systems and methods and bookbinding systems incorporating the sameUS6917976Aug 31, 2000Jul 12, 2005Sun Microsystems, Inc.Message-based leasing of resources in a distributed computing environmentUS6925597Apr 16, 2001Aug 2, 2005Picsel Technologies LimitedSystems and methods for digital document processingUS6925631Dec 8, 2000Aug 2, 2005Hewlett-Packard Development Company, L.P.Method, computer system and computer program product for processing extensible markup language streamsUS6944515Mar 10, 2003Sep 13, 2005Honda Giken Kogyo Kabushiki KaishaParts list system which generates and manages a parts list simply and effectivelyUS6952801May 10, 2001Oct 4, 2005R.R. DonnelleyBook assembly process and apparatus for variable imaging systemUS6968557Dec 18, 2000Nov 22, 2005Stratum8 CorporationReducing stack memory resources in a threaded computer systemUS6992785Feb 9, 2000Jan 31, 2006International Business Machines CorporationMethod, data structure and apparatus for identifying resources prior to printingUS7017162Jul 10, 2001Mar 21, 2006Microsoft CorporationApplication program interface for network software platformUS7027660Jul 5, 2002Apr 11, 2006Ecole Polytechnique Federale De Lausanne (Epfl)Images incorporating microstructuresUS7043688 *Nov 24, 1999May 9, 2006Casio Computer Co., Ltd.Document processing apparatus capable of increasing printing efficiency by forming virtual document and storage mediumUS7047237Feb 28, 2003May 16, 2006Honda Giken Kogyo Kabushiki KaishaSystem and method for checking data stored in database system used for part managementUS7051276Sep 27, 2000May 23, 2006Microsoft CorporationView templates for HTML source documentsUS7051330Nov 21, 2000May 23, 2006Microsoft CorporationGeneric application server and method of operation thereforUS7092963May 16, 2001Aug 15, 2006Xerox CorporationDatabase method and structure for a finishing systemUS7106275Dec 14, 2001Sep 12, 2006Apple Computer, Inc.Rendering translucent layers in a display systemUS7131060Sep 29, 2000Oct 31, 2006Raytheon CompanySystem and method for automatic placement of labels for interactive graphics applicationsUS7134071Nov 20, 2002Nov 7, 2006Ricoh Company, Ltd.Document processing utilizing a version managing partUS7162538Oct 4, 2000Jan 9, 2007Intel CorporationPeer to peer software distribution systemUS7171471Aug 15, 2002Jan 30, 2007Cisco Technology, Inc.Methods and apparatus for directing a resource requestUS20030009672 *May 7, 2002Jan 9, 2003Goodman Daniel I.Method and system for real-time control of document printingUS20040111418 *Dec 4, 2002Jun 10, 2004Microsoft CorporationPrint management architecture for computing devicesUS20040130741 *Jan 6, 2003Jul 8, 2004Ferlitsch Andrew RodneySystem for face-up tiff printingUS20040160613 *Feb 11, 2004Aug 19, 2004Canon Kabushiki KaishaPrint control program and medium and information processing apparatusUS20050210227 *Mar 5, 2004Sep 22, 2005Microsoft CorporationMultilevel ticket-based job management architecture for computing devices* Cited by examinerNon-Patent CitationsReference1"@tryinCSS3 (was Useragent Rules in CSS)"; Mar. 31, 2004; http://lists.w3.org/Archives/Public/www-style/2004Mar/0333.html.; 2 pages.2"[Editorial Draft] Versioning XML Languages"; Proposed TAG Finding Nov. 16, 2003; http://www.w3.org/2001/tag/doc/versioning-20031116; 23 pages.3"Adobe Photoshop release history", Wikipedia, Oct. 28, 2008, pp. 1-7.4"Apache Server Frequently Asked Questions", Apache HTTP Server Version 1,3, <<http://httpd.apache.org/docs/misc/FAQ.html>>, 35 pages.5"Apache Server Frequently Asked Questions"; Apache HTTP Server Version 1.3; http://httpd.apache.org/docs.misc/FAQ.html.; 35 pages.6"Controlling the Data Chaos by Adding Intelligence to Media"; 4 pages. 2004.7"Controlling the Data Chaos by Adding the Intelligence to Media", 2004, 4 pages.8"Interleaved Graphics and Text" Bluethman et al., IBM Technical Disclosure Bulletin, Apr. 1980, vol. 22, No. 11., pp. 4813-4815.9"Networked File System", available at <<http://www.scit.wlv.ac.uk/~jphb/comms/nfs.html>>, 6 pages.10"Networked File System"; http://www.scit.wlv.ac.uk/~jphb/comms/nfs.htm.; 6 pages.11"SOAP Version 1.2 Part 1: Messaging Framework", W3C Proposed Recommendation, available at <<http://www.w3.org/TR/2003/PR-soap12-part1-20030507>>, May 7, 2003, 25 pages.12"SOAP Version 1.2 Part 1: Messaging Framework"; W3C Proposed Recommendation May 7, 2003; http://www.w3.org/TR/2003/PR-soap12-part1-20030507. 25 pages.13"Supported File Formats Photoshop Elements 5.0", retrieved at <<http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=330350>>, Sep. 5, 2007, pp. 1-6.14"SVG Print", W3C Working Draft, available at <<http://www.w3.org/TR/2003/WD-SVGPrint-20030715/>>, Jul. 15, 2003 pp. 1-14.15"SVG Print", W3C Working Draft, Jul. 15, 2003 http://www.w3.org/TR/2003/WD-SVGPrint-20030715/ pp. 1-14.16"URIQA! The URI Query Agent Model, A Semantic Web Enabler", URIQA: The Nokia Query Agent, available at <<http://sw.nokia.com/uriqa/URIQA.html>>, 2004, 9 pages.17"URIQA! The URI Query Agent Model, A Semantic Web Enabler"; URIQA: The Nokia Query Agent; http://sw.nokia.com/uriqa/URIQA.html.; 9 pages 2004.18"Windows NT 4.0", Wikipedia, Nov. 6, 2008, pp. 1-9.19"Windows NT Server Printing", retrieved on Nov. 17, 2008 at <<http://www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/resg...>>, 2008, pp. 1-35.20"XMP Adding Intelligence to Media", XMP Specification, Jan. 2004, 11 pages.21"XMP Adding Intelligence to Media"; XMP Specification, Jan. 2004, 11 pages.22Akerlof, "The Market for "Lemons": Quality Uncertainty and the Market Mechanism", Quarterly Journal of Economics, vol. 84, Issue 3, Aug. 1970, pp. 488-500.23 *Ashcraft et al., "SPOOLES: An object-oriented sparse matrix library", In Proceedings of the 9th SIAM Conference on Parallel Processing for Scientific Computing, 1999. pp. 1-10. Downloaded: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.5809.24Bluethman, et al., "Interleaved Graphics and Text", IBM Technical Bulletin, Apr. 1980, vol. 22, No. 4, Oct. 1986, pp. 4813-4815.25Bluethman, et al., "Interleaved Graphics in Text", IBM Technical Bulletin, Apr. 1980, vol. 22, No. 4, Oct. 1986, pp. 4813-4815.26Chien, et al., "Effcient Schemes for Managing Multiversion XML Documents", University of California, California, Dec. 19, 2002, pp. 332-353.27Christodoulakis, et al., "Multimedia Document Presentation, Information Extraction, and Document Formation in MINOS: A Model and a System", ACM Transaction on Office Information Systems, vol. 4, No. 4, Oct. 1986, pp. 345-383.28Christodoulakis, et al., "Multimedia Document Presentation, Information Extraction, and Document Formation in MINOS: A Model and a System", ACM Transaction on Office Information Systems, vol. 4, No. 4, Oct. 1989, pp. 345-383.29Devanur, et al., "An Improved Approximation Scheme for Computing Arrow-Debreu Prices for the Linear Case", retrieved on Nov. 10, 2008 at <<http://www.cc.gatech.edu/~nikhil/pubs/fsttcs.pdf>>, pp. 1-8.30El-Kwae, et al., "Document Image Representation Using XML Technologies", Proceedings of SPIE, vol. 4670, 2001, pp. 109-120.31Ellis et al., "Postscrip, Bezier Curves and Chinese Character", ACM, 1989, pp. 162-165.32Geanakoplos, et al., "The Arrow-Debreu Model of General Equilibrium", retrieved on Nov. 10, 2008 at <<cowles.econ.yale.edu>>, Cowles Foundation for Research in Economics at Yale University, 2004.33Girardot et al. "Efficient Representation and Streaming XML Content Over the Internet Medium"; IEEE 2000, pp. 67-70.34Girardot, et al., "Efficient Representation and Streaming XML Content Over the Internet Medium", IEEE 2000, pp. 67-70.35Han, et al., "WebSplitter:A Unified XML Framework for Multi-Device Collaborative web browsing" IBM Thomas J. Watson research Centre, Hawthorne, CSCW, Dec. 2-6, 2000, ACM 1-58113-222-0/00/0012, pp. 221-230.36Han, et al., "WebSplitter:A Unified XML Framework for Multi-Device Collaborative web browsing" IBM Thomas J. Watson research Centre, Hawthorne, CSCW, Dec. 2-6, 2000, ACM, 1-58113-222-0/00/0012, pp. 221-230.37Hardy, et al., "Mapping and Displaying Structural Transformations between XML and PDF", ACM, 2002, pp. 95-102.38Holman, "What is XSL-FO", Google, Mar. 20, 2002, pp. 1-4.39Holman; "What is XSL-FO", Google Mar. 20, 2002, pp. 1-4.40Jacobs, et al., "Adaptive Grid-Based Document Layout", ACM, 2003, pp. 838-847.41Jacobs, et al., "Adaptive Grid-Based Documnet Layout", ACM, 2003, pp. 838-847.42Jain, et al., "A Polynomial Time Algorithm for Computing an Arrow-Debreu Market Equilibrium for Linear Utilities", Proceedings of the 45th Annual IEEE Symposium on Foundations of Computer Science (FOCS '04), IEEE, 2004, pp. 1-9.43Jain, et al., "Approximating Market Equilibria", Springerlink, LNCS 2764, 2003, pp. 1-11.44Levy, et al., "Non-Distorted Texture Mapping for Sheared Triangulated Meshes", The 25th Conference on Computer Graphics and Interactive Techniques, ACM, 1998, pp. 343-352.45Marco, et al., "A Framework for Designing and Implementing the Ada Standard Container Library", ACM 2003, pp. 49-61.46Miller, "An Introduction to the Resource Description Framework", D-Lib Magazine, available at <<http://www.dlib.org/dlib/may98/miller/05miller.html>>, May 1998, 10 pages.47Moschini, "@tryinCSS3 (was Useragent Rules in CSS)", available at <<http://lists.w3.org/Archives/Public/www-style/2004Mar/0333.html>>, Mar. 31, 2004, 2 pages.48Official Notice of Rejection for China Patent Application No. 200480001329.4, Dec. 18, 2007, pp. 1-16.49Open eBook Publication Structure 1.2, Open eBook Forum, Aug. 2002, pp. 1-93.50Orchard, David; "Versioning XML Vocabularies" published on XML.com Dec. 3, 2003, pp. 1-10.51Orchard, et al., "Versioning XML Languages W3C Proposed TAG finding [Editorial Draft]", Nov. 16, 2003, pp. 1-23.52Pawson, "Printing from XML: An Introduction to XSL-FO", Google, Oct. 9, 2002, pp. 1-4.53Peter et al., "CrystalWeb-A distributed authoring environment for the World-Wide Web" Computer Networks and ISDN Systems, North Holland Publishing. Amsterdam, NL. vol. 27, No. 6, Apr. 1995, pp. 861-870.54 *Reguero et al, "Large Scale Print Spool Service", published in the Proceedings of the Twelfth Systems Administration Conference (LISA '98) Boston, Massachusetts, Dec. 6-11, 1998. pp. 1-15. Downloaded: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.107.7406.55Shade, et al., "Layered Depth Images", The 25th Annual Conference on Computer Graphics and Interactive Techniques, ACM, 1998, pp. 231-242.* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS7710593 *Aug 11, 2005May 4, 2010Seiko Epson CorporationMethod and apparatus for controlling a network device using XML and conditional processingUS9268849 *Sep 6, 2008Feb 23, 2016Alexander SiedleckiApparatus and methods for web marketing tools for digital archives—web portal advertising artsUS20060033954 *Aug 11, 2005Feb 16, 2006Seiko Epson CorporationNetwork device and method for controlling the sameUS20090106234 *Sep 6, 2008Apr 23, 2009Alexander SiedleckiApparatus and methods for web marketing tools and digital archives - web portal advertising arts* Cited by examinerClassifications U.S. Classification1/1, 358/1.1, 715/200, 707/999.103International ClassificationG06F17/00, G06F3/12Cooperative ClassificationY10S707/99944, G06F3/1206, G06F3/1203, G06F3/1246, G06F3/1244, G06F3/1276, G06F2206/1514European ClassificationG06F3/12A4M20, G06F3/12A2A14, G06F3/12A2A, G06F3/12A4M20HLegal EventsDateCodeEventDescriptionSep 27, 2012FPAYFee paymentYear of fee payment: 4Dec 9, 2014ASAssignmentOwner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034542/0001Effective date: 20141014RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services