A portion of the disclosure of this document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software, data, and/or screenshots which may be described below and in the drawings that form a part of this document: Copyright© 2008, Adobe Systems Incorporated. All Rights Reserved.
The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Across different versions of an electronic document, content may be inserted, deleted, moved, etc. Comparison of different versions of an electronic document enables such changes to be determined.
The embodiments are provided by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Methods, apparatus and systems for comparison output of electronic documents are described. In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, structures and techniques have not been shown in detail in order not to obscure the understanding of this description.
As used herein, the term “electronic document” may comprise any type of electronic content for use in electronic form. Examples of an electronic document may comprise Portable Document Format (“PDF”) which may be viewed and modified in one of the ADOBE® ACROBAT® programs, a web page, a word processing document (such as a Microsoft® Word document), a spread sheet document, page-descriptive electronic content, hypertext document, a markup language document, declarative specification document (such as for example a hypertext markup language HTML or XML document), a fillable form or data describing application graphical user interface, etc.
Example embodiments outputs differences between at least two documents. Assume that two documents (document A and document B) are compared to each other. In some example embodiments, the output comprises markups to document A relative to document B as well as markups to document B relative to document B. Accordingly, some example embodiments apply markups to both documents that are being compared (based on a single comparison there between). The markups may comprise any number of annotations that shows the changes between the two electronic documents. For example, the annotations may include additions, deletions, movements, etc. of data for one electronic document in comparison to a different electronic document. In some example embodiments, the changes in one markup are symmetrical to the changes in a second markup. Accordingly, for an annotation of a change for a first markup, there is a corresponding annotation of a change for the second markup. For example, if one markup includes an annotation of an addition of data, the second markup would include a corresponding annotation of the deletion of data. Thus, the markup entries in the two documents are complementary. In particular, the markup entry for the first document is a logical inversion of the markup entry for the second document. (e.g., deletion in the first document is an insertion in the second document).
In some example embodiments, the document comparison component 102, the documents, and the markups may be stored on a same or different machine-readable medium. Alternatively, all or some may be stored in different machine-readable media. For example, the electronic document A 104 and the electronic document B 106 may be stored in different machine-readable media on remote servers that are accessed by the document comparison component 102. The document comparison component 102 may then output the markup 108 and the markup 110 for storage on a local or remote machine-readable media. The document comparison component 102 may be software, hardware, firmware or a combination thereof for executing operations, according to some example embodiments.
The machine-readable media that store the data and components described above includes any mechanism which provides (e.g., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, a network device, a personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). In some example embodiments, the machine-readable media includes volatile and/or non-volatile media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.).
Operations, according to example embodiments, are now described. In certain embodiments, the operations are performed by instructions residing on machine-readable media (e.g., software), while in other embodiments, the methods are performed by hardware or other logic (e.g., digital logic).
At block 402, the document comparison component 102 receives the electronic document A 104 and the electronic document B 106. As described above, these documents may be received from local and/or remote machine-readable media. The method continues at block 404.
At block 404, the document comparison component 102 performs a comparison operations between the first electronic document A 104 and the second electronic document B 106. The document comparison component 102 may use any number of different types of comparison operations to determine the differences between electronic documents. In some example embodiments, the document comparison component 102 uses at least one of the comparison operations described in U.S. Pending patent application Ser. No. 12/033,505, titled “Determination of Differences between Electronic Documents”, inventor—Shawn A. Gaither, filed on Feb. 19, 2008, which is hereby incorporated by reference. The comparison operation outputs differences between the electronic documents, including additions, deletions, replacements, movement of data, etc. The method continues at block 406.
At block 406, the document comparison component 102 maps a first markup of the first electronic document that includes at least one annotation that identifies changes to the first electronic document relative to the second electronic document based on the comparison operation. The markup may include annotations of what changes (including additions, deletions, replacement, movement, etc.) to the data have occurred between the first electronic document and the second electronic document. In some example embodiments, this markup is from the perspective of the first electronic document. As further described below, in some example embodiments, the annotations in the multiple markups generated from this comparison operation are symmetrical relative to each other. In some example embodiments, symmetrical for two electronic documents is defined such that there is a one-to-one relationship between the annotations in the first electronic document and the annotations in the second electronic document. Accordingly, for an annotation of a change for a first markup, there is a corresponding annotation of a change for the second markup. For example, if one markup includes an annotation of an addition of data, the second markup would include a corresponding annotation of the deletion of data. Thus, the markup entries in the two documents are complementary. In particular, the markup entry for the first document is a logical inversion of the markup entry for the second document. (e.g., deletion in the first document is an insertion in the second document). Accordingly, some example embodiments enable the generation of multiple markups having symmetrical annotations from a single comparison operation. This enables reviewers of such markups to more easily and quickly review these multiple markups from different perspectives.
To illustrate,
An annotation 506 is a deletion of data. In particular, data from the second electronic document is not included in the first electronic document. Thus, the arrow for the change 506 denotes that the data “(3281)” from the second electronic document is not included in the first electronic document. An annotation 508 is also a deletion of data. The arrow for the annotation 508 denotes that the data “(3281, 3691)” from the second electronic document is not included in the first electronic document. An annotation 510 is also a deletion of data. The arrow for the annotation 510 denotes that the data “for ‘Send for Review’” from the second electronic document is not included in the first electronic document. An annotation 512 is a movement of data. In particular, data remains the same but changes locations within the two electronic documents. Returning to
At block 408, the document comparison component 102 maps a second markup of the second electronic document that includes at least one annotation that identifies changes to the second electronic document relative to the first electronic document based on the comparison operation. The markup may include annotations of what changes (including additions, deletions, replacement, movement, etc.) to the data have occurred between the first electronic document and the second electronic document. In some example embodiments, this markup is from the perspective of the second electronic document.
To illustrate,
An annotation 604 is also a replacement of data. In particular, the phrase “Email Application A and Email Application B” in the second electronic document replaces the term “major” in the first electronic document. The annotation 604 is also denoted by a box surrounding the data that is replaced. The annotation is symmetrical to the annotation 504. In particular, the annotation 604 matches the annotation 402, wherein the change in data between the two electronic documents is illustrated.
An annotation 606 is an addition of data. In particular, data has been added to the second electronic document that was not included in the first electronic document. The term “(3281)” has been added in the second electronic document. The annotation 606 is denoted as a box that includes the data. The annotation 606 matches the annotation 506 (shown as an arrow in
An annotation 608 is also an addition of data. In particular, data has been added to the second electronic document that was not included in the first electronic document. The term “(3281, 3691)” has been added in the second electronic document. The annotation 608 is denoted as a box that includes the data. The annotation 608 matches the annotation 508 (shown as an arrow in
An annotation 610 is a movement of data. In particular, data remains the same but changes locations within the two electronic documents. The annotation 610 is denoted as a box that includes the data. The annotation 610 matches the annotation 512 in
At block 410, the document comparison component 102 stores the first electronic document, the second electronic document, difference data (e.g., a list of differences), the first markup and the second markup into a machine-readable medium. In some example embodiments, the document comparison component 102 may store such data on the same or different machine-readable media and the same or different data file. In some example embodiments, the document comparison component 102 may embed or attach one electronic document into or onto the other electronic document. In some example embodiments, the document comparison component 102 may store the first electronic document, the second electronic document, the list of differences, the first markup and the second markup into a same data file to enable easier storage, transmission, etc. of such data. The method 400 is complete.
In some example embodiments, the user interface enables to easily switch the perspective of the comparison. In particular, the user interface enables an easy switch between showing markups from the perspective of the old document and showing markups from the perspective of the new document. In some example embodiments, a user may select a page preview button that causes a second window to be opened that is similar to the screen shot 700. This second window displays from the perspective of the second electronic document. Accordingly, thumbnails and the original page are for the second electronic document. Moreover, the markup is from the perspective of the second electronic document. Thus, the user can flip between documents or tile the windows for a side-by-side view. Accordingly, the user can see the results of the comparison operation played back from the perspective of both documents.
A detailed block diagram of an example computer environment, according to some embodiments, is now described. In particular,
As illustrated in
The memory unit 830 may store data and/or instructions, and may comprise any suitable memory, such as a dynamic random access memory (DRAM). The computer system 800 also includes IDE drive(s) 808 and/or other suitable storage devices. A graphics controller 804 controls the display of information on a display device 806, according to some embodiments of the invention.
The input/output controller hub (ICH) 824 provides an interface to I/O devices or peripheral components for the computer system 800. The ICH 824 may comprise any suitable interface controller to provide for any suitable communication link to the processor(s) 802, memory unit 830 and/or to any suitable device or component in communication with the ICH 824. For one embodiment of the invention, the ICH 824 provides suitable arbitration and buffering for each interface.
For some embodiments of the invention, the ICH 824 provides an interface to one or more suitable integrated drive electronics (IDE) drives 808, such as a hard disk drive (HDD) or compact disc read only memory (CD ROM) drive, or to suitable universal serial bus (USB) devices through one or more USB ports 810. For one embodiment, the ICH 824 also provides an interface to a keyboard 812, a mouse 814, a CD-ROM drive 818, one or more suitable devices through one or more Firewire ports 816. For one embodiment of the invention, the ICH 824 also provides a network interface 820 though which the computer system 800 can communicate with other computers and/or devices.
In some embodiments, the computer system 800 includes a machine-readable medium that stores a set of instructions (e.g., software) embodying any one, or all, of the methodologies for described herein. Furthermore, software may reside, completely or at least partially, within memory unit 830 and/or within the processor(s) 802.
In the description, numerous specific details such as logic implementations, opcodes, means to specify operands, resource partitioning/sharing/duplication implementations, types and interrelationships of system components, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that embodiments of the invention may be practiced without such specific details. In other instances, control structures, gate level circuits and full software instruction sequences have not been shown in detail in order not to obscure the embodiments of the invention. Those of ordinary skill in the art, with the included descriptions will be able to implement appropriate functionality without undue experimentation.
References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Embodiments of the invention include features, methods or processes that may be embodied within machine-executable instructions provided by a machine-readable medium. A machine-readable medium includes any mechanism which provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, a network device, a personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). In example embodiments, a machine-readable medium includes volatile and/or non-volatile media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.).
Such instructions are utilized to cause a general or special purpose processor, programmed with the instructions, to perform methods or processes of the embodiments of the invention. Alternatively, the features or operations of embodiments of the invention are performed by specific hardware components which contain hard-wired logic for performing the operations, or by any combination of programmed data processing components and specific hardware components. Embodiments of the invention include software, data processing hardware, data processing system-implemented methods, and various processing operations, further described herein.
In view of the wide variety of permutations to the embodiments described herein, this detailed description is intended to be illustrative only, and should not be taken as limiting the scope of the invention. What is claimed as the invention, therefore, is all such modifications as may come within the scope and spirit of the following claims and equivalents thereto. Therefore, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.