Abstract:
A method is disclosed. The method includes detecting an object within Advanced Presentation Document (AFP) print data and inserting a Metadata Object Content Architecture 2.0 (MOCA-2) object into the AFP print data to associate contextual information with a component of data within the object.

Description:
[0001]    This is a non provisional application based on provisional application Ser. No. 62/221,234 filed on Sep. 21, 2015 and claims priority therefrom. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present invention relates to the field of document file format, printing, and in particular, to Advanced Function Presentation data. 
       BACKGROUND 
       [0003]    Advanced Function Presentation (AFP) is a format used to store document data for print jobs, archival and other forms of presentation such as viewing. According to AFP standards, a print job is divided into AFP objects. Each AFP object may define a part of the print job, such as a document, a page, an image, text, etc. Further, AFP objects may be nested within each other. For example, an AFP document object may include multiple AFP page objects, and each AFP page object may include multiple text and/or graphical objects. 
         [0004]    Each AFP print job may be associated with metadata. Metadata is contextual information used to describe the print job. For example, metadata may indicate an author of the print job, may indicate a preferred rasterization algorithm to use while processing the print job, or may indicate any other suitable characteristic of the print job. As presently required according to AFP standards, metadata for an AFP print job is stored within an index as a series of one or more AFP-defined Index Elements (IELs). Each IEL includes Tagged Logical Elements (TLEs), which each contain a single name-value attribute pair. A more robust form would include metadata represented in XML format or metadata objects which, themselves, may contain alternate representations for the object such as annotation, audio, video, java script and the like. Association of such rich metadata has recently been enabled for the AFP Print File (MOCA-1) as well as at the AFP Object level (MOCA-2). 
         [0005]    However, a problem with the above-described method is that in order to associate metadata with individual components (e.g., a word or text phrase) within a page, the page must be separated into multiple text objects. This results in fragmentation of an otherwise well-composed page. This fragmentation can lead to workflow challenges when merging or modifying content and performance issues in the final rendering (e.g. printing). 
         [0006]    Accordingly, an efficient metadata tagging mechanism which does not disrupt the intended document taxonomy is desired. 
       SUMMARY 
       [0007]    In one embodiment, a method is disclosed. The method includes detecting an object within Advanced Presentation Document (AFP) print data and inserting a Metadata Object Content Architecture 2.0 (MOCA-2) object into the AFP print data to associate contextual information with one or more data components (e.g. text strings) within the object (e.g. page). 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]    Embodiments of the present invention may be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the invention. The drawings, however, should not be taken to be limiting, but are for explanation and understanding only. 
           [0009]      FIG. 1  is a block diagram illustrating one embodiment of a computer system; 
           [0010]      FIG. 2  is a flow diagram illustrating one embodiment of inserting metadata; 
           [0011]      FIG. 3  illustrates one embodiment of code implemented to perform a local ID tagging process; 
           [0012]      FIG. 4  illustrates another embodiment of code implemented to perform a local ID tagging process; 
           [0013]      FIG. 5  illustrates one embodiment of code implemented to perform a byte offset tagging process; 
           [0014]      FIG. 6  illustrates one embodiment of code implemented to perform an area coordinate tagging process; 
           [0015]      FIG. 7  illustrates one embodiment of contextual information added to an image; and 
           [0016]      FIG. 8  illustrates one embodiment of a computer system. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0017]    A mechanism for efficient metadata tagging is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the present invention. 
         [0018]    Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
         [0019]      FIG. 1  illustrates one embodiment of a computer system  100 . Computer system  100  may be used by a print shop operator to generate and/or process indices for AFP print jobs. A document generation application (or alternatively a print shop operator) may generate an index for a print job in order to store metadata for the print job. For example, consider a print job that will be delivered to people who speak different languages. In such cases, the print job may be printed and physically delivered in one language, while the metadata may be sent with an electronic version of the job in order to describe objects within the print job in another language. System  100  comprises any system, device, or component operable to generate and/or process indices for AFP print data, such as a computer, a server, a network, etc. 
         [0020]    In one embodiment, system  100  has been enhanced to utilize Metadata Object Content Architecture 2.0 (MOCA-2) to insert contextual information or metadata into the AFP Mixed Object Document Context Architecture (MO:DCA). As used herein, the terms “contextual information” or “metadata” refer to information that describes or is otherwise associated with an AFP object. 
         [0021]    In this embodiment, system  100  comprises controller  112 , persistent memory  114 , and Random Access Memory (RAM)  116 . Controller  112  manages the operations of computer  110 , and may be implemented, for example, as custom circuitry or as a processor executing programmed instructions. Controller  112  may use persistent memory  114  (e.g., a disk drive) to store print data and/or indices for later retrieval. Controller  112  may use RAM  116  in order to actively load and process portions of AFP print data kept in persistent memory  114 . Furthermore, controller  112  may utilize display  120  (e.g., a monitor, screen, etc.) in order to visually show indices or portions of print data to a user. Additional devices, such as audio devices or multimedia devices (e.g., televisions, etc.) may be used to provide information as desired. The particular arrangement, number, and configuration of components described herein is exemplary and non-limiting. 
         [0022]      FIG. 2  is a flow diagram illustrating one embodiment of inserting metadata into AFP print data. The process of  FIG. 2  is described with reference to computer system  100 . However embodiments may be implemented in other systems. The steps of the flowcharts described herein are not all inclusive and may include other steps not shown. The steps described herein may also be performed in an alternative order. 
         [0023]    At processing block  210 , controller  112  loads AFP print data from persistent memory  114  into RAM  116 . At processing block  220 , AFP object (e.g., an Object Container Data (OCD) structured field) is detected within the AFP print data. In one embodiment, the object is a text object indicating presentation of a page of text data. However in other embodiments the object may be another type of presentation object, such as an image object. At processing block  230 , contextual information (or metadata) is inserted into the AFP print data that corresponds to the object. As discussed above, the contextual data is inserted into the print data via a MOCA-2 container. 
         [0024]    In one embodiment, insertion of the contextual data includes also inserting a reference to the component within the object (e.g., a string of text, coordinates of an image) to which the contextual data is to be associated. For example, the contextual data may be a Uniform Resource Locator (URL) that is associated with each occurrence of a text string (e.g., word, phrase or sentence) within a text object, or at a specific coordinate of an image. 
         [0025]    In one embodiment, multiple metadata objects may be associated with different text data within the same object. In such an embodiment, a first set of one or more metadata objects may be associated with a first text string of text within a text object, while a second set of one or more metadata objects may be associated with a second text string of text within the text object. At processing block  240 , the updated print data is stored in memory  214 . At some time later, during processing of the update AFP print data, the print data is presented with the inserted contextual data. 
         [0026]    According to one embodiment, the structured begin/end object syntax in MO:DCA is implemented to embed tags associated with a local identifier (LID) that links back to the metadata or contextual data in a MOCA-2 container. In such an embodiment, a new structure referred to as Begin Metadata Tag (BMT) is defined.  FIG. 3  illustrates one embodiment of such a local ID tagging implementation. 
         [0027]    As shown in  FIG. 3 , a metadata target (e.g., www.cruisevacation.com) is inserted into the print data using the LIDx45 instruction  310 . Subsequently, the corresponding text is inserted into the print data via the BMT structured field  320 , and a transparent data instruction linking the word “escape”. Thus during subsequent execution of the document data, a URL for www.cruisevacation.com is activated upon selection of the word “escape” on the page. 
         [0028]    In other embodiments, the LID tagging process can be used with metadata objects that define inline executable function. Such an embodiment enables the display of HyperText Markup Language (HTML) without having to reference a URL. In other embodiments, Javascript or Ajax script may be implemented.  FIG. 4  illustrates another embodiment of a local ID tagging process in which an inline executable function is implemented rather than a URL. 
         [0029]    In this embodiment, an HTML executable is inserted into the print data using the LIDx50 instruction  410 , along with the HTML code. Subsequently, the corresponding text is inserted into the print data via the BMT structured field  420  with a transparent data instruction linking the word “Cruise vacations”. Similarly, during subsequent execution of the print data, the HTML executable is executed upon user selection of any occurrence of “Cruise vacations”. 
         [0030]    In an alternative embodiment, metadata may be added using a MOCA-2 container by indexing one or more links (e.g., URLs) within the metadata using a byte displacement (e.g., offset, extent) into the associated object (e.g., text). For instance, the byte offset may point to a particular code point at a byte offset in a large (e.g., two million byte) print file. 
         [0031]      FIG. 5  illustrates one embodiment of a byte offset tagging implementation. As shown in  FIG. 5 , hyperlink and audio contextual data is included in the MOCA-2 container along with a byte offset and an extent. Subsequently, the offset is linked with the word “escape”. Accordingly, during subsequent execution of the document data, a URL for www.cruisevacation.com, as well as audio (e.g., CruiseShipHorn.wav), is activated, upon selection of the word “escape” on the page. 
         [0032]    In yet another embodiment, metadata may be added using the MOCA-2 container by supplying coordinates within the page (or object area) at which the contextual information is to be associated. In this embodiment, one or more contextual data objects may be tagged within an image object.  FIG. 6  illustrates one embodiment of such an area coordinate tagging implementation in which hyperlink and audio contextual data is included in the MOCA-2 container along with offset and size coordinates. 
         [0033]      FIG. 7  illustrates one embodiment of contextual information added to an image of a cruise ship upon execution of the document file. In such an embodiment, the coordinates  610  and  620  include user selectable (or clickable) areas on the image to which the contextual information is associated. For example, coordinate  610  is associated with the audio metadata such that the audio file CruiseShipHorn.wav is played upon coordinate  610  being clicked by a user. Similarly, coordinate  620  is associated with the www.cruisevacation.com URL, which is activated upon coordinate  620  being clicked by a user. 
         [0034]      FIG. 8  illustrates a computer system  800 , representing a full system at which computer system  100  may be implemented. Computer system  800  includes a system bus  520  for communicating information, and a processor  810  coupled to bus  820  for processing information. According to one embodiment, processor  810  is implemented using one of multitudes of microprocessors. Nevertheless one of ordinary skill in the art will appreciate that other processors may be used. 
         [0035]    Computer system  800  further comprises a random access memory (RAM) or other dynamic storage device  825  (referred to herein as main memory), coupled to bus  820  for storing information and instructions to be executed by processor  810 . Main memory  825  also may be used for storing temporary variables or other intermediate information during execution of instructions by processor  810 . Computer system  800  also may include a read only memory (ROM) and or other static storage device  826  coupled to bus  820  for storing static information and instructions used by processor  810 . 
         [0036]    A data storage device  825  such as a magnetic disk or optical disc and its corresponding drive may also be coupled to computer system  800  for storing information and instructions. Computer system  800  can also be coupled to a second I/O bus  850  via an I/O interface  830 . A plurality of I/O devices may be coupled to I/O bus  850 , including a display device  824 , an input device (e.g., an alphanumeric input device  823  and or a cursor control device  822 ). The communication device  821  is for accessing other computers (servers or clients) via an external data network, for example. The communication device  821  may comprise a modem, a network interface card, or other well-known interface device, such as those used for coupling to Ethernet, token ring, or other types of networks. 
         [0037]    Embodiments of the invention may include various steps as set forth above. The steps may be embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor to perform certain steps. Alternatively, these steps may be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components. 
         [0038]    Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection). 
         [0039]    Throughout the foregoing description, for the purposes of explanation, numerous specific details were set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without some of these specific details. Accordingly, the scope and spirit of the invention should be judged in terms of the claims which follow.