This disclosure relates generally to previewing documents, and in particular to viewing and editing comments in a document from a document preview.
Users store documents online where they may be accessible by many different users and by different devices. When users browse to view these documents, it is typically difficult to review or comment on a document unless the user downloads and accesses the document using a native application on the user's device. As examples, these native documents may include word processing documents, spreadsheets, presentations, and source code, which are typically modified by dedicated, full-service applications on a client device. In addition, when systems provide previews to a user of a document, the preview may often omit important aspects of the document, such as comments or other supplemental data about the document that are typically not directly reflected in the text or other content of the document.
A document preview system stores documents in their native format and provides previews of the native documents in a non-native form, such as in a web browser, to users accessing the document preview system. The document preview system permits users to view comments and other markups to the document at the correct location in the preview, and permits users to add and modify comments in the preview. These added and modified comments are inserted in the native document at the location highlighted by a user in the preview.
To correctly display and insert comments to the document, the document preview system identifies the location in the rendered preview that corresponds to portions of the native document. To identify these locations, the document preview system inserts a rendering marker associated with each native object in the native document. A native object is an object in the native application representing a particular piece of renderable content, such as a character, word, sentence, or paragraph. In one embodiment, each word is identified by the document preview system as a native object. The rendering marker is a unique marker that identifies the associated native object, and does not affect the display of the document when rendered. In one embodiment, the rendering marker is a hypertext link associated with each native object. The rendering marker is added to the native document for each native object. When the native document is rendered into a preview, the document preview system generates an identification of each rendering marker and a bounding area for the location at which the rendering marker appears in the preview. The bounding area indicates a page and pixel locations of the rendering marker. The rendering marker and bounding area are associated with the native objects in a mapping table. By identifying a bounding area for each rendering marker (and associated native object), the document preview system can identify a relationship between locations in the rendered preview and native objects in the native document.
When a client device requests a preview of a native document in a browser, the document preview system accesses the native document and obtains comments in the native document along with the native objects associated with the comments. The document preview system identifies the bounding areas of the native objects associated with each comment and combines them to identify a bounding area of the comment. The document preview system provides the preview for display by the client device and provides the comments and associated comment bounding areas to correctly place the comments in the user interface display of the client device. When a user interacts with the preview to add a comment, the user's selection of content is provided to the document preview system. The selection of content is analyzed to determine bounding areas of the user's selection, and matched with the bounding areas in the mapping table to identify the native objects designated by the selection. The added comment is inserted in the native document designating the native objects indicated by the user selection.
The figures depict various embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
Client Device 110 may be any suitable computing device for viewing and modifying documents stored at document preview system 100. Client devices 110 may also synchronize documents that are locally stored at client device 110 with document preview system 100. When documents are synchronized, changes or modifications to a document at client device 110 are transmitted to document preview system 100 and reflected in the document stored at document preview system 100 and vice versa. In some embodiments of document preview system 100 and the document preview techniques disclosed herein, documents are not synchronized. In other embodiments, features of document preview system 100 are performed at client device 110 to provide previews to other client devices 110, without a centralized document preview system 100. Examples of devices include desktop and laptop computers, hand-held mobile devices, tablet computers, and other computing devices. The operation of client device 110 in various embodiments is further described below.
Client devices 110 also execute various applications and other executable programs. As shown in
The native document application creates and modifies native documents on client device 110. Such native document applications include productivity applications such as word processing applications, spreadsheet applications, presentation applications, as well as other applications according to the type of native document modified by client device 110, such as a development platform for modifying source code. When client device 110 is synchronized with document preview system 100, modifications to the native document performed by the native document application are synchronized to document preview system 100.
Each client device 110 communicates with document preview system 100 through network 120. Network 120 is any suitable network and may include local networks, corporate networks, global networks, and any combination of these. In typical configurations, client devices 110 communicate via a wired or wireless communication network to a local network service provider, and communicate with document preview system 100 through the Internet. In certain configurations, client devices 110A and 110B communicate directly with one another without network 120 as indicated in
Document preview system 100 stores documents and provides document previews to client devices 110. Document preview system 100 provides a preview of a native document to permit an operator of client devices 110 to view the preview prior to accessing and modifying the native document. In the preview of the native document, the document preview system 100 provides comments present in the native document at the location of the comments in the native document and permit users to modify and add comments to the native document from a preview interface. The document preview system 100 stores modifications and additions to the comments in the native document, such that these modifications are viewable and modifiable by a native document application that accesses the native document.
Native document store 250 stores native documents. Mapping table store 260 maintains, for native documents in the native document store, a mapping table that associates native objects in the native document with a bounding area of the preview of a document. Preview store 270 stores generated previews of a native document.
Document manipulation interface 230 is an interface for manipulating and parsing native documents in native document store 250. In certain embodiments, the native documents are maintained in proprietary formats or otherwise difficult to directly manipulate. The document manipulation interface 230 provides an application programming interface for various modules to interact with the native documents 250. Document manipulation interface 230, for example, receives instructions to insert rendering markers, identify comments, and insert comments into a native document.
In embodiments where the native documents are synchronized with client devices 110, the synchronization module 240 manages this synchronization. When modifications are made to a native document in native document store 250, synchronization module 240 requests an update from document mapping module 200 to the previews of the document stored in preview store 270, and disseminates the modified document to the client devices 110 synchronized to the native document. The modifications to the native document may be performed by a user modifying a comment via the document preview module 220 or may be received from a client device 110 that has made a change to the native document.
Document mapping module 200 generates the mapping table for a native document. To generate the mapping table, the document mapping module analyzes the native document to identify native objects within the native document. The document mapping module applies a parser that interprets the formatting of the native document to identify the portions of a native document that are displayed to a user. For example, the parsing performed by document mapping module 200 may disregard font sizes, styles, and other formatting to identify the native objects, such as characters or words, within the document. In some embodiments the mapping module identifies certain formatting as a native object, for example a line or page break.
After identifying the native objects in a native document, the document mapping module 200 generates a rendering marker for each native object in the document. The rendering marker is a unique marker that identifies the associated native object and does not affect the display of the document when rendered. For example, a rendering marker in one embodiment is a hyperlink with a unique code for the native object it is applied to, and in another embodiment the rendering marker may be a flag, header, or special instruction applicable to document rendering module 210. The document mapping module inserts each rendering marker in the native document at the location of each native object.
Next, document mapping module 200 provides the native document to document rendering module 210 to be rendered into a preview. Document rendering module 210 generates previews of a native document by converting the native document into preview format, such as PDF document. When the document rendering module 210 performs the rendering, the document rendering module 210 also generates various metadata about the rendered document. This metadata includes an identification of bounding areas for each of the rendering markers in the native document. The bounding areas identify, on the rendered preview, the location of each rendering marker, for example by page and pixel range. The generated preview may be stored in the preview store 270 and the resulting metadata and bounding areas with associated rendering markers provided to document mapping module 200. Document mapping module 200 stores the bounding areas for each rendering marker in the mapping table for the native document. In one embodiment that uses hyperlinks as the rendering marker, the preview is generated as a PDF document and includes identification of the bounding areas for the hyperlinks (rendering markers) as an output of the document mapping module 200.
Returning to
Client device 110 may also provide the user with an interface to add a comment to the preview. The user selects a portion of the preview and adds a comment to the preview using the interface. When the comment is received, client device 110 provides the comment and selection to document preview module 220. Document preview module 220 identifies native objects corresponding to the comment by matching location information of the selection with native objects in the mapping table. The native objects that have matching bounding areas to the selection of comment area are selected as the native objects associated with the comment. To incorporate the comment, document preview module 220 provides document manipulation interface 230 with an identification of the native objects and the comment, and document manipulation interface 230 inserts the comment in the native document. The native document is updated by the addition of the comment and the synchronization module 240 propagates the change to any synchronized client devices 110. In this way, a user may modify or add a comment on a preview through a content browser, and the modification to the comment may appear in the native document application on another client device 110. This permits quick and easy review and modification of comments through the content browser interface without requiring a user to load a native document application, while permitting users of native document applications to see comments made by a content browser directly in the native document application.
When there are comments in the native document, document preview system 100 determines 440 which native objects are associated with the comment and the associated bounding areas from those native objects. Next, the comment location for the comment is determined by joining the bounding areas of the native objects associated with the comment. The native objects and comment locations are determined 440, 450 for each of the comments and the preview of the native document is provided 460 with the comments and associated comment locations.
In other embodiments, some of these steps may be performed prior to receipt of a request for a preview in order to reduce the processing performed between a request and display of a preview. These steps may be performed, for example, on a periodic basis (e.g., once per day), or in response to a modification of the native document. For example, the unique rendering markers are inserted, a preview generated, and bounding areas for comments may be identified prior to the request for the preview.
Client device 110 may also provide a user's request to add a comment to the native document, which is received 470 by document preview system 100. Document preview system 100 identifies 480 native objects corresponding to the request by identifying the bounding areas of the native objects that match the selected location in the preview in the request to add a comment. Using the identified native objects, document preview system 100 inserts 490 the comment in the native document at the native objects identified for the request.
In one embodiment, document rendering module 200 creates a copy of the native document when inserting the rendering markers and the document preview to determining bounding areas associated with the rendering markers. In this embodiment, the original native document is not altered in identifying the bounding areas associated with the native objects. In this embodiment, two previews may be generated, one preview that incorporates the rendering markers to generate the bounding areas for the native objects, and one preview that is based on the unmodified native document. In this embodiment, the original native document is not modified by the identification of bounding areas. In another embodiment, document preview system 100 removes the rendering objects from the native document prior to synchronizing the native document with client devices 110 or otherwise permitting users to retrieve the native document.
The foregoing description of the embodiments of the invention has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure.
Some portions of this description describe the embodiments of the invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof.
Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.
Embodiments of the invention may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory, tangible computer readable storage medium, or any type of media suitable for storing electronic instructions, which may be coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
Embodiments of the invention may also relate to a product that is produced by a computing process described herein. Such a product may comprise information resulting from a computing process, where the information is stored on a non-transitory, tangible computer readable storage medium and may include any embodiment of a computer program product or other data combination described herein.
Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the invention be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments of the invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
This application is a continuation of U.S. application Ser. No. 14/523,756, filed Oct. 24, 2014, which is incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 14523756 | Oct 2014 | US |
Child | 15389331 | US |