Patent Publication Number: US-7913160-B2

Title: Document versioning based on layer content

Description:
TECHNICAL FIELD 
     Embodiments relate to creating, editing, displaying, printing and proofing documents. Embodiments also relate to creating printable layers that can be combined to form documents where different layer combinations correspond to different document versions. Embodiments additionally relate to classifying layers into a layer group or into a common group based on the layer content. 
     BACKGROUND 
     A document is, roughly, a combination of textual and graphical elements that are rendered together. Two ways of rendering a document are printing it or displaying it on a display device such as a computer monitor. In professional settings, documents often have versions. Different versions of a document can arise from editing it or correcting it over time. Different versions of a document can also arise by changing the content to focus on different audiences. For example, one version of a document can be intended for an English speaking audience while a different version is intended for a Spanish speaking audience. Versions intended for different audiences are concurrently valid while versions arising from editing over time are sequentially valid. 
     Concurrently valid documents versions are difficult to track and maintain. Originally, every concurrent version was treated individually. Changing one version often resulted in laboriously making a related change to every other version. For example, if every version contained the same watermark, then changing the watermark entailed changing it for every version. 
     Layering is a technique that eases the process of making similar changes to many concurrent document versions. Returning to the example above, the different versions can all share a common watermark layer while each version has a unique text layer. The English version has an English text layer while the Spanish version has a Spanish text layer. Rendering the common watermark layer and a unique text layer can produce a version of the document. Some documents have many common layers and unique layers. 
       FIG. 4 , labeled as “prior art”, illustrates a document  401  containing layers. The document  401  is presented with as having a first layer  402  and a second layer  405  although many layered documents have many more layers. The first layer has layer content  404  and a layer type  403 . The layer content  404  is what will be rendered when the layer is printed or displayed. The layer type  403  is a property of the layer  402 . The layer type is usually inferred because most layers do not contain information that specifically indicates the layer type. The second layer  405  also has a layer type  406  and layer content  407 . The layer content  407  of the second layer  405 , however, contains numerous objects. The objects are two text layers  408 ,  409  and two graphics objects  410 ,  411 . 
     Layers such as the first layer  402  have only one type of content, such as text or graphics. A layer containing only text has a “text only” layer type. A layer containing graphics has a “graphics” layer type. A layer, such as the second layer  405 , containing both text and graphics has a “text containing” layer type. Layers that are “text only” are also “text containing” but are commonly treated differently because they are often kept in different, often simpler, formats. 
       FIG. 5 , labeled as “prior art”, illustrates three layers. The English layer  501  has English language content  504 . The Mandarin layer  502  has Mandarin language content  505 . The Spanish layer  503  has Spanish language content  506 . All three layers contain text and nothing else. As such, all three layers are text only layers having the text only layer type. The Spanish language content  506  and the Mandarin language content  505  are computer-generated translations of the English language content  504 . The natural language of a phrase is, simply, the language it is in. English is the natural language of an English phrase. All three layers are illustrated as graphic elements. Typically, the layer type and the language of a text only layer is inferred although type and language can be explicitly marked as layer properties. 
     Machine translation between languages often requires the user to input a phrase and natural language. The user then chooses a destination language. A computer then translates the phrase from the natural language to the destination language. The natural language is input because the language identification algorithms run by computers are not 100% accurate in identifying languages. Language identification is difficult for very short phrases and becomes progressively easier as the amount of text increases. Many Internet search engines are capable of identifying a web page&#39;s natural language and provide utilities to translate web pages into a desired language. 
     The alphanumeric characters in text are often encoded using a standardized encoding. ASCII is an early character encoding used mainly for English language text. Other languages, however, use characters and punctuation that the English language does not use. Unicode is an international standard that contains many language specific character encodings. Other character encodings also exist. 
       FIG. 6 , labeled as “prior art”, illustrates rendering a version of a document  301  having multiple concurrent versions. The document  301  has five layers. The watermark layer  303  is a common layer that is intended to be included in all the document versions. The cow layer  302  contains a graphic of a cow and is also a common layer. The English layer  304  is a text only layer containing English language content. The Spanish layer  305  is a text only layer containing Spanish language content. The Mandarin layer  306  is a text only layer containing Mandarin language content. 
     A document version specification  601  specifies a version of the document containing English, cow, and watermark. Layering  602  is a task, often performed manually, of taking the document version specification  601 , assembling the layers, and passing them to a rendering device  316 . The rendering device then produces the English, cow, watermark document version  317 . 
     The document  301  has two common layers and three text only layers. As such, there are three concurrently valid document versions. Proofing and producing all three versions of the document  301  is fairly straightforward because there are only three concurrently valid versions. In a production environment, however, even this document is complicated enough for production personnel to err. They can forget to include a common layer. They can forget to produce one of the versions. Furthermore, many documents are far more complicated than the illustrated document  301 . Systems and methods to address the shortcomings of current solutions are needed. 
     BRIEF SUMMARY 
     Aspects of the embodiments address limitations and flaws in the prior art by automatically identifying and grouping layers. 
     It is therefore an aspect of the embodiments to obtain a document that has multiple layers. As discussed above, all layers have content. The content of each layer is used to determine that layer&#39;s layer type. Each layer is then assigned to a layer group. One layer group is the common layer group that contains layers that appear in every document version. 
     Layers that are text containing layers can be identified and placed into language specific layer groups. For example, English text containing layers are placed into an English layer group. One way of identifying the natural language of each layer is to examine the character encoding because, as discussed above, many character encodings contain language specific elements. Also, as discussed above, language identification algorithms are another way to identify the natural language based on the phrases in the text. 
     It is an aspect of some embodiments to generate document version specifications and to render document versions. A document version specification can be automatically generated by specifying all the layers in the common layer group and all of the layers in one of the language specific layer groups. An algorithm that generates all of the permissible combinations of layer groups can be used to create all the desired document version specifications. Methods and systems for generating all the permissible combinations of disparate elements are known to those skilled in the arts of mathematics, computer programming, and gambling. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying figures, in which like reference numerals refer to identical or functionally similar elements throughout the separate views and which are incorporated in and form a part of the specification, further illustrate the present invention and, together with the background of the invention, brief summary of the invention, and detailed description of the invention, serve to explain the principles of the present invention. 
         FIG. 1  illustrates a high level flow diagram of assigning a document&#39;s layers to layer groups in accordance with aspects of the embodiments; 
         FIG. 2  illustrates a high level flow diagram of rendering document versions in accordance with aspects of some embodiments; 
         FIG. 3  illustrates rendering multiple concurrent versions of a document in accordance with aspects of the embodiments; 
         FIG. 4 , labeled as “prior art”, illustrates a document with a layer; 
         FIG. 5 , labeled as “prior art”, illustrates three layers; and 
         FIG. 6 , labeled as “prior art”, illustrates rendering a version of a document having multiple concurrent versions. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The particular values and configurations discussed in these non-limiting examples can be varied and are cited merely to illustrate embodiments and are not intended to limit the scope of the invention. 
       FIG. 1  illustrates a high level flow diagram of assigning a document&#39;s layers to layer groups in accordance with aspects of the embodiments. After the start  101  a document that contains multiple layers is obtained  102 . Next, the layer type of each layer is determined  103 . The layer type determinations can be reviewed and corrected  106 , typically by a person, to ensure that they are correct. For example, a layer can contain rasterized text that a computer algorithm classifies as graphics. A person can recognize that the graphics elements are actually text. Next, the layer is assigned to a layer group or to the common group  104 . The layer group assignments can also be reviewed and corrected  107  before the process is done  105 . Graphics and watermark layers can be assigned to the common group. Text containing layers can be assigned to language specific layer groups based on the layer content. Each language specific layer group is usually exclusive with respect to other language specific layer groups. For example, in most applications the layers in a English layer group and those in a Mandarin layer group are never used in the same document version. 
       FIG. 2  illustrates a high level flow diagram of rendering document versions in accordance with aspects of some embodiments. After the start  201 , documents are obtained  102 , layer types are determined  103 , and layers are assigned to layer groups  104 . Next, document version specifications are determined  202 . Producing every possible allowed combination of the layers in the layer groups can automatically generate all of the required document version specifications. The layers in the common group appear in every document version specification. Exclusive layer groups can then be combined with the common group in turn. For example, different document version specifications can be generated by iteratively combining the common group layers with the different language specific groups. Finally, the document versions are rendered  203  via printing or display and the process is done  204 . 
       FIG. 3  illustrates rendering multiple concurrent versions of a document in accordance with aspects of the embodiments. The document  301  has five layers. The watermark layer  303  is a common layer that is intended to be included in all the document versions. The cow layer  302  contains a graphic of a cow and is also a common layer. The English layer  304  is a text only layer containing English language content. The Spanish layer  305  is a text only layer containing Spanish language content. The Mandarin layer  306  is a text only layer containing Mandarin language content. 
     A discrimination module  307  examines every layer. It groups every layer that is not text containing into the common group  308 . The discrimination module also identifies the text containing layers  309  and determines their natural languages. The English layer  304  is assigned to the English layer group  320 , the Spanish layer  305  is assigned to the Spanish layer group  321 , and the Mandarin layer is assigned to the Mandarin layer group  322 . 
     A specification module  310  creates document version specifications  311  based on the layers in the common group and in the text containing groups. Recall that the language specific groups are exclusive with respect to each other. There can be other exclusive groupings such as the symbols associated with opposing sports teams, corporate logos, or other trademarks. The specification module  310  generates an English, cow, watermark  312  version specification, a Mandarin, cow, watermark  313  version specification, and a Spanish, cow, watermark  314  version specification. 
     A layering module  315  takes the document  301  and the version specifications  311  and generates the information a rendering device  316  can use to generate document versions such as the English, cow, watermark document  317 , the Mandarin, cow, watermark document  318 , and the Spanish, cow, watermark document  319 . The layering module repetitively performs layering, such as the  FIG. 6  layering  602 , for every different document version specification. 
     Embodiments can be implemented in the context of modules. In the computer programming arts, a module can be typically implemented as a collection of routines and data structures that performs particular tasks or implements a particular abstract data type. Modules generally can be composed of two parts. First, a software module may list the constants, data types, variable, routines and the like that can be accessed by other modules or routines. Second, a software module can be configured as an implementation, which can be private (i.e., accessible perhaps only to the module), and that contains the source code that actually implements the routines or subroutines upon which the module is based. Thus, for example, the term module, as utilized herein generally refers to software modules, hardware modules, or implementations thereof. Such modules can be utilized separately or together to form a program product that can be implemented through signal-bearing media, including transmission media and recordable media. 
     It will be appreciated that various of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into many other different systems or applications. Also that various presently unforeseen or unanticipated alternatives, modifications, variations or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims.