A user can acquire digital images, text and other content from various sources, such as over the internet, from files, from digital cameras and other types of digital media. A common exercise with such content is to create a new complex document based on the content they have already acquired. Existing tools for this task can be difficult for many users to implement because they may require in-depth knowledge of multiple mechanisms for retrieving and manipulating source content within their particular document creation tool. For instance, such existing solutions may require use of a variety of different editing tools and other mechanisms for retrieving, accessing and editing different types of content, which usually vary according to the source of the content.
As an example, to insert an image into most document creation tools may require either a File→Open operation, then a dialog box selection operation, followed by some kind of cut and paste depending on the application associated with the image type, or alternatively an Insert operation, then a dialog box selection. However, the same result may be achieved by the copy and paste operations built into the document creation tool when the required image already exists in a document compatible with the creation tool.
As used herein, a complex document refers to a document that can contain multiple types of content and with higher level layout functionality imposed upon the content. For instance, a complex document contains a group of elements selected from the group comprising text elements (including headings, page numbers, figure indices etc) and graphical elements (including photos, vector graphics objects, line art, clip art, color gradients etc). The modifier “source” in the term “source complex document” is intended to indicate that the document is to be used as a source of content. As such, the source complex document can be write-protected upon its creation, such that any part or the entire document can be copied into a target complex document without causing changes to the source complex document. The user actions to copy content from the source to the target document are the same as those used to manipulate and edit content within the target complex document. The copied content can be manipulated and edited within the target complex document via the tool 11.
As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.
A complex document also includes a layout format that defines an arrangement of containers within the complex document into which other elements can be placed in the layout. A container can be a column, a block, a circle or other graphical shapes. Additionally, where the disclosure or claims recite “a,” “an,” “a first,” or “another” element, or the equivalent thereof, it should be interpreted to include one or more than one such element, neither requiring nor excluding two or more such elements.
The system 10 includes a content ingest engine 14. The content ingest engine 14 can be implemented as computer executable instructions that can be accessed from memory by a processor to generate the source complex document 12. The content ingest engine 14 employs an interface to access selected content 18 from a source of content 20. It is to be understood that there can be any number of one or more interfaces and any number of 1 through M sources of content 20, where M is a positive integer denoting the number of sources of content.
The interface 16 can also vary depending upon the source of content 20. For example, the source of content 20 can be a file stored in memory of a computer, which may be the same or different computer from that implementing the ingest engine 14 or the interface 16. The memory can be a fixed for removable type of memory (e.g., a hard disk drive, a flash drive, an optical disk or the like). In the example implementation where the source of content 20 is a file in memory, the interface can include hardware, machine readable instructions (including computer executable instructions) or a combination of hardware and machine readable instructions (including computer executable instructions) for accessing and retrieving the file from the memory.
In another example implementation the source of content 20 can be a website, such as served via a network. In such an example implementation, the interface can include hardware, computer executable instructions or a combination of hardware and computer executable instructions for accessing and retrieving the content 18 from the network. In another example implementation, the source of content 20 can also include a portable electronic device, such as a digital camera, a personal digital assistant (PDA), a smart cellular telephone, an E-book reader or the like. In such an example implementation, the interface can include hardware, computer executable instructions or a combination of hardware and computer executable instructions for accessing and retrieving the content 18 from the portable electronic device.
Each source of content 20 can include a variety of content that can vary in form and extent. As an example, the content 18 can include images, such as photographs or other graphical objects, text, and in combinations of different types of content. The content 18 can also include patterns, layouts and any other document features that can be ascertained and utilized within the source complex document 12.
The content ingest engine 14 is operative to populate the source complex document 12 with content elements 22 that are derived from the content 18 retrieved via the interface 16. The content ingest engine 14 thus can arrange each of the content elements in the source complex document browsers to allow a user to build a new complex document, namely a target complex document. There are various ways that content can be added to and removed from a target complex document. For example, an element or group of elements from the plurality of source complex document browsers can be placed over existing elements in the target complex document browser, which causes the existing elements to be replaced by the copied elements. The element or group of elements from the plurality of source complex document browsers can also be placed in open spaces in the target complex document browser, which causes the existing elements to be placed into the target complex document associated with the target complex document browser. Those skilled in the art will appreciate various other editing mechanisms and tools that can be utilized to utilize content from source complex documents.
The content ingest engine 14 also is programmed to add corresponding attribute data 24 to each content element 22. The attribute data 24 can include a layout mechanism that affords appropriate dynamic behavior to a given content element 22. For example, the attribute data includes an identification of element properties that can define restrictions and formatting requirements that enable desired dynamic behavior when a content element is copied or manipulated by an associated document service (e.g., by a document editor service). For instance, the source complex document 12 can be stored in memory of the system 10 and be made accessible to a service-based editing tool.
The attribute data can also be utilized to specify a type of content, such as whether the content is an image, a text block, designs, headings, or the like. The attribute data can also include data identifying the source 20 of the content element 22, an attribution to the author of such content, a cost (if known) for subsequent usage of the content. The attribute data can also be utilized to specify a hierarchy, restrictions and/or layout requirements associated with the content element 22, which can be utilized by the ingest engine in populating the content elements 22 in the source complex document 12.
The content ingest engine 14 further can employ an automated layout procedure to generate the source complex document 12 based upon the content retrieved from the sources 20, such that each of the content elements 22 are dynamically linked via the attribute data 24 according to the automated layout procedure. As an example, the automated layout procedure can employ rules and a layout format in which each respective content element is to be inserted based on its corresponding attribute data 24. The layout format can be fixed or adaptable, such as by modifying layout features and placement based on the attribute data of the respective content elements.
Once the source complex document 12 has been created from the content sources 20, then the content elements 22 with associated attributes 24 are accessible within the complex document tool 11. For example, a user can employ a corresponding user interface 28 for the complex document tool 11 to create or edit content 26 for the target complex document 13. That is, the user interface 28 can be programmed to implement native copy and edit functionality of the tool 11, without requiring any resort on the part of the user to the original content sources 20 or associated external applications.
In the example of
As another example, the system 50 can access content sources 54 via a network interface 60. For example, content sources 54 can be coupled to the system 50 via a network 62, which can include a local area network or a wide area network, such as the internet or a cellular network, or a combination of different networks topologies. The network interface may also be implemented as a search engine that can access content on the network based on a search term. Content located by the search engine can be automatically accessed and retrieved for generating the source complex document 52.
The system 50 includes a processor 64 that can execute computer executable instructions for generating the source complex document 52. In the example of
As an example the user interface 66 can be programmed to identify a file location on a storage media that can be accessed via the source interface and retrieved by the system 50. Additionally or alternatively, the user interface 66 can be implemented as a network browser that is capable of specifying a resource locator for a webpage (e.g., a uniform resource locator (URL)), or a file location (e.g., a resource location that is served via a file transfer protocol (FTP)), which are accessible via the network 62 by the network interface 60. Thus, the processor 64, in response to user instructions received via the user interface 66, can access and retrieve content 56 from any of the sources 54.
The processor 64 can also employ a content ingest engine 70 for generating the source complex document 52. The content ingest engine 70 thus is programmed with methods, functions and processes that can be executed by the processor 64. It will be understood that the components of the content ingest engine can reside locally a computer or be distributed across a network, such as the network 62. As one example, the content ingest engine can be implemented as part of document service in a cloud computing environment.
In the example of
The analyzer 72 can also discern properties of each identified content element. The properties of a given content element can include a type or format of content (e.g., image type, text format or the like). The type of the content can be the same as the original content 56 being retrieved or it can be a different type based on a conversion process that is implemented by the analyzer 72. The properties can also include a class of content, such as an identification whether the content element is a heading, a box, a banner, a background or the like. Further details of a given class of content can also be determined for each content element, such as language and font for text elements as well as resolution and color depth for images.
In addition to properties of the content element, the analyzer 72 can also ascertain source-related information for the content being retrieved. As an example, the source-related information can include an identification of a resource location for the content source 54, an identification of the author of the content element, as well as any use restrictions and associated cost for the content. The properties can thus describe characteristics of the content elements, which can vary for each content element, and the source-related information for the respective content sources 54.
The content ingest engine 70 can also include an attribute assignment component 74. The attribute assignment component 74 can be programmed to assign attribute data to the selected content elements based on properties ascertained by the analyzer 72. For example, the attribute data can be implemented as metadata that specifies the type of the content (e.g., an image, the type of image). The attribute data that is added to each content element can be considered metadata as it can describe various properties of the document including properties that facilitate the dynamic behavior of respective content elements, which behavior can vary depending upon the properties of the respective content elements.
The attribute assignment component 74 can also provide attribute data to specify the source-related information for content, such as metadata representing a source identifier, a name or other identifying information, a cost of using the content or other properties that may facilitate use and editing of the content by end users. These properties can be added as the attribute data automatically as part of the ingest process or can be added in response to user instructions via the user interface 66.
The content ingest engine 70 can also include a composer 76 providing instructions that can be executed by the processor 64 for populating the source complex document 52 with content element data 80 and associated attribute data 82. The composer 76 can employ a layout engine 78 to arrange the content elements 80 within the content source document 52 according to the attribute data that has been assigned and added to the respective elements (e.g., by the attribute assignment component). For example, the layout engine 78 can employ a set of rules and one or more layout formats that control into which containers each of the content elements 80 is inserted. For example, the layout engine 78 can employ a layout algorithm that may provide a fixed or dynamic layout format for each of a plurality of pages.
By way of example, the composer 76 can generate and store the source complex document 52 as a multi-level hierarchical data structure of elements, group of elements, pages and spreads. A spread is a two-page layout format that can be displayed to a user with an arrangement of user-perceptible representations of content elements. A spread, a page and/or a container on a page can also include a respective layout format. That is, a layout can be nested within another layout.
As a further example, the composer 76 can generate and store each spread of the multi-spread multi-source source complex document 52 as a separate binary tree in which the content elements are provided as leaf nodes of the respective tree representation for the data structure (see, e.g.,
In addition to populating the content source document 52 with the content elements 80 and associated attribute data 82, the composer 76 can provide a source complex document with a layout element 84. The composer can generate the layout element 84 to define the structure of the source complex document 52 that controls the appearance thereof. As an example, the layout element 84 can be implemented as a hierarchical graph in which content elements are located at nodes in the graph based upon the attribute data 82.
The processor 64 can store the source complex document 52 in associated memory 86 such that it may be accessible via the processor 64 or via another user device 88. For example, one or more user devices 88 can be coupled to the network 62 and be able to access any number of source complex documents, including the source complex document 52 generated by the system 50. For instance, the source complex document 52 may be stored in the system 50 that provides a complex document tool 90, such as in a cloud computing environment. The document tool 90 can be accessed and utilized by various user devices 88 via the network 62. For example, a user of a user device 88 can employ the document tool 90 to create or edit the target complex document. Since the source complex document 52 is generated to have the same format as the target complex document 92, editing of the target complex document is facilitated within the system 50 via the document tool. For instance, a user can implement native copy and edit functionality of the document tool 90 to add or edit content 94 in the target complex document, without requiring any resort on the part of the user to the original content sources 54 or associated external applications to access the content outside of the services provided by the document tool.
In one example implementation, the complex source document 52 or at least selected content elements thereof can be generated with restrictive properties, as defined by attribute data, to prevent copying or use of the source complex document outside of a cloud environment or without use of the document tool 90 or other pre-authorized document services 96.
As a further example, a user can employ the document services 96 to access content elements from a plurality of source complex documents, which may include one or a plurality of source complex documents 52 generated by the system 50, as well as other source documents that may be user-generated. The set of source complex documents can be presented to the user via respective user interfaces in a single window browser to facilitate copying and manipulation of content elements from the source complex documents into a corresponding target source complex document.
The source complex documents may be implemented with a fixed layout such as defined by the layout element 84 so that the content elements and the attribute data can remain associated with a given source complex document such as to facilitate creation of new target documents and tracking of the original content that is being used.
In the example of
In view of the foregoing structural and functional features described above, an example method will be better appreciated with reference to
At 206, the selected content can be analyzed (e.g., by the content ingest engine 14 of
At 208, content elements from the selected content can be identified. The identification of content elements can be based on the analysis at 204, which as mentioned above can include parsing the selected content and extracting separate content elements therefrom. At 210, attribute data is added to the content elements. For example, the attribute data can be added (e.g., by an attribute assignment component 74 of
At 212, a source complex document is populated with content elements and attribute data (e.g., by a composer 76 of
At 214 a determination is made as whether the source complex document is complete. If the document is not complete, (e.g., indicating that additional content is to be added), the method can return to 202 to select additional content. Alternatively, as indicated by the dashed line 216, the method may proceed from 214 to access the content at 204, such as in a situation when the content had been selected previously. That is, the method 200 can be implemented in an offline manner from 204 onward such as in response to selecting content, a priori, that is to be added in a separate document generation phase in response to user instructions, such as described herein. If the determination at 214 indicates that the document is complete, the method can proceed to 218 in which the source complex document can be stored in a storage media (e.g., memory 86 of
At 220, the source complex document can be used directly to access the source content in a complex document creation tool (e.g., the tool 11 of
What have been described above are examples. It is, of course, not possible to describe every conceivable example of the invention, but one of ordinary skill in the art will recognize that other example embodiments are possible. Accordingly, this disclosure is intended to embrace all embodiments, such as including alterations, modifications, and variations that fall within the scope of the appended claims.