Systems and methods for editing a file in a non-native application using an application engine

By selecting an engine to handle the native format of a file within a non-native application, the method allows for data preservation and seamless editing, addressing the issue of data loss in cross-format file editing.

DE112015002695B4Active Publication Date: 2025-11-13GOOGLE LLC
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
DE112015002695
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2014-11-24
Filing Date
2015-11-20
Publication Date
2025-11-13
Estimated Expiration
2035-11-20

AI Technical Summary

Technical Problem

Existing applications often lose data when editing files created in a different format due to unsupported features, leading to incomplete file saving and editing issues.

Method used

A processor selects an engine configured to handle the file's native format, allowing the file to be edited and saved without conversion, using a non-native application by rendering and processing features supported by the engine while preserving unsupported features.

Benefits of technology

Enables data preservation and seamless editing of files across different formats, preventing data loss and ensuring all features are retained during file manipulation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A computer-implemented method for editing documents in a native format, wherein the method comprises: Receiving a request from a user to open a file created in a first format using a second application, on a processor (105, 406) running a first application (130, 431); Determining the initial file format; Selecting one engine from several engines (135a-n, 436a-n) assigned to the first application (130, 431), wherein the selected engine is configured to process the first format; Opening the file using the selected engine in the first application (130, 431) without converting the file's format to a second format associated with the first application (130, 431); Rendering the contents of the file for display on a user device (100, 401) for the user by the selected engine in the first application (130, 431); Determine that the selected engine is configured to edit a feature of the file; Rendering the feature for display on the user device (100, 401) for the user by the selected engine in the first application (130, 431); Processing an edit to the rendered feature in the first format using the selected engine in the first application (130, 431); and Saving the edited feature to the file using the first application (130, 431) in the first format in a database (120, 435, 500); where: the first format is a native format of the second application, and the first format is a non-native format for the first application (130, 431).
Need to check novelty before this filing date? Find Prior Art

Description

Field of invention

[0001] In general, this disclosure refers to accessing a file using an application different from the application used to create the file. background

[0002] Generally, an application has its own associated native file format, which specifies the encoding of the features the application supports. Typically, applications only load those features supported by the application's native format. Any features not supported by the application's native format will encounter problems during loading or will be loaded incorrectly. Thus, using one software application to edit and back up a file created with another software application often results in data loss if the file and file format have features not supported by the application. One way this can be handled is for the application to convert the file to a different format—its native format.When the application saves the file, only the loaded features are saved, meaning any unsupported features are not saved. This data loss can cause problems if a file is edited by multiple users or by one user with multiple applications.

[0003] US 2005 / 0187756A1 discloses a translucent cover for a device, comprising: a cover element made of translucent material; and a connecting element connected to the cover element.

[0004] US 2012 / 0331377A1 reveals: Parts of the content are converted into parts of the rendered content.

[0005] US 2010 / 0235765A1 discloses a system by which a computer user can view or listen to selected media objects such as videos, podcasts, or internet radio that are located in the document object model of a website.

[0006] US 2013 / 0282755A1 discloses techniques for mapping file types to applications in a network storage service.

[0007] US 8 099 445 B1 discloses methods and devices, including computer program products, that implement techniques for selecting an application to be used for processing a file in a computer environment.

[0008] US 2014 / 0344247A1 discloses systems and methods for identifying applicable third-party applications for association with a file.

[0009] WO 2011 / 130 307 A1 discloses a computer-implemented method for coordinating documents between computer systems.

[0010] WO 2012 / 128 950 A1 reveals: Data defining a document is received from an online document processing service, and a variety of elements within the document are identified. Summary

[0011] The problem according to the invention is solved by a method according to claim 1 and a system according to claim 11. Advantageous embodiments are defined in the dependent claims.

[0012] Accordingly, systems and procedures are described here for providing file access and use with a non-native application with multiple engines. In certain aspects, the systems and procedures described here relate to editing a document in a native format using a non-native application. A processor running a first application receives a request from a user to open a file created in a first format using a second application. The processor can determine the first format of the file. The processor can select one engine from among several associated with the first application, with the selected engine being configured to edit the first format.The processor can open the file using the selected engine in the first application without converting the file's format to a second format associated with the first application. The processor can cause the selected engine in the first application to render the file's contents for display on a user device. The processor can cause the selected engine in the first application to process edits to the file in the first format. The processor can then save the edited file to a database using the first application in the first format. In some implementations, the processor can present a user interface to the user that includes feature editing tools from the selected engine.

[0013] In some implementations, the processor can determine that the selected engine is configured to edit a feature of the file. The processor can then instruct the selected engine in the first application to render the feature for display on a user device. The processor can then instruct the selected engine in the first application to process an edit to the rendered feature in the first format. Finally, the processor can save the edited feature to a database in the first format using the first application.

[0014] In some implementations, the processor can determine that the selected engine is not configured to process the first feature of the file. The processor can then instruct the selected engine in the first application to render the first feature for display on a user device. The processor can then prevent the user from modifying the first feature. The processor can then determine that the selected engine is configured to process the second feature of the file. The processor can then instruct the selected engine in the first application to render the second feature for display on a user device. The processor can then instruct the selected engine in the first application to handle any modifications to the second feature in the first format.The processor can then save the edited second feature in the file to the database using the first application in the first format.

[0015] In some implementations, the processor can cause the selected engine to arrange data corresponding to the first feature in a node of a document object model and assign the property to the node that the selected engine is not configured to process the first feature. The processor can then save the arranged data to the database in the first format using the first application.

[0016] In some implementations, the processor can determine that the selected engine is not configured to render a feature of the file. The processor can then arrange data corresponding to the feature in a node of the document object model and assign the property to the node indicating that the selected engine is not configured to render the first feature. The processor can then save the arranged data in the file to the database using the first application in the first format.

[0017] In some implementations, the file can be stored on a server remote from the user. In some implementations, the processor can determine the initial format in a database, determine that an engine is associated with the initial format, and select the associated engine to choose a processing engine. To determine the initial format of the file, in some implementations, the processor can read a section of the file, extract a file type from the read section, and determine the initial format of the file based on the extracted file type.

[0018] In some implementations, the processor can determine that multiple engines are associated with the file format. The processor can then present the user with several names, each corresponding to one of the multiple engines. The processor can then receive a selected name from the user and choose the engine associated with that name. In some implementations, the processor can also save the file in a third format. Brief description of the drawings

[0019] The above and other features of the present revelation, including its nature and various advantages, become clearer when considering the following detailed description together with the accompanying drawings, in which: Fig. 1. A block diagram of a user device in accordance with an illustrative implementation; Fig. 2. A user interface of an application that runs an engine configured to edit a word processing document, shown in accordance with an illustrative implementation; Fig. 3. A user interface of an application that runs an engine configured to edit a spreadsheet document, shown in accordance with an illustrative implementation; Fig. 4. A block diagram of a user device communicating with a server over a network in accordance with an illustrative implementation; Fig. 5. A block diagram of a database containing mappings of engines to file formats, in accordance with an illustrative implementation; Fig. 6. A block diagram of a document object model in accordance with an illustrative implementation; Fig. 7. A flowchart of a procedure by which an application starts an engine configured to process the format of a requested file, in accordance with an illustrative implementation; Fig. 8A-8B shows a flowchart of a procedure by which an engine reads data from a file, arranges data into nodes of a document object model, and processes edits made to the document, in accordance with an illustrative implementation; Fig. 9 a flowchart of a procedure by which an engine creates a file in a format specified by a user, in accordance with an illustrative implementation; Fig. 10. A block diagram of a cloud computing service in accordance with an illustrative implementation; and Fig. 11 is a block diagram of a computer device for performing any of the processes described herein in accordance with an illustrative implementation. Detailed description

[0020] To provide a complete understanding of the disclosure, certain illustrative implementations, including a system for manipulating files in a native format, are now described. Specifically, a system is described in which files in a native format can be manipulated with a non-native application, or with an application other than the one that created the file. However, the average person skilled in the art understands that the systems and procedures described here can be adapted and modified as needed for the application under consideration, and that the systems and procedures described here can be used in other suitable applications, and that such other additions and modifications do not alter their scope of protection.In general, the computer systems described herein may comprise one or more components that include one or more processing devices such as a computer, a microprocessor, a logic device, or any other device or processor configured with hardware, firmware, and software to perform one of the computer procedures described herein.

[0021] Fig. 1 represents a user device 100 that can be used to edit a document in a native format. The user device 100 may include a processor 105, a display 110, a user input device 115, and one or more databases 120 containing one or more files 125, e.g., files 125a-125n. The user device 100 may also include one or more applications 130, e.g., applications 130a-130n. A processor may specify one or more computers, microprocessors, logic devices, servers, or other devices configured with hardware, firmware, and software to perform one or more of the computer-based techniques described herein. Processors and processing devices may also include one or more storage devices for storing inputs, outputs, and data currently being processed.Each user device 100 can include a device such as a personal computer, a laptop computer, a tablet, a smartphone, a personal digital assistant or any other suitable type of computer or communication device.

[0022] An example file 125a can have a file format that determines how information in the file is encoded in bits in memory and, furthermore, how that information is decoded from memory and presented to a user. Generally speaking, a file has a file format based on the application used to create the file, such as the application's native file format. File formats can be simple or complex. A simple file format is the American Standard Code for Information Interchange (ASCII), which encodes plain text and some simple characters. An example of a complex file format is the format used to encode information in a word-processing document. A word-processing format might be, for example,The encoding methods for fonts, font sizes, font styles, font colors, tabs, paragraphs, selected lists, numbered lists, tables, text wrapping, text alignment, text highlighting, line spacing, page breaks, page size, margins, columns, headers, footers, footnotes, endnotes, cross-references, tables of contents, indexes, and embedded content such as images and video are specified. A spreadsheet format is also complex and can specify the encoding method for cell content, formula operations, fonts, font sizes, font styles, font colors, cell margins, cell colors, and charts.A presentation format is also complex and can include the encoding procedure for fonts, font sizes, font styles, font colors, text boxes, shapes, slide size, the position and arrangement of elements within a slide, slide order, slide transitions, animations, and embedded content such as images, video, and spreadsheets. File formats can include other formats. For example, word processing, spreadsheet, and presentation formats may all include the ASCII format for encoding text, but they may use additional encoding procedures specific to the format to encode features other than text. A file containing a document may be encoded in accordance with a format appropriate for the document.A file can be a word processing document, a spreadsheet document, a presentation document, a drawing document, a database document, a hypertext markup language document (HTML document), an extensible markup language document (XML document), an image document, a text document, or any other document containing user data. When a file is opened and edited, an application uses the file's format to decode the bits stored in memory and display the decoded information to a user.

[0023] In one example, the application 130 can be a browser extension, which is an application designed to complement the functionality of a browser application. The application 130 contains several engines 135, each configured to handle one or more file formats. A user of the user device 100 can provide input to the application 130 via the user input device 115 to open a file 125a. In one example, the input might be the user dragging and dropping a file icon into a browser window. In another example, the user might open a file attached to an email accessed using a browser to communicate with a web-based email service. In yet another example, the user might open a file attached to an email accessed using a desktop email application.In another example, the user can use a browser to navigate to a web-based collaborative document hosting service and open a file hosted in the service. In another example, a user can interact with the user interface of an application to open a file using the application. These examples are illustrative, and a user can provide a different type of input to open a file without infringing upon the scope of protection of the invention. Regardless of the form of input, the application 130 can determine the format of the file 125a using one of several methods when the input is received. In one example, the application 130 can determine the file format based on the file extension of the file 125a. In another example, the application 130 can use initial block information of the file 125a to determine the format.In this example, application 130 can read a portion of the initial block information from file 125a. Application 130 can then interpret the read portion of the initial block to determine the file's format. Application 130 can perform this determination based on a string contained in the initial block that specifies the file type. An example of a file type is a Multipurpose Internet Mail Extensions (MIME) type. Based on the determined file format, application 130 can select an engine 135a configured to process the specified format of file 125a. An engine configured to process a format is configured to read data from memory and write data to memory, with the data encoded according to the format.An engine configured to process a format does not need to fully support the format; thus, the engine can be configured to read only a subset of a file encoded in accordance with the format. Furthermore, an engine configured to process a format can be configured to write data using only a subset of the format's encoding methods. Application 130 can then launch the selected engine 135a, which opens, displays, and allows editing of file 125a.

[0024] When an Engine 135a opens a document contained in a file 125a, the Engine 135a decodes the data in the file 125a in accordance with the file's native format and renders the document contained in the decoded data for display to a user. Rendering the document may involve transforming data in the file 125a into a two-dimensional image for display on a user device 100 via a display 110. The user can view the rendered document and can provide user input to modify the document via the user input device 115. Modifying a document may include adding or deleting text, changing text styles, inserting images and other media, or performing other document editing operations. The user can save the rendered document in the file 125a, with the Engine 135a saving the document, for example, to a file.The engine can save the document in file 125a in accordance with the native format of file 125a. By saving in the native format, engine 135a prevents data loss due to format conversion. Engine 135a can automatically save the document to file 125a at predefined intervals without user input. Such automatic backup reduces data loss due to a malfunction of the user device 100 or the application 130. If the user device 100 or the application 130 malfunctions, application 130 can provide a crash recovery dialog to the user via specification 110.Such a crash recovery dialog can include a summary of the error, a view of the last edited document at the page location immediately before the error, and status information including previously open palettes and dialogs, allowing the user to specify a course of action for resolving any conflicts arising from the error. By using the appropriate engine 135a to edit a file 125a, the application 130 provides the user with document editing capability without data loss due to conversion between formats.

[0025] Application 130 can provide file management capability for a user. When an Engine 135a is started and processes a document, Engine 135a can receive user input to save the document to a different file in Database 120. In one example, Engine 135a can save the file in the same format as the original file 125a, but in a different location, such as file 125b. In another example, Engine 135a can receive user input to rename file 125a. In this example, Engine 135a changes the filename of file 125a. In this example, the content of file 125a can remain unchanged or be updated to reflect updates in the document associated with file 125a. In some examples, Application 130 receives user input to rename file 125a and changes the filename of file 125a.In another example, Engine 135a can receive user input to attach the modified file 125a to an email. In this example, the email to which the modified file 125a is attached can be a reply to another user who originally created the document. This allows a receiving user to use Application 130 to open a document received in an email from a sending user, modify the received document, and send the modified document back to the sending user, even if the receiving user does not have the application used by the sending user to originally create the document. Alternatively, the email to which the modified file 125a is attached can be not a reply email, but rather a new email, such as a new email to another user.In this example, the modified file 125a can be cached locally on user device 100 and also on server device 420. This file management capability can be combined with other capabilities described here. By providing capabilities for renaming and saving new files, the application 130 enables a user to manage files on a user device 100.

[0026] Application 130 can provide a file format conversion capability for a user. When an Engine 135a is started and processes a document, Engine 135a can receive user input to save the document in a different format in Database 120. For example, Engine 135a can save the file in a different format than the original file 125a and in a different location, such as File 125b. This file format conversion capability can be combined with other capabilities described here. By providing the ability to save in a different format, Application 130 enables a user to convert a file from one format to another.

[0027] In some examples, multiple engines are chained together to convert a file from one format to another. In these examples, application 130 causes two or more engines 135 to convert files sequentially to achieve the desired format. For example, engine 135a can convert the file from the format of 125a to the format of 125b and can then start another engine, such as 135b, open file 125b, and save the data in a different format to another file, 125c. This chaining can be repeated as many times as necessary to arrive at a file with the desired format.

[0028] Application 130 can provide file creation capability for a user. For example, Application 130 can receive user input to create a file and, upon receiving the input, display one or more file formats to the user. The displayed file formats can be formats associated with Application 130's Engines 135. Application 130 can receive a user selection of one of the displayed file formats and launch an Engine 135a associated with the selected file format. Once the appropriate Engine 135a has been launched, the user can then modify the document and save it as a file 125a. A user can choose to create a file in a given format when creating a document to send to other users. In this situation, the user can select a format compatible with applications that the recipients can use to open and edit the file.This file creation capability can be combined with other capabilities described here. In this way, the application provides the user with the ability to create a file in a given format.

[0029] Application 130 can receive a request to open a file 125a designated as read-only. Such a read-only designation can specify that the file 125a can be opened and viewed, but not modified. For example, as described here, Application 130 can select the appropriate engine 135a and start the selected engine 135a in read-only mode. In read-only mode, Engine 135a can open the contents of file 125a and render it for display on a display 110, but prevent any modifications to the file 125a. Engine 135a can allow a user to edit the rendered document as described here, but can save the updated document in a different file 125b. Application 130 can create, open, natively edit, and save documents in various file locations and formats.This read-only capability can be combined with other capabilities described here. Because the application provides multiple engines, each configured to handle one or more file formats, it can natively handle multiple file formats, as described here.

[0030] Fig. Figure 2 presents an example of a user interface 200 of the application 130. In this example, file 125a contains a word processing document 205, and engine 135a is configured to process the format of file 125a. The user interface 200 can be provided in a browser 210. The browser 210 can have one or more tabs 215, which allow the selection of a document 205 to be displayed from among several open documents or web pages. The interface 200 can include icons 220 to indicate the engine in use. The text 225 of document 205 is displayed in the center of the user interface 200. In some examples, the text 225 is not in the center but rather in a different area of ​​the user interface 200. In one example, some or all of the features associated with text 225 may not be supported by engine 135a.In this example, the unsupported features may not display correctly or at all. However, Engine 135a retains the unsupported features when it saves file 125a, so the features remain available to another application or engine that can support them. To ensure that such features are preserved, Engine 135a does not allow editing of unsupported features in this example.

[0031] The user interface 200 contains tools 230 for editing document characteristics 205. For example, tool 230a allows the user to select the font in which the text 225 is displayed. Tool 230b allows the user to select the font size. Tools 230c-e allow the user to select the font style. Tool 230f allows the user to select the font color. Tools 230g-i allow the user to select the text alignment. The list tool 230j allows the user to create and edit numbered lists. The list tool 230k allows the user to create and edit selected lists. The print tool 235 allows the document to be printed. The undo tool 240 allows the user to revert recent changes made to the document. These and other tools may also be available in menus 245.The document title 250 can display the document name. The feature editing tools 230, displayed by application 130 when using engine 135a, can only be those tools that correspond to features of the file format supported by engine 135a. Thus, application 130 may allow editing of fewer than all of the features contained in file 125a. Another engine 135b may be configured to edit a different file format for a similar document type. When application 130 uses engine 135b, it may display a different set of tools in user interface 210 than application 130 displays when using engine 135a. User interface 200 is shown for illustrative purposes, but other configurations of the interface may provide similar functionality.By providing the user with feature editing tools 230 that correspond to the features of the file format that the engine 135a is configured to edit, the application 130 enables the editing of only those features that the engine used supports.

[0032] Fig. Figure 3 presents an example of a user interface 300 of the application 130. In this example, file 125a contains a spreadsheet document 305, and engine 135a is configured to edit the format of file 125a. The user interface 300 can be provided in a browser 310. The browser 310 can have one or more tabs 315, which allow the selection of a spreadsheet 305 to be displayed from among several open documents or web pages. The user interface 300 can include icons 320 to indicate the engine in use. The cells 325 of the spreadsheet 305 are displayed in the center of the user interface 300. Certain cells 355 can contain data. The formula bar 360 can display a formula contained in a cell. For example, the selected cell 365 contains the formula "=B9-C9". Data in the spreadsheet 305 can be visualized with a chart 370.Chart 370 can contain references to data in cells 355. If data in cells 355 is updated, chart 370 can be automatically updated using these references. In one example, some or all of the features associated with chart 370 may not be supported by Engine 135a. In this example, the unsupported features may not display correctly or at all. However, Engine 135a retains the unsupported features when it saves file 125a, so the features remain available to another application or engine that can support them. In this example, Engine 135a does not allow editing of unsupported features to ensure that such features are preserved.

[0033] The user interface 300 contains tools 330 for editing spreadsheet characteristics 305. For example, tool 330a allows you to select the font in which cell text 355a is displayed. Tool 330b allows you to select the font size. Tools 330c-e allow you to select the font style. Tool 330f allows you to select the font color. Tool 330g allows you to select the cell background color. Tool 330h allows you to select the text alignment. Using the undo tool 340a, recent user changes made to the spreadsheet can be reversed. These and other tools may also be available in menus 345.The feature editing tools 330 displayed by Application 130 when Engine 135a is used can only be those tools that correspond to features of the file format supported by Engine 135a. Thus, Application 130 may allow editing of fewer than all the features contained in File 125a. Another Engine 135b may be configured to edit a different file format for a similar document type. When Engine 135b is used, Application 130 may display a different set of tools in User Interface 310 than it displays when Engine 135a is used. User Interface 300 is shown for illustrative purposes, but other configurations of the interface may provide similar functionality.By providing the user with feature editing tools 330, which correspond to the features of the file format that the engine 135a is configured to edit, the application 130 makes it possible to edit only the features that the engine used supports.

[0034] Application 130 can edit document types other than those found in... Fig. 3 word processing documents shown and the example in Fig. The 4 shown spreadsheet documents are supported. Application 130 can support the editing of presentation documents, drawing documents, database documents, HTML documents, XML documents, image documents, text documents, or any other document containing user data. Application 130 can provide Engines 135 configured to process any or all of the file formats associated with such document types.

[0035] In an offline configuration, an Engine 135a can process a document 125a without communicating with any devices other than the user device 100. In an online configuration, an Engine 135a can process a document 125a while the user device 100 is communicating with other devices or a server. The Application 130 and the Engines 135 can operate in accordance with both the offline and online configurations. For example, the Application 130 can operate in accordance with the offline configuration when a network connection is unavailable and switch to the online configuration when a network connection becomes available. The ability to switch between online and offline configurations provides, for example, greater access to documents for users of mobile devices.

[0036] Fig. Figure 4 represents a system 400 that enables a user device 401 to communicate with a server 420 over a network 415. The user device 401 can have a network interface 410 configured to act as an intermediary between the network 415 and the user device 401. The server 420 can have a network interface 430 configured to act as an intermediary between the network 415 and the server 420. Multiple user devices similar to 401 can communicate with the server 420 in the same way that the user device 401 communicates with the server 420. For clarity, in Fig. Figure 4 shows only user device 401. User devices 100 and 401 can perform similar functions and have similar features. For example, features 406, 41, 416, 421, 426a-n, 431, and 436a-n of user device 401 can perform similar functions to features 105, 110, 115, 120, 125a-n, 130, and 135a-n of user device 100.

[0037] In one implementation, server 402 can act as a web-based data storage system by hosting files and allowing users to save, read, and modify data. The user can edit file 440 located on server 420. Application 431 can read and access file 440 by communicating with server 420 via network 415 and network interfaces 410 and 430. Application 431 can back up file 440 to a database 435 located on server 420. To improve performance, for example, in the presence of a slow network connection 415 or an intermediary network connection 415, application 431 can optionally keep file 125a as a local copy of file 440 on the user device 401.In this way, if the network connection 415 is interrupted, causing the user device 401 to enter an offline state, application 431 can continue to receive input from the user and update file 125a accordingly. Application 431 can then send such updates to server 420 when the network connection 415 is re-established and the user device 401 returns to an online state. System 400 can also allow a user to use application 431 to edit a file 440 located on server 420.

[0038] In another implementation, the Server 420 can act as an email server by sending emails and storing files attached to the sent emails. In yet another implementation, the server can act both as a web-based storage system and as an email server as described here.

[0039] In an arrangement, the system 400 can enable a file 426a stored on a user device 401 to be synchronized with another file 440 stored on a server 420 via a network 415. The user interface 401 can include a sync client 405. The file 440 on the server 420 can be edited by a different user or by the same user on a different user device. In this situation, the remote file 440 can be modified, for example, by another user. The server can send changes corresponding to the modified file 440 to the user device 401. The sync client can update the file 426a based on the sent changes. In this way, the file 426a on the user device 401 can be synchronized with the remote file 440 on the server 420. In this arrangement, application 431 can read and access file 426a by communicating with database 421.Application 431 can save changes to file 426a in database 421. Sync client 405 can detect changes made to file 426a on user device 401 and send the changes to server 420 via network 415. Sync client 405 can operate while application 431 is editing file 426a. Such an operation can involve either sending local changes to file 426a to server 420; receiving changes from server 420 and updating the local file 426a; or both. This arrangement can be combined with other arrangements and implementations described here. By synchronizing file 426a on user device 401 with file 440 on server 420, the user can edit a document on multiple devices and collaborate with other users.

[0040] In some examples, application 431 can reside on server 420 and communicate with the user device via network 415. Application 431 can open and edit either a file 426a stored on the local device 401 or a file 440 stored on server 420. Application 431 can use the server's processor 425 to render the contents of file 426a or file 440 for display on user device 401 via display 411, and can send this render to user device 401 via network 415. Using network 415 to communicate between server 420 and user device 401, the system allows a user to edit a document regardless of whether application 431 is installed on user device 401.

[0041] Access control can be provided for either file 426a, file 440, or both. Server 420, or an application running on it, can provide access control for file 440 stored on server 420. An application running on user device 401, such as the Sync Client 405, can provide access control for file 426a stored on user device 401. Alternatively, server 420, or an application running on it, can provide access control for file 426a stored on local device 401 by communicating over the network 415. File access control can include a requirement that a user authenticate the file before opening, editing, or saving it.Furthermore, access control for file 426a or file 440 may involve communication over network 415 with a server other than server 420, such as an authentication server. A user can authenticate by entering a username and password (or providing other identifying information) through a user interface, allowing the same user device to be used by different users at different times. Users may be granted different levels of access to a file. For example, a user may have read-only access to a file, allowing them to open and view the file but not edit or save it. Alternatively, a user may have read-write access to a file, allowing them to open, edit, and save it.A user can be designated as the owner of a file and can grant other users access to it. Access can be granted to individual users or to groups of users. An access control list (ACL) associated with the file can determine the access rights of users attempting to access the file. By providing access control for files, the system enables enhanced security.

[0042] Fig. 5 represents a database 500 containing entries 500 that map file format names 510 to engine names 515 configured to process those formats. Database 500 can reside on user device 100 or server 420. An entry 505 can also contain one or more file types 515 mapped to the format name 510. An example of a file type is a MIME type. An entry 505 can contain one format name 510 and multiple mapped engine names 520. Alternatively, an entry 505 can contain multiple format names 510 and one mapped engine name 520. Alternatively, an entry 505 can contain multiple format names 510 and multiple mapped engine names 520. In an example, database 500 can be queried by format name. In this example, the results of a query can include all entries containing the queried format name.In another example, database 500 can be queried by file type. In this example, the results of a query can include all entries containing the queried file type. In a third example, database 500 can be queried by engine name. In this example, the results of a query can include all entries containing the queried engine name. Thus, these entries provide mappings of file formats to processing engines. By mapping file formats to processing engines, database 500 allows the selection of an engine configured to process the format of a file.

[0043] Fig. Figure 6 schematically illustrates a document object model (DOM) 600 used by an engine 135a when viewing or editing a document file. A document file can refer to a file containing a word processing document, a spreadsheet document, a presentation document, a drawing document, a database document, an HTML document, an XML document, an image document, a text document, or any other document file containing user data. In the DOM, document objects 605 are arranged as nodes in a hierarchy. An object can be a feature of the file. A node can have one or more nodes below it in the hierarchy, and a node can have one or more nodes above it in the hierarchy. For example, node 615 has node 620 below it and node 610 above it. Similarly, nodes can be at the same level in the hierarchy.For example, nodes 630, 640, and 650 can be at the same level in the hierarchy. In one example, a Model-View-Controller (MVC) implementation is used to create and manipulate DOM 600 and to display its contents to a user. In this example, the MVC's model section parses a file and arranges sections of the file, corresponding to objects in document 605, into nodes of DOM 600. For example, a paragraph might be located in node 650 of the DOM, and a sentence within the paragraph might be located in node 655. One word of the sentence might be located in node 660, and another word might be located in node 665. Another sentence of the paragraph might be located in node 670, with its words located in nodes 675 and 680. For clarity, the above and in the following are shown. Fig. In example 6, only two sentence nodes and four word nodes are described, but a paragraph can have any number of sentences and corresponding sentence nodes, and a sentence can have any number of words and corresponding word nodes. In another example, a table can be located in node 650 of DOM 600, with table row elements located in nodes 655 and 670. The content of each cell in the table rows can be located in nodes 660, 665, 675, and 680, respectively. Tables can have any number of rows and row nodes, and rows can have any number of cell nodes, but for clarity, two row nodes and four cell nodes are described here. In yet another example, tables can be located in DOM 660 with columns as the primary index.In this example, nodes 655 and 670 correspond to columns of the table, and nodes 660, 665, 675, and 680 correspond to the content of each cell in the table columns. For example, node 610 might contain initial block information of the document. Node 615 might contain a sentence of the initial block, and node 620 might contain a word of the initial block. For clarity, node 610 has only one child node, 615, which itself has only one child node, 620. As shown, the DOM 600 has four hierarchy levels. However, any node in a DOM can have any number of child nodes, and a DOM can have any number of hierarchy levels.

[0044] After the model section creates the DOM 600 and arranges content in its nodes, the viewer section of an MVC can traverse the DOM 600 node by node and render some or all of the objects contained within the nodes. The viewer section can be a rendering engine and can be a component of an Engine 135a. As the viewer section traverses each node of the DOM 600, it renders the node's content if configured to do so. The viewer section can use hard-coded logic to decode or parse the content of each node as it detects the node during traversal. If the hard-coded logic is configured to decode or parse the node's content, the viewer section renders the node's content for display to a user.If the hard-coded logic is not configured to decode or parse the node's contents, the viewing section will not render the node's contents and will proceed to another node. For example, the viewing section might be traversing DOM 600 concurrently with the modeling section creating or updating DOM 600.

[0045] The controller section of an MVC can interact with the viewer section and the model section of the MVC to enable editing of the document 605 represented by the DOM 600. The controller section can be a component of the engine 135a. When a user provides editing input, the controller receives the input, determines the node in the DOM 600 that corresponds to the input, and updates the corresponding node. The controller then instructs the viewer section of the MVC to render the updated node. The update to the DOM 600 must be validated for correctness. This validation can occur before or after the viewer section renders the updated node. In one example, the controller can perform an optimistic update of the DOM 600.In this example, the controller section sends the update for immediate rendering directly to the viewer section, which then updates and validates DOM 600 asynchronously. If the validation is successful, no further action is taken regarding the update. If the validation fails, the update to DOM 600 is reversed, and the viewer section renders DOM 600 as it existed before the update. This optimistic update provides faster display of user edits.

[0046] In one example, Engine 135a might not be configured to edit all nodes of DOM 600. In this example, a user can provide input to edit a feature of document 605 corresponding to a node in DOM 600 that Engine 135a is configured to edit. This can only occur if the MVC viewer is configured to render the node. The MVC controller can receive the user input but cannot modify the node if it determines that the controller is not configured to edit the node. Optionally, Engine 135a can inform the user that the requested feature cannot be edited. In some examples, the viewer might render the node's content incorrectly if the viewer is configured to render the node, but Engine 135a is not configured to edit the node.Since the controller section does not process such nodes, the original content of these nodes is retained. This allows a subsequent application or engine that fully supports the feature contained in that node to render and process the original, unmodified content of the nodes without any data loss.

[0047] When document 605 is saved, Engine 135a can use the DOM hierarchy 600 to save it in accordance with the format of document 605. In one example, the nodes of DOM 600 may contain data already encoded in the format of the file that originally contained document 605. In this example, the data contained in the nodes of DOM 600 is not modified or converted to a different format before saving. In another example, Engine 135a can encode supported features and their corresponding nodes of DOM 600 in accordance with the format of document 605. In this example, the nodes of DOM 600 have features that Engine 135a is not configured to render or edit, and they contain data encoded in accordance with the original format of the file, which is not further encoded before saving.If nodes that are not configured to be rendered or edited by Engine 135a were reformatted, some or all of the data in those nodes would be lost because Engine 135a is not configured to correctly decode the node's format. Furthermore, the nodes' data would also be lost if they were simply discarded during saving. By preserving the format of nodes with features that Engine 135a is not configured to render or edit, unsupported features of the original file are retained while other features are edited.

[0048] Fig. Figure 7 presents a flowchart (700) of a procedure for selecting an engine to start when a requested file is opened. A user can input a request to open a file of a specific file type on a client device. The request is received by an application, such as Application 130, which occurs, for example, in Step 705. The request may contain a file identifier associated with the file to be opened. In Step 710, a processor running Application 130 determines the location of the requested file based on information contained in the request. The requested file may be located on the user device (100), on a server (420), or elsewhere. The location may be determined by checking a file index in a database or in memory. In Step 715, the application determines the format of the requested file.The application can determine the format based on a file extension, initial block information, or other information associated with the file. If the file extension is used to determine the format, the application can use the file extension of either the requested file, the found file, or both. If initial block information is used to determine the format, the application can read a portion of the initial block of the found file and extract a string from the initial block that specifies the file type. The file type string can be a MIME type string. In some examples, both initial block information and file extension information can be used to determine a file's format. If both determinations provide similar information about the file's format, the likelihood of the determinations being correct is increased.If, however, the specifications provide different format requirements, a conflict arises. Such a conflict can occur if a user has changed a file extension to a different one.

[0049] In decision block 720, application 130 queries database 500 to determine if an engine configured to open and edit the file is associated with the application. Application 130 determines whether any entries in database 500 contain the format of the located file. If no entries in the database contain the format of the located file, the procedure proceeds to step 725 and displays a message to the user that the requested file cannot be opened. Furthermore, the procedure can proceed to step 725 as described above and, as part of step 725, inform the user about the format determination conflict if a conflict exists between multiple format determinations. Alternatively, in the case of such a conflict, the procedure can proceed directly to step 740 and prompt the user to select an engine directly.This request may contain a list of some or all of the engines 135. After step 725, the procedure ends 700. If one or more entries in the database 500 contain the format of the found file, the procedure proceeds to decision block 730.

[0050] In decision block 730, application 130 determines whether multiple engines are associated with the format of the detected file. Database 500 contains one or more entries 505 that provide mappings of engines to file formats. An entry 505 can contain a format name 510 and multiple associated engine names 520. Alternatively, an entry 505 can contain multiple format names 510 and one associated engine name 520. Alternatively, an entry 505 can contain multiple format names 510 and multiple associated engine names 520. If application 130 determines by querying the database that only one engine is associated with the format of the detected file, the procedure proceeds to step 735, where the single engine associated with the format of the detected file is selected. If application 130 determines by querying the database that multiple engines are associated with the format of the detected file, the procedure proceeds to step 740.

[0051] In step 740, application 140 displays a list of several assigned engines to the user via a display device 110 on the user device 100. In step 745, application 130 receives a selection of one of the several assigned engines from the user via a user input device 115. In step 750, application 130 starts the selected engine, which can be used to process the requested file.

[0052] The Fig. 8A-8B represent a flowchart 800 of a procedure for using an engine 135a to load and process a feature of a file 125a. For example, if a user requests to open a file using the steps in flowchart 700 and an engine has been identified, the file data can be processed using the steps of flowchart 800. The application 130 can start the selected engine 135a upon receiving user input from a browser, such as browser 210. The engine 135a can display the document via browser 210 in a user interface, such as user interface 200. Starting at Fig. In step 805, Engine 135a reads data from file 125a in accordance with the file's format. In step 810, a processor executing Engine 135a, such as Processor 105, determines that the read data contains a feature. In step 815, Engine 135a places the feature in a node of a DOM, such as DOM 600, associated with file 125a. In step 820, Engine 135a determines whether the end of file 125a has been reached. If the end of file 125a has not been reached, the procedure returns to step 805 to continue reading additional data from file 125a. If the end of file 125a has been reached, the procedure proceeds to step 825. The model section of Engine 135a can execute one or more of steps 805, 810, 815 and 820.

[0053] In step 825, Engine 135a reads a node of DOM 600 as it traverses the DOM 600. In decision block 830, Engine 135a determines whether it is configured to render the node or the file feature contained within the node. An engine configured to render a file feature is configured to read data from the memory allocated to the feature, with the data encoded in accordance with the file's format. In some examples, Engine 135a makes this determination based on information explicitly hard-coded within Engine 135a. If Engine 135a determines that it is not configured to render the feature, the procedure proceeds to step 835, where Engine 135a does not render the feature, and then proceeds to decision block 845. If engine 135a determines that it can render the feature, the procedure proceeds to step 840.In step 840, Engine 135a renders the feature contained in the node. The procedure then proceeds to decision block 845, where Engine 135a determines whether the end of DOM 600 has been reached. Engine 135a can make this determination by checking whether all nodes of the DOM have been traversed. If the end of the DOM has not been reached, the procedure returns to step 825, where Engine 135a continues traversing DOM 600. If the end of the DOM has been reached, the procedure proceeds to step 855. The evaluation section of Engine 135a can execute one or more of the steps 825, 830, 835, 840, and 845.

[0054] Transition to Fig. In step 855, Engine 135a receives user input to modify a document feature represented by DOM 600. The user can provide this input through a graphical user interface, such as interfaces 200 and 300. For example, the input might include an addition to the paragraph text if the feature is a paragraph. Another example is style change instructions, such as changing the paragraph font style to bold. These examples are not limited, and the user input can be any user input that modifies the feature. In decision block 860, Engine 135a determines whether it is configured to edit the feature.An engine configured to process a file is configured to read data from memory and write data to memory, where the data is associated with the feature and encoded according to the file's format. In one example, Engine 135a makes this determination by decoding the contents of the DOM node corresponding to the feature to be processed. In this example, Engine 135a determines that it can process the feature if it successfully decodes the node's contents, and determines that it cannot decode the feature if it cannot. If Engine 135a determines that it is not configured to process the feature, the procedure proceeds to step 865, where Engine 135a does not modify the feature, and then proceeds directly to step 880.If Engine 135a determines that it is configured to edit the feature, the procedure proceeds to step 870. In step 870, Engine 135a modifies the node in DOM 600 that corresponds to the feature. After modifying the node, Engine 135a can validate DOM 600. In step 875, Engine 135a renders the feature based on the content of the modified node. In an optimistic update example, steps 870 and 875 can occur concurrently or asynchronously. In this example, the controller section of Engine 135a can send updates directly to the viewer section and update and validate DOM 600 later.

[0055] In decision block 880, Engine 135a determines whether saving is required. Saving is required if a user provides input to save the document or if an elapsed time exceeds a predefined threshold. If Engine 135a determines that saving is required, the procedure proceeds to step 885, where Engine 135a saves the data contained in DOM 600 to a file in accordance with the format of the discovered file 125a. For nodes of DOM 600 that Engine 135a is not configured to edit, Engine 135a saves the data contained in these nodes unchanged from the original state of the data. Data contained in nodes of DOM 600 that Engine 135a is configured to edit can be modified from its original state, and Engine 135a saves this data in accordance with the original format of the discovered file 125a.In step 880, Engine 135a can save all nodes in DOM 600 to a file, or it can save only a subset of the nodes, such as those that have been updated. Alternatively, in step 880, Engine 135a can save the data contained in DOM 600 in a format other than the original format of file 125a. The format selection can be determined based on a user choice via a user input device 115. If Engine 135a determines in decision block 880 that saving is not necessary, procedure 800 proceeds to step 855, where Engine 135a receives another user input. After saving in step 885, the procedure returns to step 855, where Engine 135a receives another user input. In this way, procedure 800 can loop until interrupted by the user.The user can interrupt procedure 800 by closing the document via a user interface or simply by closing a user interface. For example, the controller section of Engine 135a can execute steps 855, 860, 865, 870, 880, and 885. In this example, the viewer section of Engine 135a can execute step 875. By preserving unsupported features in nodes of DOM 600 and preventing changes to these nodes, Engine 135a preserves the file's unsupported features when the DOM 600 is saved.

[0056] Fig. Figure 9 represents a flowchart 900 of a procedure used by an application 130 to create a file. A user can provide input via a user interface, such as the user interface 200, to create a file with a specific file format. In step 905, a processor running the application 130 receives a request from a user to create a file. In step 910, the processor determines that one or more of the engines 135 are configured to create a file. This determination can be made by querying a database, such as the database 500. In step 915, the application 130 presents the user with a list of formats associated with the one or more engines configured to create a file. In step 920, the application 130 receives a selection of a format from the user from the presented list.In decision block 925, application 130 determines whether multiple engines are configured to create documents in the selected format. Application 130 can query a database 500 to determine whether one or more engines configured to create files in the selected format are associated with the application. If only one engine is configured to create documents in the selected format, the procedure proceeds to step 935, where the single engine is selected. If multiple engines are configured to create documents in the selected format, the procedure proceeds to step 930, where application 130 presents the user with a list of engines associated with the selected format. In step 940, application 130 receives a selection of engine 135a from the presented list. In step 945, application 130 starts the selected engine 135a.In step 950, the started engine 135a creates a document in the selected format and renders it for display to the user via display 110. In step 955, the started engine 135a receives edits to the rendered document from the user. These edits can be received in accordance with the steps of procedure 800. In step 960, the started engine 135a saves the document in a file 125a in accordance with the selected format. In some implementations, procedure 900 may be simplified. In these implementations, application 130 may present a list of engines to the user in step 915, receive a selection of an engine in step 920, and proceed directly to step 945, where application 130 opens the selected engine. In some implementations, engine 135a may open or copy an empty template file instead of creating a new instance of a file.

[0057] Fig. Figure 10 shows a client-server system 1000, which includes a cloud computing device 1002 and a number of client computers 1004a to 1004d. The cloud computing service 1002 can contain one or more servers that together provide cloud computing services to multiple client computers. The cloud computing service 1002 stores a number of files that can be accessed by client computers 1004a-1004d, including an example collaboration spreadsheet 1006. Users can create, edit, copy, share, and delete files stored in the cloud computing service 1002. For example, client computers 1004a-1004d can simultaneously access the spreadsheet 1006 in the cloud computing service 1002 using a web browser. The cloud computing service 1002 provides a local copy of the spreadsheet 1006 for each client computer, which users can view and edit on the client computers.Edits, other than mutations, made by client computer 1004a are automatically sent to the cloud computing service 1002 and then distributed to the other client computers 1004b-1004d. These mutations made by one employee are immediately visible to other employees.

[0058] Client computers 1004a-1004d can include desktop computers, laptop computers, tablets, smartphones, mobile electronic devices, or any other device capable of connecting to the cloud computing service 1002 over a remote network. System 1000 can contain many client computers that connect to the cloud computing service 1002. The cloud computing service 1002 and the client computers 1004a-1004d of System 1000 are connected over a remote network such as the internet.The network connection can be provided via a local area network, a wide area network, Ethernet, a fiber optic network, a wireless network, a cellular network, an interactive television network, a telephone network, a wireless data transmission system, a two-way cable system, a custom private or public computer network, an interactive kiosk network, a direct connection, a satellite network, or any other wired or wireless connection.

[0059] Fig. 11 is a block diagram of a computer device such as any of the system's components. Fig. 1-10 for executing any of the processes described here. Each component of these systems may be implemented in one or more computer devices 1100. In certain aspects, several components of these systems may be contained within one computer device 1100. In certain implementations, a component and a storage device may be implemented across multiple computer devices 1100.

[0060] The computer device 1100 includes at least one communication interface unit, an input / output controller 1110, system memory, and one or more data storage devices. The system memory includes at least one read / write memory (RAM 1102) and at least one read-only memory (ROM 1104). All these elements are connected to a central processing unit (CPU 1106) to enable the operation of the computer device 1100. The computer device 1100 can be configured in many different ways. For example, the computer device 1100 can be a conventional single-user computer, or alternatively, the functions of the computer device 1100 can be distributed across multiple computer systems and computer architectures. Alternatively, a computer system can be virtualized to provide the functions of multiple computer devices 1100. Fig.11. The computer device 1100 is linked to other servers or systems via a network or a local network.

[0061] The 1100 computer device can be configured in a distributed architecture, with databases and processors housed in separate units or located in separate locations. Some units perform primary processing functions and include at least one general-purpose controller or processor and system memory. In distributed architecture implementations, each of these units can be connected via the 1108 communication interface unit to a communication hub or communication port (not shown), which serves as a primary communication link with other servers, other client or user computers, and other related devices. The communication hub or communication port may itself have minimal processing capabilities, primarily functioning as a communication router.A variety of communication protocols, including but not limited to: Ethernet, SAP, SAS™, ATP, BLUE-TOOTH™, GSM and TCP / IP, can be part of the system.

[0062] The CPU 1106 contains a processor, such as one or more conventional microprocessors, and one or more supplementary coprocessors, such as math coprocessors, to reduce the CPU 1106's workload. The CPU 1106 communicates with the Communication Interface Unit 1108 and the Input / Output Controller 1110, through which the CPU 1106 communicates with other devices, such as other servers, user terminals, or other equipment. The Communication Interface Unit 1108 and the Input / Output Controller 1110 can contain multiple communication channels for simultaneous communication with, for example, other processors, servers, or client terminals.

[0063] Furthermore, the CPU 1106 is connected to a data storage device. The data storage device can contain a suitable combination of magnetic, optical, or semiconductor memory and can include, for example, RAM 1102, ROM 1104, a flash drive, an optical disk such as a compact disc, a hard disk, or a drive. The CPU 1106 and the data storage device can each be located, for example, entirely within a single computer or other computer device; or they can be connected to each other by a communication medium such as a USB port, a serial cable, a coaxial cable, an Ethernet cable, a telephone line, a radio frequency transceiver, or other similar wireless or wired medium, or a combination thereof. For example, the CPU 1106 can be connected to the storage device via the communication interface unit 1108.The CPU 1106 can be configured to perform one or more specific processing functions.

[0064] The data storage device may, for example, (i) an operating system 1112 for the computer device 1100; (ii) one or more applications 1114 (e.g., computer program code or a computer program product) designed to instruct the CPU 1106 in accordance with the systems and procedures described herein and, in particular, in accordance with the processes described in detail with respect to the CPU 1106; or (iii) one or more databases 1116 designed to store information that can be used to store information required by the program.

[0065] The operating system 1112 and the applications 1114 can be stored, for example, in a compressed, uncompiled, or encrypted format and can contain computer program code. The program instructions can be read into the process's main memory from a computer-readable medium other than the data storage device, such as the ROM 1104 or the RAM 1102. Although the execution of sequences of instructions in the program causes the CPU 1106 to perform the process steps described herein, a hard-wired circuit arrangement can be used to implement the processes of the present invention instead of, or in conjunction with, software instructions. Thus, the described systems and methods are not limited to any specific combination of hardware and software.

[0066] Suitable computer program code may be provided to perform one or more functions related to the execution of the processes described herein. Furthermore, the program may include program elements such as an operating system 1112, a database management system, and "device drivers" that enable the processor to connect to computer peripheral devices (e.g., a video display, a keyboard, a computer mouse, etc.) via an interface using the input / output controller 1110.

[0067] The term “computer-readable medium,” as used herein, refers to any non-temporary medium that provides instructions for the processor of the Computer Device 1100 (or for any other processor of a device described herein) to execute, or is involved in the execution of, such instructions. Such medium may take any form, including, but not limited to, non-volatile and volatile media. Non-volatile media include, for example, optical, magnetic, or magneto-optical disks, or integrated circuit memory such as flash memory. Volatile media include dynamic read / write memory (DRAM), which usually constitutes main memory. Common forms of computer-readable media include, for example,a floppy disk, a flexible disk, a hard disk, a magnetic tape, any other magnetic medium, a CD-ROM, a DVD, any other optical medium, punched cards, a paper tape, any other physical medium with hole patterns, a RAM, a PROM, an EPROM or EEPROM (electronically erasable programmable read-only memory), a FLASH EEPROM, any other memory chip or any other memory cartridge or any other non-temporary medium that a computer can read from.

[0068] Various forms of computer-readable media can be involved in the execution of one or more sequences of one or more instructions for the CPU 1106 (or for any other processor of an apparatus described herein). For example, the instructions may initially be stored on a magnetic disk or on a remote computer (not shown). The remote computer can load the instructions into its dynamic memory and transmit them over an Ethernet connection, a cable line, or even a telephone line using a modem. A local communication device (such as a server) opposite a computer apparatus 1100 can receive the data on the respective communication line and arrange the data on a bus for the processor. The system bus transmits the data to the main memory, from which the processor reads and executes the instructions.Instructions received by main memory can optionally be stored in memory either before or after execution by the processor. Furthermore, instructions can be received via a communication port as electrical, electromagnetic, or optical signals, which are exemplary forms of wireless communication or data streams transmitting various types of information.

[0069] It is clear that aspects of the systems and procedures described herein can be implemented in various forms of software, firmware, and hardware as depicted in the drawings. The actual software code or specialized control hardware used to implement aspects in accordance with the principles of the systems and procedures described herein is not restrictive. Thus, the operation and behavior of the aspects of the systems and procedures have been described here without reference to specific software code—although, of course, the average person skilled in the field can design software and control hardware to implement the aspects based on this description.

[0070] Although the operations in the drawings are shown in a specific order, this should not be interpreted as meaning that these operations must be performed in that particular order or sequence, or that all the operations shown must be performed to achieve the desired results. Multitasking and parallel processing can be advantageous under certain circumstances.

Claims

[1] Computer-implemented method for editing documents in a native format, wherein the method comprises: Receiving a request from a user to open a file created in a first format using a second application, on a processor (105, 406) running a first application (130, 431); Determining the initial file format; Selecting one engine from several engines (135a-n, 436a-n) assigned to the first application (130, 431), wherein the selected engine is configured to process the first format; Opening the file using the selected engine in the first application (130, 431) without converting the file's format to a second format associated with the first application (130, 431); Rendering the contents of the file for display on a user device (100, 401) for the user by the selected engine in the first application (130, 431); Determine that the selected engine is configured to edit a feature of the file; Rendering the feature for display on the user device (100, 401) for the user by the selected engine in the first application (130, 431); Processing an edit to the rendered feature in the first format using the selected engine in the first application (130, 431); and Saving the edited feature to the file using the first application (130, 431) in the first format in a database (120, 435, 500); where: the first format is a native format of the second application, and the first format is a non-native format for the first application (130, 431). [2] Method according to claim 1, wherein the method further comprises providing a user interface (200, 300) comprising feature editing aids (230) of the selected engine to the user. [3] The method of claim 1, wherein the method further comprises: Determine that the selected engine is not configured to edit a second feature of the file; Rendering the second feature for display on a user device (100, 401) for the user by the selected engine in the first application (130, 431); Prevention of the user changing the second feature; Determine that the selected engine is configured to be able to process a third attribute of the file; Rendering, by the selected engine in the first application (130, 431), of the third feature for display on a user device for the user; Processing an edit to the third feature in the first format using the selected engine in the first application (130, 431); and Saving the third feature processed on the file using the first application (130, 431) in the first format in the database (120, 435, 500). [4] The method of claim 3, wherein the method further comprises: Arranging data corresponding to the second feature in a node of a document object model (600) by the selected engine; Assigning a property to the node indicating that the selected engine is not configured to edit the second feature; and Saving the arranged data in the file using the first application (130, 431) in the first format in the database (120, 435, 500). [5] The method of claim 1, wherein the method further comprises: Determine that the selected engine is not configured to render a second feature of the file; Arranging data corresponding to the second characteristic in a node of a document object model (600); and Assigning the property that the selected engine is not configured to render the second feature to the node; Saving the arranged data in the file using the first application (130, 431) in the first format in the database (120, 435, 500). [6] Method according to claim 1, wherein the file is stored on a server remote from the user. [7] Method according to claim 1, wherein the selection further comprises: Determining the first format in a second database; Determine that an engine is assigned to the first format; and Select the assigned engine. [8] Method according to claim 1, wherein the determining further comprises: Reading a section of the file; Extracting a file type from the read section; and Determining the initial file format based on the extracted file type. [9] The method of claim 7, further comprising: Determine that the file format is associated with multiple engines (135a-n, 436a-n); Displaying multiple names to the user, where each name corresponds to one of the multiple engines (135a-n, 436a-n); Receiving a selected name from the user's multiple names; and Select the engine associated with the selected name. [10] Method according to claim 1, wherein the saving includes saving the file in a third format. [11] System for editing documents in a native format, wherein the system includes a processor (105, 406) configured to: Receiving a request from a user to open a file that was created using a second application in a first format while a first application (130, 431) is running; Determining the initial file format; Selecting one engine from several engines (135a-n, 436a-n) assigned to the first application (130, 431), wherein the selected engine is configured to process the first format; Opening the file using the selected engine in the first application (130, 431) without converting the file's format to a second format associated with the first application (130, 431); Rendering the contents of the file for display on a user device (100, 401) for the user using the selected engine in the first application (130, 431); Determine that the selected engine is configured to edit a feature of the file; Rendering the feature for display on a user device (100, 401) for the user using the selected engine in the first application (130, 431); Processing an edit to the rendered feature in the first format using the selected engine in the first application (130, 431); and Saving the feature edited on the file using the first application (130, 431) in the first format in a database (120, 435, 500) where: the first format is a native format of the second application, and the first format is a non-native format for the first application (130, 431). [12] System according to claim 11, wherein the processor (105, 406) is further configured to present to the user a user interface (200, 300) which includes feature editing tools of the selected engine. [13] System according to claim 11, wherein the processor (105, 406) is further configured to: Determine that the selected engine is not configured to edit a second feature of the file; Rendering the second feature for display on a user device (100, 401) for the user using the selected engine in the first application (130, 431); Preventing the user from changing the second feature; Determine that the selected engine is configured to process a third attribute of the file; Rendering, using the engine selected in the first application (130, 431), the third feature for display to the user on a user device (100, 401); Processing an edit to the third feature in the first format using the selected engine in the first application (130, 431); and Saving the third feature processed on the file using the first application (130, 431) in the first format in the database (120, 435, 500). [14] System according to claim 13, wherein the processor (105, 406) is further configured to: Arranging data corresponding to the third feature in a node of a document object model (600) using the selected engine; Assigning a property to the node indicating that the selected engine is not configured to edit the third feature; and Saving the arranged data in the file using the first application (130, 431) in the first format in the database (120, 435, 500). [15] System according to claim 11, wherein the processor (105, 406) is further configured to: Determine that the selected engine is not configured to render a second feature of the file; Arranging data corresponding to the second characteristic in a node of a document object model (600); and Assigning a property to the node indicating that the selected engine is not configured to render the second feature; Saving the arranged data in the file using the first application (130, 431) in the first format in the database (120, 435, 500). [16] System according to claim 11, wherein the file is stored on a server remote from the user. [17] System according to claim 11, wherein the processor (105, 406) is further configured to: Determining the first format in a database (120, 435, 500); Determine that an engine is assigned to the first format; and Select the assigned engine. [18] System according to claim 11, wherein the processor (105, 406) is further configured to: Reading a section of the file; Extracting a file type from the read section; and Determining the initial file format based on the extracted file type. [19] System according to claim 17, wherein the processor (105, 406) is further configured to: Determine that the file format is associated with multiple engines (135a-n, 436a-n); Displaying multiple names to the user, where each name corresponds to one of the multiple engines (135a-n, 436a-n); Receiving a selected name from the user's multiple names; and Select the engine associated with the selected name. [20] System according to claim 11, wherein the processor (105, 406) is further configured to save the file in a third format.

Citation Information

Patent Citations

  • System and apparatus for handling presentation language messages

    US20050187756A1

  • DOM Based Media Viewer

    US20100235765A1

  • Content Rendering on a Computer

    US20120331377A1

  • Associating a File Type with an Application in a Network Storage Service

    US20130282755A1

  • System and method for identifying applicable third-party applications to associate with a file

    US20140344247A1