US7418652B2 - Method and apparatus for interleaving parts of a document - Google Patents
Method and apparatus for interleaving parts of a document Download PDFInfo
- Publication number
- US7418652B2 US7418652B2 US10/837,042 US83704204A US7418652B2 US 7418652 B2 US7418652 B2 US 7418652B2 US 83704204 A US83704204 A US 83704204A US 7418652 B2 US7418652 B2 US 7418652B2
- Authority
- US
- United States
- Prior art keywords
- parts
- document
- processing
- package
- xml
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/131—Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
Definitions
- This invention relates to a content framework, document format and related methods and systems that can utilize both.
- Modular content framework and document format methods and systems are described.
- the described framework and format define a set of building blocks for composing, packaging, distributing, and rendering document-centered content. These building blocks define a platform-independent framework for document formats that enable software and hardware systems to generate, exchange, and display documents reliably and consistently.
- the framework and format have been designed in a flexible and extensible fashion.
- FIG. 1 is a block diagram of components of an exemplary framework and format in accordance with one embodiment.
- FIG. 2 is a block diagram of an exemplary package holding a document comprising a number of parts in accordance with one embodiment.
- FIG. 6 illustrates some examples of writers and readers working together to communicate about a package, in accordance with one embodiment.
- FIG. 7 illustrates an example of interleaving multiple parts of a document.
- FIGS. 8 and 9 illustrate different examples of packaging the multiple parts of the document shown in FIG. 7 .
- FIG. 10 illustrates an exemplary reach package and each of the valid types of parts that can make up or be found in a package, in accordance with one embodiment.
- FIG. 11 illustrates an exemplary mapping of Common Language Runtime concepts to XML in accordance with one embodiment.
- FIG. 12 illustrates both upright and sideways glyph metrics in accordance with one embodiment.
- FIG. 13 illustrates a one-to-one cluster map in accordance with one embodiment.
- FIG. 14 illustrates a many-to-one cluster map in accordance with one embodiment.
- FIG. 15 illustrates a one-to-many cluster map in accordance with one embodiment.
- FIG. 16 illustrates a many-to-many cluster map in accordance with one embodiment.
- the framework and format define a set of building blocks for composing, packaging, distributing, and rendering document-centered content. These building blocks define a platform-independent framework for document formats that enable software and hardware systems to generate, exchange, and display documents reliably and consistently.
- the framework and format have been designed in a flexible and extensible fashion. In various embodiments, there is no restriction to the type of content that can be included, how the content is presented, or the platform on which to build clients for handling the content.
- a particular format is defined using the general framework.
- This format is referred to as the reach package format in this document, and is a format for storing paginated or pre-paginated documents.
- the contents of a reach package can be displayed or printed with full fidelity among devices and applications in a wide range of environments and across a wide range of scenarios.
- One of the goals of the framework described below is to ensure the interoperability of independently-written software and hardware systems reading or writing content produced in accordance with the framework and format described below.
- the described format defines formal requirements that systems that read or write content must satisfy.
- the section entitled “The Framework” presents an illustrative packaging model and describes the various parts and relationships that make up framework packages. Information about using descriptive metadata in framework packages is discussed, as well as the process of mapping to physical containers, extending framework markup, and the use of framework versioning mechanisms.
- the section entitled “The Reach Package Format” explores the structure of one particular type of framework-built package referred to as the reach package. This section also describes the package parts specific to a fixed payload and defines a reach package markup model and drawing model. This section concludes with exemplary reach markup elements and their properties along with illustrated samples.
- FIG. 1 illustrates aspects of the inventive framework and format generally at 100 .
- Certain exemplary components of the framework are illustrated at 102
- certain components of the reach package format are illustrated at 104 .
- Framework 102 comprises exemplary components which include, without limitation, a relationship component, a pluggable containers component, an interleaving/streaming component and a versioning/extensibility component, each of which is explored in more detail below.
- Reach package format 104 comprises components which include a selector/sequencer component and a package markup definition component.
- Each primary sub-heading has one or more related sub-headings.
- This section describes the package model and includes sub-headings that describe packages and parts, drivers, relationships, package relationships and the start part.
- a package is a logical entity that holds a collection of related parts.
- the package's purpose is to gather up all of the pieces of a document (or other types of content) into one object that is easy for programmers and end-users to work with.
- FIG. 2 which illustrates an exemplary package 200 holding a document comprising a number of parts including an XML markup part 202 representing the document, a font part 204 describing a font that is used in the document, a number of page parts 206 describing pages of the document, and a picture part representing a picture within the document.
- the XML markup part 202 that represents a document is advantageous in that it can permit easy searchability and referencing without requiring the entire content of a package to be parsed. This will become more apparent below.
- a reader refers to an entity that reads modular content format-based files or packages.
- a writer refers to an entity that writes modular content format-based files or packages.
- FIG. 3 which shows a writer that produces a package and a reader that reads a package.
- the writer and reader will be embodied as software.
- much of the processing overhead and complexities associated with creating and formatting packages is placed on the writer. This, in turn, removes much of the processing complexity and overhead from readers which, as will be appreciated by the skilled artisan, is a departure from many current models. This aspect will become apparent below.
- a single package contains one or more representations of the content held in the package.
- a package will be a single file, referred to in this application as a container. This gives end-users, for example, a convenient way to distribute their documents with all of the component pieces of the document (images, fonts, data, etc.). While packages often correspond directly to a single file, this is not necessarily always so.
- a package is a logical entity that may be represented physically in a variety of ways (e.g., without limitation, in a single file, a collection of loose files, in a database, ephemerally in transit over a network connection, etc.). Thus containers hold packages, but not all packages are stored in containers.
- An abstract model describes packages independently of any physical storage mechanism. For example, the abstract model does not refer to “files”, “streams”, or other physical terms related to the physical world in which the package is located. As discussed below, the abstract model allows users to create drivers for various physical formats, communication protocols, and the like. By analogy, when an application wants to print an image, it uses an abstraction of a printer (presented by the driver that understands the specific kind of printer). Thus, the application is not required to know about the specific printing device or how to communicate with the printing device.
- a container provides many benefits over what might otherwise be a collection of loose, disconnected files. For example, similar components may be aggregated and content may be indexed and compressed. In addition, relationships between components may be identified and rights management, digital signatures, encryption and metadata may be applied to components. Of course, containers can be used for and can embody other features which are not specifically enumerated above.
- a part comprises common properties (e.g., name) and a stream of bytes. This is analogous to a file in a file system or a resource on an HTTP server.
- each part has some common part properties. These include a name—which is the name of the part, and a content type—which is the type of content stored in the part. Parts may also have one or more associated relationships, as discussed below.
- Part names are used whenever it is necessary to refer in some way to a part. In the illustrated and described embodiment, names are organized into a hierarchy, similar to paths on a file system or paths in URIs. Below are examples of part names:
- part names have the following characteristics:
- part name rules are specific to the framework described in this document. These part name rules are based on internet-standard URI naming rules.
- the grammar used for specifying part names in this embodiment exactly matches abs_path syntax defined in Sections 3.3 (Path Component) and 5 (Relative URI References) of RFC2396, (Uniform Resource Identifiers (URI: Generic Syntax) specification.
- “ ”
- “,” unreserved alphanum
- “f” mark “-”
- “)” alpha lowalpha
- upalpha lowalpha “a”
- the segments of the names of all parts in a package can be seen to form a tree. This is analogous to what happens in file systems, in which all of the non-leaf nodes in the tree are folders and the leaf nodes are the actual files containing content. These folder-like nodes (i.e., non-leaf nodes) in the name tree serve a similar function of organizing the parts in the package. It is important to remember, however, that these “folders” exist only as a concept in the naming hierarchy—they have no other manifestation in the persistence format.
- Part names can not live at the “folder” level. Specifically, non-leaf nodes in the part naming hierarchy (“folder”) cannot contain a part and a subfolder with the same name.
- every part has a content type which identifies what type of content is stored in a part.
- content types include:
- media type e.g., text
- subtype e.g., plain
- a special URI interpretation rule must be used when evaluating URIs in package-based content: the package itself should be treated as the “authority” for URI references and the path component of the URI is used to navigate the part name hierarchy in the package.
- Relative URIs should be used when it is necessary to have a reference from one part to another in a container. Using relative references allows the contents of the container to be moved together into a different container (or into the container from, for example, the file system) without modifying the cross-part references.
- Relative references from a part are interpreted relative to the “base URI” of the part containing the reference.
- the base URI of a part is the part's name.
- Some content types provide a way to override the default base URI by specifying a different base in the content. In the presence of one of these overrides, the explicitly specified base URI should be used instead of the default.
- the fragment is a string that contains additional information that is understood in the context of the content type of the addressed part. For example, in a video file a fragment might identify a frame, in an XML file it might identify a portion of the XML file via an xpath.
- a fragment identifier is used in conjunction with a URI that addresses a part to identify fragments of the addressed part.
- the fragment identifier is optional and is separated from the URI by a crosshatch (“#”) character. As such, it is not part of a URI, but is often used in conjunction with a URI.
- the file format described herein can be used by different applications, different document types, etc.—many of which have conflicting uses, conflicting formats, and the like.
- One or more drivers are used to resolve various conflicts, such as differences in file formats, differences in communication protocols, and the like.
- different file formats include loose files and compound files
- different communication protocols include http, network, and wireless protocols.
- a group of drivers abstract various file formats and communication protocols into a single model. Multiple drivers can be provided for different scenarios, different customer requirements, different physical configurations, etc.
- Parts in a package may contain references to other parts in that package.
- these references are represented inside the referring part in ways that are specific to the content type of the part; that is, in arbitrary markup or an application-specific encoding. This effectively hides the internal linkages between parts from readers that don't understand the content types of the parts containing such references.
- a spreadsheet application uses this format and stores different spreadsheets as parts.
- An application that knows nothing about the spreadsheet language can still discover various relationships associated with the spreadsheets.
- the application can discover images in the spreadsheets and metadata associated with the spreadsheets.
- An example relationship schema is provided below:
- This schema defines two XML elements, one called “relationships” and one called “relationship.”
- This “relationship” element is used to describe a single relationship as described herein and has the following attributes: (1) “target,” which indicates the part to which the source part is related, (2) “name” which indicates the type or nature of the relationship.
- the “relationships” element is defined to allow it to hold zero or more “relationship” elements and serves simply to collect these “relationship” elements together in a unit.
- Relationships provide an additional way to represent the kind of connection between a source part and a target part in a package. Relationships make the connections between parts directly “discoverable” without looking at the content in the parts, so they are independent of content-specific schema and faster to resolve. Additionally, these relationships are protocol independent. A variety of different relationships may be associated with a particular part.
- Relationships provide a second important function: allowing parts to be related without modifying them.
- this information serves as a form of “annotation” where the content type of the “annotated” part does not define a way to attach the given information.
- Potential examples include attached descriptive metadata, print tickets and true annotations.
- some scenarios require information to be attached to an existing part specifically without modifying that part—for example, when the part is encrypted and can not be decrypted or when the part is digitally signed and changing it would invalidate the signature.
- a user may want to attach an annotation to a JPEG image file.
- the JPEG image format does not currently provide support for identifying annotations. Changing the JPEG format to accommodate this user's desire is not practical.
- the systems and methods discussed herein allow the user to provide an annotation to a JPEG file without modifying the JPEG image format.
- relationships are represented using XML in relationship parts.
- Each part in the container that is the source of one or more relationships has an associated relationship part.
- This relationship part holds (expressed in XML using the content type application/PLACEHOLDER) the list of relationships for that source part.
- FIG. 4 below shows an environment 400 in which a “spine” part 402 (similar to a FixedPanel) binds together three pages 406 , 408 and 410 .
- the set of pages bound together by the spine has an associated “print ticket” 404 .
- page 2 has its own print ticket 412 .
- the connections from the spine part 402 to its print ticket 404 and from page 2 to its print ticket 412 are represented using relationships.
- the spine part 402 would have an associated relationship part which contained a relationship that connects the spine to ticket 1 , as shown in the example below.
- Relationships are represented using ⁇ Relationship> elements nested in a single ⁇ Relationships> element. These elements are defined in the http://mmcfrels (PLACEHOLDER) namespace. See the example schema above, and related discussion, for example relationships.
- the relationship element has the following additional attributes:
- Attribute Required Meaning Target Yes A URI that points to the part at the other end of the relationship. Relative URIs MUST be interpreted relative to the source part. Name Yes An absolute URI that uniquely defines the role or purpose of the relationship.
- the Name attribute is not necessarily an actual address. Different types of relationships are identified by their Names. These names are defined in the same way that namespaces are defined for XML namespaces. Specifically, by using names patterned after the Internet domain name space, non-coordinating parties can safely create non-conflicting relationship names—just as they can for XML namespaces.
- the relationships part is not permitted to participate in other relationships. However, it is a first class part in all other senses (e.g., it is URI addressable, it can be opened, read, deleted, etc.). Relationships do not typically point at things outside the package. URIs used to identify relationship targets do not generally include a URI scheme.
- a part and its associated relationship part are connected by a naming convention.
- the relationship part for the spine would be stored in /content/_rels/spine.xml.rels and the relationships for page 2 would be stored in /content/_rels/p2.xml.rels.
- the relationship part for some (other) part in a given “folder” in the name hierarchy is stored in a “sub-folder” called _rels (to identify relationships).
- the name of this relationship-holding part is formed by appending the .rels extension to the name of the original part.
- relationship parts are of the content type application/xml+relationshipsPLACEHOLDER.
- a relationship represents a directed connection between two parts. Because of the way that the relationship is being represented, it is efficient to traverse relationships from their source parts (since it is trivial to find the relationships part for any given part). However, it is not efficient to traverse relationships backwards from the target of the relationship (since the way to find all of the relationships to a part is to look through all of the relationships in the container).
- Package relationships are special relationships whose target is a part, but whose source is not: the source is the package as a whole. To have a “well-known” part is really to have a “well-known” relationship name that helps you find that part. This works because there is a well-defined mechanism to allow relationships to be named by non-coordinating parties, while certain embodiments contain no such mechanism for part name—those embodiments are limited to a set of guidelines.
- the package relationships are found in the package relationships part and is named using the standard naming conventions for relationship parts. Thus: it's named “/_rels/.rels”
- Relationships in this package relationships part are useful in finding well-known parts.
- the package “start” part is the part that is typically processed when a package is opened. It represents the logical root of the document content stored in the package.
- the start part of a package is located by following a well-known package relationship. In one example, this relationship has the following name: http://mmcf-start-part-PLACEHOLDER.
- composition Parts Selector and Sequence
- the described framework defines two mechanisms for building higher-order structures from parts: selectors and sequences.
- a selector is a part which “selects” between a number of other parts.
- a selector part might “select” between a part representing the English version of a document and a part representing the French version of a document.
- a sequence is a part which “sequences” a number of other parts.
- a sequence part might combine (into a linear sequence) two parts, one of which represents a five-page document and one of which represents a ten-page document.
- composition parts can compose other composition parts, so one could have, for example, a selector that selects between two compositions.
- a selector 500 selects between the English and French representation of the report. If the English representation is selected, sequence 502 sequences the English introduction part 506 with the English financial part 508 . Alternately, if the French representation is selected, sequence 504 sequences the French introduction part 510 with the French financial part 512 .
- composition parts are described using a small number of XML elements, all drawn from a common composition namespace.
- XML elements all drawn from a common composition namespace.
- MainDocument.xml represents an entire part in the package and indicates, by virtue of the “selection” tag, that a selection is to be made between different items encapsulated by the “item” tag, i.e., the “EnglishRollup.xml” and the “FrenchRollup.xml”.
- the described framework also defines the following well-known content types for selectors and sequences that all readers or reading devices must understand.
- the producer might, in addition to defining the video as a part of the package, define a JPEG image for the page and interpose a SupportedContentType selector so that if the user's computer has software that understands the Quicktime video, the Quicktime video is selected, otherwise the JPEG image is selected.
- descriptive metadata parts provide writers or producers of packages with a way in which to store values of properties that enable readers of the packages to reliably discover the values. These properties are typically used to record additional information about the package as a whole, as well as individual parts within the container. For example, a descriptive metadata part in a package might hold information such as the author of the package, keywords, a summary, and the like.
- the descriptive metadata is expressed in XML, is stored in parts with well-known content types, and can be found using well-known relationship types.
- Metadata properties are represented by a property name and one or many property values.
- Property values have simple data types, so each data type is described by a single XML qname.
- descriptive metadata properties do not mean that one cannot store data with complex XML types in a package. In this case, one must store the information as a full XML part. When this is done, all constraints about only using simple types are removed, but the simplicity of the “flat” descriptive metadata property model is lost.
- document core properties are commonly used to describe documents and include properties like title, keywords, author, etc.
- Metadata parts holding these document core properties can also hold additional, custom-defined properties in addition to the document core properties.
- descriptive metadata parts have a content type and are targeted by relationships according to the following rules:
- Content type of a descriptive application/xml-SimpleTypeProperties- metadata part MUST be: PLACEHOLDER Content type of a source ANY ANY part which can have relationship targeting descriptive metadata part may be: Name of the relationship *custom-defined Uri- http://mmcf- targeting descriptive namespace* DocumentCore- metadata part may be either: PLACEHOLDER Number of descriptive UNBOUNDED 0 or 1 metadata parts, which can be attached to the source part may be: Number of source parts UNBOUNDED UNBOUNDED which can have the same descriptive metadata part attached MUST be
- Property elements are considered to be immediate children of the root element.
- prns:name Property Name: string attribute which holds property name mcs:type “datatype”
- the following is a table of document core properties that includes the name of the property, the property type and a description.
- RevisionNumber String, optional, single-valued Revision of the document.
- Subtitle String, optional, single-valued A secondary or explanatory title of the document TextDataProperties TextDataProperties, optional, If this document has text, this property defines a single-valued collection of the text properties of the document, CharacterCount int64 such as paragraph count, line count, etc LineCount int64 PageCount int64 ParagraphCount int64 WordCount int64 TimeLastPrinted datetime, optional, single-valued Date and time when this document was last printed.
- Title String, optional, single-valued The document title, as understood by the application that handles the document. This is different than the name of the file that contains the package.
- TitleSortOrder String, optional, single-valued
- the sort order of the title e.g. “The Beatles” will have SortOrder “Beatles”, with no leading “The”.
- ContentType Keyword string256
- Document type as set by application logic.
- the multi-valued type that is stored here should be a recognized “mime-type” This property may be useful for categorizing or searching for documents of certain types.
- the physical model defines various ways in which a package is used by writers and readers. This model is based on three components: a writer, a reader and a pipe between them. FIG. 6 shows some examples of writers and readers working together to communicate about a package.
- the pipe carries data from the writer to the reader.
- the pipe can simply comprise the API calls that the reader makes to read the package from the local file system. This is referred to as direct access.
- any physical package format be designed to allow a reader to begin interpreting and processing the data it receives the data (e.g., parts), before all of the bits of the package have been delivered through the pipe. This capability is called streaming consumption.
- a writer begins to create a package, it does not always know what it will be putting in the package. As an example, when an application begins to build a print spool file package, it may not know how many pages will need to be put into the package. As another example, a program on a server that is dynamically generating a report may not realize how long the report will be or how many pictures the report will have—until it has completely generated the report. In order to allow writers like this, physical packages should allow writers to dynamically add parts after other parts have already been added (for example, a writer must not be required to state up front how many parts it will be creating when it starts writing). Additionally, physical packages should allow a writer to begin writing the contents of a part without knowing the ultimate length of that part. Together, these requirements enable streaming creation.
- streaming creation and streaming consumption can occur simultaneously for a specific package.
- supporting streaming creation and supporting streaming consumption can push a design in opposite directions.
- Physical packages hold a collection of parts. These parts can be laid out in one of two styles: simple ordering and interleaved. With simple ordering, the parts in the package are laid out with a defined ordering. When such a package is delivered in a pure linear fashion, starting with the first byte in the package through to the last, all of the bytes for the first part arrive first, then all of the bytes for the second part, and so on.
- interleaved layout With interleaved layout, the bytes of the multiple parts are interleaved, allowing for improved performance in certain scenarios.
- Two scenarios that benefit significantly from interleaving are multi-media playback (e.g., delivering video and audio at the same time) and inline resource reference (e.g., a reference in the middle of a markup file to an image).
- FIG. 7 illustrates a simple example involving two parts: content.xml 702 and image.jpeg 704 .
- the first part, content.xml describes the contents of a page and in the middle of that page is a reference to an image (image.jpeg) that should appear on the page.
- interleaving may or may not be supported. Different physical packages may handle the internal representation of interleaving differently. Regardless of how the physical package handles interleaving, it's important to remember that interleaving is an optimization that occurs at the physical level and a part that is broken into multiple pieces in the physical file is still one logical part; the pieces themselves aren't parts.
- Communication between writer and reader can be based on sequential delivery of parts or by random-access to parts, allowing them to be accessed out of order. Which of these communication styles is utilized depends on the capabilities of both the pipe and the physical package format. Generally, all pipes will support sequential delivery. Physical packages must support sequential delivery. To support random-access scenarios, both the pipe in use and the physical package must support random-access. Some pipes are based on protocols that can enable random access (e.g., HTTP 1.1 with byte-range support). In order to allow maximum performance when these pipes are in use, it is recommended that physical packages support random-access. In the absence of this support, readers will simply wait until the parts they need are delivered sequentially.
- the logical packaging model defines a package abstraction; an actual instance of a package is based on some particular physical representation of a package.
- the packaging model may be mapped to physical persistence formats, as well as to various transports (e.g., network-based protocols).
- a physical package format can be described as a mapping from the components of the abstract packaging model to the features of a particular physical format.
- the packaging model does not specify which physical package formats should be used for archiving, distributing, or spooling packages. In one embodiment, only the logical structure is specified.
- a package may be “physically” embodied by a collection of loose files, a ZIP file archive, a compound file, or some other format. The format chosen is supported by the targeted consuming device, or by a driver for the device.
- Each physical package format defines a mapping for the following components. Some components are optional and a specific physical package format may not support these optional components.
- Optional Parts Name Names a part. Required Content type Identified the kind of content Required stored in the part. Part contents Stores the actual content of the part. Required Common Mapping Patterns Access Styles Streaming Allows readers to begin processing Optional Consumption parts before the entire package has arrived. Streaming Allows writers to begin writing parts to Optional Creation the package without knowing, in advance, all of the parts that will be written. Simultaneous Allows streaming creation and Optional Creation and streaming consumption to happen at Consumption the same time on the same package. Layout Styles Simple All of the bytes for part N appear in Optional Ordering the package before the bytes for part N + 1. Interleaved The bytes for multiple parts are Optional interleaved. Communication Sequential All of part N is delivered to a reader Optional Styles Delivery before part N + 1. Random- A reader can request the delivery of a Optional Access part out of sequential order.
- mappings from the packaging model to such storage formats it may be desirable to take advantage of any similarities in capabilities between the packaging model and the physical storage medium, while using layers of mapping to provide additional capabilities not inherently present in the physical storage medium.
- some physical package formats may store individual parts as individual files in a file system. In such a physical format, it would be natural to map many part names directly to identical physical file names. Part names using characters which are not valid file system file names may require some kind of escaping mechanism.
- Physical package format mappings define a mechanism for storing a content type for each part.
- Some physical package formats have a native mechanism for representing content types (for example, the “Content-Type” header in MIME). For such physical packages, it is recommended that the mapping use the native mechanism to represent content types for parts.
- some other mechanism is used to represent content types.
- the recommended mechanism for representing content types in these packages is by including a specially-named XML stream in the package, known as the types stream. This stream is not a part, and is therefore not itself URI-addressable. However, it can be interleaved in the physical package using the same mechanisms used for interleaving parts.
- the types stream contains XML with a top level “Types” element, and one or more “Default” and “Override” sub-elements.
- the “Default” elements define default mappings from part name extensions to content types. This takes advantage of the fact that file extensions often correspond to content type.
- “Override” elements are used to specify content types on parts that are not covered by, or are not consistent with, the default mappings. Package writers may use “Default” elements to reduce the number of per-part “Override” elements, but are not required to do so.
- the “Default” element has the following attributes:
- Name Description Required Extension A part name extension.
- a Yes “Default” element matches any part whose name ends with a period followed by this attribute's value.
- ContentType A content type as defined in Yes RFC2045. Indicates the content type of any matching parts (unless overridden by an “Override” element; see below).
- the “Override” element has the following attributes:
- the types stream contains either (a) one matching “Default” element, (b) one matching “Override” element, or (c) both a matching “Default” element and a matching “Override” element (in which case the “Override” element takes precedence).
- “Default” element for any given extension
- “Override” element for any given part name.
- a mapping to any such physical package uses the general mechanism described in this section to allow interleaving of parts.
- the general mechanism works by breaking the data stream of a part into multiple pieces that can then be interleaved with pieces of other parts, or whole parts.
- the individual pieces of a part exist in the physical mapping and are not addressable in the logical packaging model. Pieces may have a zero size.
- Piece_name part_name“/”“[”1*digit “]”[“.last”]“.piece”
- interleaved (pieced) parts can also contain non-interleaved (one-piece) parts, so the following example would be valid:
- Part File(s) Part name File name with path (which should look like URI, changes slash to backslash, etc.).
- Part Content Type File containing XML expressing simple list of file names and their associated types
- the part names are translated into valid Windows file names, as illustrated by the table below.
- “Escaping” is used as a technique to produces valid filename characters when a part name contains a character that can not be used in a file name. To escape a character, the caret symbol ( ⁇ ) is used, followed by the hexadecimal representation of the character.
- the part name /a:b/c/d*.xaml becomes the following file name a ⁇ 25b ⁇ c ⁇ d ⁇ 2a.xaml.
- the specification contained herein may evolve with future enhancements.
- the design of the first edition of this specification includes plans for the future interchange of documents between software systems written based on the first edition, and software systems written for future editions.
- this specification allows for third-parties to create extensions to the specification. Such an extension might, for example, allow for the construction of a document which exploits a feature of some specific printer, while still retaining compatibility with other readers that are unaware of that printer's existence.
- New printers, browsers, and other clients may implement a variety of support for future features. Document authors exploiting new versions or extensions must carefully consider the behavior of readers unaware of those versions of extensions.
- XML markup recognition is based on namespace URIs. For any XML-namespace, a reader is expected to recognize either all or none of the XML-elements and XML-attributes defined in that namespace. If the reader does not recognize the new namespace, the reader will need to perform fallback rendering operations as specified within the document.
- the XML namespace URI ‘http://PLACEHOLDER/version-control’ includes the XML elements and attributes used to construct Fixed payload markup that is version-adaptive and extensions-adaptive. Fixed Payloads are not required to have versioning elements within them. In order to build adaptive content, however, one must use at least one of the ⁇ ver:Compatibility.Rules> and ⁇ ver:AlternativeContent> XML-elements.
- This Fixed-Payload markup specification has an xmlns URI associated with it: ‘http://PLACEHOLDER/pdl’. Using this namespace in a Fixed Payload will indicate to a reader application that only elements defined in this specification will be used. Future versions of this specification will have their own namespaces. Reader applications familiar with the new namespace will know how to support the superset of elements of attributes defined in previous versions. Reader applications that are not familiar with the new version will consider the URI of the new version as if it were the URI of some unknown extension to the PDL. These applications may not know that a relationship exists between the namespaces, that one is a superset of the other.
- compatibility is indicated by the ability of clients to parse and display documents that were authored using previous versions of the specification, or unknown extensions or versions of the specification.
- Various versioning mechanisms address “backward compatibility,” allowing future implementations of clients to be able to support documents based on down-level versions of the specification, as illustrated below.
- a printer or viewer encounters extensions that are unknown, it will look for information embedded alongside the use of the extension for guidance about adaptively rendering the surrounding content.
- This adaptation involves replacing unknown elements or attributes with content that is understood.
- adaptation can take other forms, including purely ignoring unknown content.
- a reader should treat the presence of an unrecognized extension in the markup as an error-condition. If guidance is not provided, the extension is presumed to be fundamental to understanding the content. The rendering failure will be captured and reported to the user.
- the XML vocabulary for supporting extension-adaptive behavior includes the following elements:
- Versioning Element and Hierarchy Description Controls how the parser reacts to an unknown element or attribute.
- ⁇ Ignorable> Declares that the associated namespace URI is ignorable.
- ⁇ ProcessContent> Declares that if an element is ignored, the contents of the element will be processed as if it was contained by the container of the ignored element.
- ⁇ CarryAlong> Indicates to the document editing tools whether ignorable content should be preserved when the document is modified.
- ⁇ MustUnderstand> Reverses the effect of an element declared ignorable.
- ⁇ AlternateContent> In markup that exploits versioning/extension features, the ⁇ AlternateContent> element associates substitute “fallback” markup to be used by reader applications that are not able to handle the markup specified as Preferred.
- ⁇ Prefer> Specifies preferred content. This content will that a client is aware of version/extension features.
- ⁇ Fallback> For down-level clients, specifies the ‘down-level’ content to be substituted for the preferred content.
- Compatibility.Rules can be attached to any element that can hold an attached attribute, as well as to the Xaml root element.
- the ⁇ Compatibility.Rules> element controls how the parser reacts to unknown elements or attributes. Normally such items are reported as errors. Adding an Ignorable element to a Compatibilitiy.Rules property informs the compiler that items from certain namespaces can be ignored.
- Compatibility.Rules can contain the elements Ignorable and MustUnderstand. By default, all elements and attributes are assumed to be MustUnderstand. Elements and attributes can be made Ignorable by adding an Ignorable element into its container's Compatibility.Rules property. An element or property can be made MustUnderstand again by adding a MustUnderstand element to one of the nested containers. One Ignorable or MustUnderstand refers to a particular namespace URI within the same Compatibility.Rules element.
- the ⁇ Compatibility.Rules> element affects the contents of a container, not the container's own tag or attributes. To affect a container's tag or attributes, its container must contain the compatibility rules.
- the Xaml root element can be used to specify compatibility rules for elements that would otherwise be root elements, such as Canvas.
- the Compatibility.Rules compound attribute is the first element in a container.
- the ⁇ Ignorable> element declares that the enclosed namespace URI is ignorable. An item can be considered ignorable if an ⁇ Ignorable> tag is declared ahead of the item in the current block or a container block, and the namespace URI is unknown to the parser. If the URI is known, the Ignorable tag is disregarded and all items are understood. In one embodiment, all items not explicitly declared as Ignorable must be understood.
- the Ignorable element can contain ⁇ ProcessContent> and ⁇ CarryAlong> elements, which are used to modify how an element is ignored as well as give guidance to document editing tools how such content should be preserved in edited documents.
- the ⁇ ProcessContent> element declares that if an element is ignored, the contents of the element will be processed as if it was contained by the container of the ignored element.
- the optional ⁇ CarryAlong> element indicates to the document editing tools whether ignorable content should be preserved when the document is modified.
- the method by which an editing tool preserves or discards the ignorable content is in the domain of the editing tool. If multiple ⁇ CarryAlong> elements refer to the same element or attribute in a namespace, the last ⁇ CarryAlong> specified has precedence.
- Attributes A space delimited list of element names that are requested to be carried along when the document is edited, or “*” indicating the contents of all elements in the namespace should be carried along. The Elements attribute defaults to “*” if it is not specified. Attributes A space delimited list of attribute names within the elements that are to be carried along, or a “*” indicating that all attributes of the elements should be carried along. When an element is ignored and carried along, all attributes are carried along regardless of the contents of this attribute. This attribute only has an effect if the attribute specified is used in an element that is not ignored, as in the example below. By default, Attributes is “*”.
- ⁇ MustUnderstand> is an element that reverses the effects of an Ignorable element. This technique is useful, for example, when combined with alternate content. Outside the scope defined by the ⁇ MustUnderstand> element, the element remains Ignorable.
- the ⁇ AlternateContent> element allows alternate content to be provided if any part of the specified content is not understood.
- An AlternateContent block uses both a ⁇ Prefer> and a ⁇ Fallback> block. If anything in the ⁇ Prefer> block is not understood, then the contents of the ⁇ Fallback> block are used.
- a namespace is declared ⁇ MustUnderstand> in order to indicate that the fallback is to be used. If a namespace is declared ignorable and that namespace is used within a ⁇ Prefer> block, the content in the ⁇ Fallback> block will not be used.
- This example uses a fictitious markup namespace, http://PLACEHOLDER/Circle, that defines an element Circle in its initial version and uses the Opacity attribute of Circle introduced in a future version of the markup (version 2) and the Luminance property introduced in an even later version of the markup (version 3).
- This markup remains loadable in versions 1 and 2, as well as and beyond.
- the ⁇ CarryAlong> element specifies that v3:Luminance MUST be preserved when editing even when the editor doesn't understand v3:Luminance.
- ⁇ MustUnderstand> element causes the references to v3:Luminance to be in error, even though it was declared to Ignorable in the root element. This technique is useful if combined with alternate content that uses, for example, the Luminance property of Canvas added in Version 2 instead (see below). Outside the scope of the Canvas element, Circle's Luminance property is ignorable again.
- Readers and writers of reach packages can implement their own parsers and rendering engines, based on the specification of the reach package format.
- reach packages address the requirements that information workers have for distributing, archiving, and rendering documents.
- reach packages can be unambiguously and exactly reproduced or printed from the format in which they are saved, without tying client devices or applications to specific operating systems or service libraries.
- the reach payload is expressed in a neutral, application-independent way, the document can typically be viewed and printed without the application used to create the package. To provide this ability, the notion of a fixed payload is introduced and contained in a reach package.
- a reach package can contain additional payloads that are not fixed payloads, but instead are richer and perhaps editable representations of the document. This allows a package to contain a rich, editable document that works well in an editor application as well as a representation that is visually accurate and can be viewed without the editing application.
- FIG. 10 illustrates an exemplary reach package and, in this embodiment, each of the valid types of parts that can make up or be found in a package.
- the table provided just below lists each valid part type and provides a description of each:
- Each FixedPage part represents the content of a page application/xml+FixedPage-PLACEHOLDER FixedPanel
- Each FixedPanel glues together a set of FixedPages in application/xml+FixedPanel-PLACEHOLDER order Font Fonts can be embedded in a package to ensure reliable reproduction of the document's glyphs.
- Image Image parts can be included image/jpeg image/png Composition Parts Selectors and sequences can be used to build a application/xml+Selector+[XXX] “composition” block, introducing higher-level organization Application/xml+Sequence+[XXX] to the package.
- Descriptive Metadata Descriptive metadata (e.g., title, keywords) can be application/xml+SimpleTypeProperties-PLACEHOLDER included for the document.
- Print Ticket A print ticket can be included to provide settings to be application/xml+PRINTTICKET-PLACEHOLDER used when printing the package.
- terminal nodes refer (via their ⁇ item> elements) to a set of parts called the reach payload roots.
- a fixed payload is a payload whose root part is a FixedPanel part.
- each of the fixed payloads in FIG. 10 has as its root part an associated FixedPanel part.
- the payload includes the full closure of all of the parts required for valid processing of the FixedPanel. These include:
- a reach package may contain many types of composition part, only a well-defined set of types of composition parts have well-defined behavior according to this document. These composition parts with well-defined behavior are called reach composition parts. Parts other than these are not relevant when determining validity of a reach package.
- composition parts are defined as reach composition parts:
- reach selectors Those selector composition parts defined as reach composition parts are called reach selectors.
- a language selector picks between representations based on their natural language, such as English or French. To discover this language, the selector inspects each of its items. Only those that are XML are considered. For those, the root element of each one is inspected to determine its language. If the xml:lang attribute is not present, the part is ignored. The selector then considers each of these parts in turn, selecting the first one whose language matches the system's default language.
- a color selector chooses between representations based on whether they are monochromatic or color.
- the page size selector chooses between representations based on their page size.
- a content type selector chooses between representations based on whether their content types can be understood by the system.
- reach composition parts Those sequence composition parts defined as reach composition parts are called reach sequences.
- a fixed sequence combines children that are fixed content into a sequence.
- the fixed payload can contain the following kinds of parts: a FixedPanel part, a FixedPage part, Image parts, Font parts, Print Ticket parts, and Descriptive Metadata parts, each of which is discussed below under its own sub-heading.
- the document structure of the Fixed-Payload identifies FixedPages as part of a spine, as shown below.
- the relationships between the spine part and the page parts are defined within the relationships stream for the spine.
- the FixedPanel part is of content type application/xml+PLACEHOLDER.
- the spine of the Fixed-Payload content is specified in markup by including a ⁇ FixedPanel> element within a ⁇ Document> element.
- the ⁇ FixedPanel> element specifies the sources of the pages that are held in the spine.
- the ⁇ Document> element has no attributes and must have only one child: ⁇ FixedPanel>.
- the ⁇ FixedPanel> element is the document spine, logically binding an ordered sequence of pages together into a single multi-page document. Pages always specify their own width and height, but a ⁇ FixedPanel> element may also optionally specify a height and width. This information can be used for a variety of purposes including, for example, selecting between alternate representations based on page size. If a ⁇ FixedPanel> element specifies a height and width, it will usually be aligned with the width and height of the pages within the ⁇ FixedPanel>, but these dimensions do not specify the height and width of individual pages.
- PageHeight Typical height of pages contained in the ⁇ FixedPanel Optional
- PageWidth Typical width of pages contained in the ⁇ FixedPanel Optional
- the ⁇ PageContent> element is the only allowable child element of the ⁇ FixedPanel> element.
- the ⁇ PageContent> elements are in sequential markup order matching the page order of the document.
- Each ⁇ PageContent> element refers to the source of the content for a single page. To determine the number of pages in the document, one would count the number of ⁇ PageContent> children contained within the ⁇ FixedPanel>.
- the ⁇ PageContent> element has no allowable children, and has a single required attribute, Source, which refers to the FixedPage part for the contents of a page.
- the ⁇ PageContent> element may optionally include a PageHeight and PageWidth attribute, here reflecting the size of the single page.
- the required page size is specified in the FixedPage part; the optional size on ⁇ PageContent> is advisory only.
- the ⁇ PageContent> size attributes allow applications such as document viewers to make visual layout estimates for a document quickly, without loading and parsing all of the individual FixedPage parts.
- the URI string of the page content must reference the part location of the content relative to the package.
- Each ⁇ PageContent> element in the ⁇ FixedPanel> references by name (URI) a FixedPage part.
- Each FixedPage part contains FixedPage markup describing the rendering of a single page of content.
- the FixedPage part is of Content Type application/xml+PLACEHOLDER-FixedPage.
- the markup order of the Glyphs child elements contained within a FixedPage must be the same as the desired reading order of the text content of the page.
- This reading order may be used both for interactive selection/copy of sequential text from a FixedPage in a viewer, and for enabling access to sequential text by accessibility technology. It is the responsibility of the application generating the FixedPage markup to ensure this correspondence between markup order and reading order.
- image parts used by FixedPages in a reach package can be in a fixed number of formats, e.g., PNG or JPEG, although other formats can be used.
- reach packages support a limited number of font formats.
- the supported font format include the TrueType format and the OpenType format.
- OpenType font format is an extension of the TrueType font format, adding support for PostScript font data and complex typographical layout.
- An OpenType font file contains data, in table format, that comprises either a TrueType outline font or a PostScript outline font.
- font formats are not supported in reach packages: Adobe type 1, Bitmap font, Font with hidden attribute (use system Flag to decide whether to enumerate it or not), Vector fonts, and EUDC font (whose font family name is EUDC).
- Print ticket parts provide settings that can be used when the package is printed. These print tickets can be attached in a variety of ways to achieve substantial flexibility. For example, a print ticket can be “attached” to an entire package and its settings will affect the whole package. Print tickets can be further attached at lower levels in the structure (e.g., to individual pages) and these print tickets will provide override settings to be used when printing the part to which they are attached.
- descriptive metadata parts provide writers or producers of packages with a way in which to store values of properties that enable readers of the packages to reliably discover the values. These properties are typically used to record additional information about the package as a whole, as well as individual parts within the container.
- This section describes some basic information associated with the FixedPage markup and includes the following sections: “Fixed Payload and Other Markup Standards”, “FixedPage Markup Model”, “Resources and Resource References”, and “FixedPage Drawing Model”.
- the FixedPanel and FixedPage markup for the Fixed Payload in a reach package is a subset from Windows® Longhorn's Avalon XAML markup. That is, while the Fixed Payload markup stands alone as an independent XML markup format (as documented in this document), it loads in the same way as in Longhorn systems, and renders a WYSIWYG reproduction of the original multi-page document.
- XAML markup is a mechanism that allows a user to specify a hierarchy of objects and the programming logic behind the objects as an XML-based markup language. This provides the ability for an object model to be described in XML. This allows extensible classes, such as classes in the Common Language Runtime (CLR) of the NET Framework by Microsoft Corporation, to be accessed in XML.
- CLR Common Language Runtime
- the XAML mechanism provides a direct mapping of XML tags to CLR objects and the ability to represent related code in the markup. It is to be appreciated and understood that various implementations need not specifically utilize a CLR-based implementation of XAML. Rather, a CLR-based implementation constitutes but one way in which XAML can be employed in the context of the embodiments described in this document.
- FIG. 11 illustrates an exemplary mapping of CLR concepts (left side components) to XML (right side components).
- Namespaces are found in the xmlns declaration using a CLR concept called reflection.
- Classes map directly to XML tags.
- Properties and events map directly to attributes.
- a user can specify a hierarchy tree of any CLR objects in XML markup files.
- Xaml files are xml files with a .xaml extension and a mediatype of application/xaml+xml.
- Xaml files have one root tag that typically specifies a namespace using the xmlns attribute.
- the namespace may be specified in other types of tags.
- tags in a xaml file generally map to CLR objects.
- Tags can be elements, compound properties, definitions or resources. Elements are CLR objects that are generally instantiated during runtime and form a hierarchy of objects.
- Compound property tags are used to set a property in a parent tag.
- Definition tags are used to add code into a page and define resources. The resource tag provides the ability to reuse a tree of objects merely by specifying the tree as a resource. Definition tags may also be defined within another tag as an xmlns attribute.
- the markup can be parsed and processed (typically by a reader).
- a suitably configured parser determines from the root tag which CLR assemblies and namespaces should be searched to find a tag. In many instances, the parser looks for and will find a namespace definition file in a URL specified by the xmlns attribute.
- the namespace definition file provides the name of assemblies and their install path and a list of CLR namespaces.
- the parser determines which CLR class the tag refers to using the xmlns of the tag and the xmlns definition file for that xmlns.
- the parser searches in the order that the assemblies and namespaces are specified in the definition file. When it finds a match, the parser instantiates an object of the class.
- object models can be represented in an XML-based file using markup tags.
- This ability to represent object models as markup tags can be used to create vector graphic drawings, fixed-format documents, adaptive-flow documents, and application UIs asynchronously or synchronously.
- the Fixed Payload markup is a very minimal, nearly completely parsimonious subset of Avalon XAML rendering primitives. It represents visually anything that can be represented in Avalon, with full fidelity.
- the Fixed Payload markup is a subset of Avalon XAML elements and properties—plus additional conventions, canonical forms, or restrictions in usage compared to Avalon XAML.
- the radically-minimal Fixed Payload markup set defined reduces the cost associated with implementation and testing of reach package readers, such as printer RIPs or interactive viewer applications—as well as reducing the complexity and memory footprint of the associated parser.
- the parsimonious markup set also minimizes the opportunities for subsetting, errors, or inconsistencies among reach package writers and readers, making the format and its ecosystem inherently more robust.
- the reach package will specify markup for additional semantic information to support viewers or presentations of reach package documents with features such as hyperlinks, section/outline structure and navigation, text selection, and document accessibility.
- a FixedPage part is expressed in an XML-based markup language, based on XML-Elements, XML-Attributes, and XML-Namespaces.
- Three XML-Namespaces are defined in this document for inclusion in FixedPage markup.
- One such namespace references the Version-control elements and attributes defined elsewhere in this specification.
- the principle namespace used for elements and attributes in the FixedPage markup is “http://schemas.microsoft.com/MMCF-PLACEHOLDER-FixedPage”.
- FixedPage markup introduces a concept of “Resources” which requires a third namespace, described below.
- FixedPage markup is expressed using XML-Elements and XML-Attributes, its specification is based upon a higher-level abstract model of “Contents” and “Properties”.
- the FixedPage elements are all expressed as XML-elements. Only a handful of FixedPage elements can hold “Contents”, expressed as child XML-elements. But a property-value may be expressed using an XML-Attribute or using a child XML-element.
- FixedPage Markup also depends upon the twin concepts of a Resource-Dictionary and Resource-Reference.
- the combination of a Resource-Dictionary and multiple Resource-References allows for a single property-value to be shared by multiple properties of multiple FixedPage-markup elements.
- markup which can be used to specify the value of a FixedPage-markup property.
- the property name is used as an XML-attribute name, and a special syntax for the attribute-value indicates the presence of a resource reference.
- the syntax for expressing resource-references is described in the section entitled “Resources and Resource-References”.
- Any property-value that is not specified as a resource-reference may be expressed in XML using a nested child XML-element identifying the property whose value is being set. This “Compound-Property Syntax” is described below.
- non-resource-reference property-values can be expressed as simple-text strings. Although all such property-values may be expressed using Compound-Property Syntax, they may also be expressed using simple XML-attribute syntax
- any property may be set no more than once, regardless of the syntax used for specifying a value.
- XML-attribute-syntax may be used to specify a property-value.
- SolidColorBrush FixedPage-markup element
- Color the property called “Color”
- property values cannot be expressed as a simple string, e.g. an XML-element is used to describe the property value. Such a property value cannot be expressed using simple attribute syntax. But they can be expressed using compound-property syntax.
- a child XML-Element In compound-property syntax, a child XML-Element is used, but the XML-Element name is derived from a combination of the parent-element name and the property name, separated by dot.
- the FixedPage-markup element ⁇ Path> which has a property “Fill” which may be set to a ⁇ SolidColorBrush>
- the following markup can be used to set the “Fill” property of the ⁇ Path> element:
- Child XML-elements representing “Properties” must appear before child XML-elements representing “Contents”.
- the order of individual Compound-Property child XML-elements is not important, only that they appear together before any “Contents” of the parent-element.
- Resource Dictionaries can be used to hold shareable property values, each called a resource. Any property value which is itself a FixedPage-markup element may be held in a Resource Dictionary. Each resource in a Resource Dictionary carries a name. The resource's name can be used to reference the resource from a property's XML-attribute.
- the ⁇ Canvas> and ⁇ FixedPage> elements can carry a Resource Dictionary.
- a Resource Dictionary is expressed in markup as a property of the ⁇ Canvas> and ⁇ FixedPage> elements in a property called “Resources”.
- Resources individual resource-values are embedded directly within the ⁇ FixedPage.Resources> or ⁇ Canvas.Resources> XML-element. Syntactically, the markup for ⁇ Canvas.Resources> and ⁇ FixedPage.Resource> resembles that for markup elements with “Contents”.
- ⁇ Canvas.Resources> or ⁇ FixedPage.Resources> must precede any compound-property-syntax property values of the ⁇ Canvas> or ⁇ FixedPage>. They similarly must precede any “Contents” of the ⁇ Canvas> or ⁇ FixedPage>.
- Any ⁇ FixedPage> or ⁇ Canvas> can carry a Resource Dictionary, expressed using the ⁇ Canvas.Resources> XML-element.
- Each element within a single resource dictionary is given a unique name, identified by using an XML-attribute associated with the element.
- the Name attribute is taken from a namespace other than that of the FixedFormat elements.
- the URI for that XML-namespace is “http://schemas.microsoft.com/PLACEHOLDER-for-resources”.
- two geometries are defined: one for a rectangle and the other for a circle.
- ⁇ Rectangle ⁇ will denote the geometry to be used.
- the rectangular region defined by the geometry objects in the dictionary will be filled by the SolidColorBrush.
- a resource reference must not occur within the definition of a resource in a Resource Dictionary.
- the Resource Dictionary of an inner ⁇ Canvas> may re-use a Name defined in the Resource Dictionary of some outer ⁇ Canvas> or ⁇ FixedPage>.
- the FixedPage (or a nested Canvas child) element is the element on which other elements are rendered.
- the arrangement of content is controlled by properties specified for the FixedPage (or Canvas), the properties specified for elements on the FixedPage (or Canvas), and by compositional rules defined for the Fixed-Payload namespace.
- all elements are positioned relative to the current origin (0,0) of the coordinate system.
- the current origin can be moved by applying the RenderTransform attribute to each element of the FixedPage or Canvas that contains an element.
- the following example illustrates positioning of elements through RenderTransform.
- the coordinate system is initially set up so that one unit in that coordinate system is equal to 1/96 th of an inch, expressed as a floating point value, the origin (0,0) of the coordinate system is the left top corner of the FixedPage element.
- a RenderTransform attribute can be specified on any child element to apply an affine transform to the current coordinate system.
- the page dimensions are specified by the “PageWidth” and “PageHeight” parameters on the FixedPage element.
- composition must occur according to these rules, and in the following order:
- the Fixed Payload includes a small set of XML elements used in markup to represent pages and their contents.
- the markup in a FixedPanel part brings the pages of a document together to a common, easily-indexed root, using ⁇ Document>, ⁇ FixedPanel>, and ⁇ PageContent> elements.
- Each FixedPage part represents a page's contents in a ⁇ FixedPage> element with only ⁇ Path> and ⁇ Glyphs> elements (which together do all of the drawing), and the ⁇ Canvas> element to group them.
- the Fixed-Payload markup's element hierarchy is summarized in following sections entitled “Top-level elements”, “Geometry for Path, Clip”, “Brushes used to fill a Path, Glyphs, or OpacityMask”, “Resource dictionaries for FixedPage or Canvas”, “Opacity masks for alpha transparency”, “Clipping paths” and “Transforms”.
- Each FixedPage part represents a page's contents in XML markup rooted in a ⁇ FixedPage> element.
- This FixedPage markup provides WYSIWYG fidelity of a document between writers and readers, with only a small set of elements and properties: ⁇ Path> and ⁇ Glyphs> elements (which together do all of the drawing), and the ⁇ Canvas> element to group them.
- Opacity is used to transparently blend the two elements when rendering (Alpha Blending).
- the Opacity attribute ranges from 0 (fully transparent) to 1 (fully opaque). Values outside of this inclusive range are clamped to this range during markup parsing. So, effectively, [ ⁇ . . . 0] is transparent and [1 . . . ⁇ ] is opaque.
- the Opacity Attribute is applied through the following computations (assuming non-premultiplied source and destination colors, both specified as scRGB):
- a S Alpha value present in source surface
- the Clip property is specified as one of the geometric elements ⁇ GeometryCollection> or ⁇ PathGeometry> (see Path.Data for details).
- the Clip property is applied in the following way:
- MatrixTransform is the only transformation attribute available to elements. It expresses an affine transformation. The syntax follows:
- the six numbers specified in the Matrix attribute are m00, m01, m10, m11, dx, dy.
- the full matrix looks like:
- a given coordinate X,Y is transformed with a RenderTransform to yield the resulting coordinate X′,Y′ by applying these computations:
- X′ X*m 00 +Y*m 10 +dx
- Y′ X*m 01 +Y*m 11 +dy
- the OpacityMask specifies a Brush, but in contrast to a Fill Brush, only the alpha channel (see Opacity attribute above) of the brush is used as an additional parameter for rendering the element.
- Each alpha value for each pixel of the element is then additionally multiplied with the alpha value at the corresponding position in the OpacityMask Brush.
- the ⁇ Canvas> element is used to group elements together.
- FixedPage elements are grouped together in a ⁇ Canvas> when they share a composed common attribute (i.e., Opacity, Clip, RenderTransform, or OpacityMask).
- a composed common attribute i.e., Opacity, Clip, RenderTransform, or OpacityMask.
- the ⁇ Canvas> element has only the common attributes described earlier: Opacity, Clip, RenderTransform, and OpacityMask. They are used with the ⁇ Canvas> element as described in the table below:
- Child Element Effect on Canvas Clip Clip describes the region to which a brush can be applied by the Canvas' child elements.
- RenderTransform RenderTransform establishes a new coordinate frame for the children elements of the canvas, such as another canvas. Only MatrixTransform supported OpacityMask Specifies a rectangular mask of alpha values that is applied in the same fashion as the Opacity attribute, but allow different alpha value on a pixel-by-pixel basis
- Child Glyphs elements contained within nested Canvas elements are ordered in-line between sibling Glyphs elements occurring before and after the Canvas.
- the Path Element is an XML-based element that describes a geometric region.
- the geometric region is a shape which may be filled, or used as a clipping path.
- Common geometry types such as rectangle and ellipse, can be represented using Path geometries.
- a path is described by specifying the required Geometry.Data child element and the rendering attributes, such as Fill or Opacity.
- Child Element Effect on Path Clip Clip describes the region to which a brush can be applied by the path's geometry.
- RenderTransform RenderTransform establishes a new coordinate frame for the children elements of the path, such as the geometry defined by Path.Data. Only MatrixTransform supported OpacityMask Specifies a rectangular mask of alpha values that is applied in the same fashion as the Opacity attribute, but allows different alpha value for different areas of the surface Data Describes the path's geometry. Fill Describes the brush used to paint the path's geometry.
- a path's geometry is specified as a series of nested child elements of ⁇ Path.Data>, as shown below.
- the geometry may be represented with either a ⁇ GeometryCollection> containing a set of ⁇ PathGeometry> child elements, or a single ⁇ PathGeometry> child element containing ⁇ Path Figures>.
- ⁇ GeometryCollection> or ⁇ PathGeometry> elements define the geometry for a clipping path used in the Clip property of Canvas, Path, or Glyphs.
- Geometry Elements Description GeometryCollection A set of PathGeometry elements rendered using Boolean CombineMode operations. PathGeometry A set of Path Figure elements that are each filled using the same FillRule option. Path Figure A set of one or more segment elements StartSegment, PolyLineSegment PolyBezierSegment CloseSegment
- a GeometryCollection is a set of geometric objects that are combined together for rendering according to Boolean CombineMode options.
- the GeometryCollection element is the mechanism in FixedPage markup for building visual combinations of geometric shapes.
- the CombineMode attribute specifies the Boolean operation used to combine the set of geometric shapes in a GeometryCollection. Depending on the mode, different regions will be included or excluded.
- CombineMode Options Description Complement Specifies that the existing region is replaced by the result of the existing region being removed from the new region. Said differently, the existing region is excluded from the new region. Exclude Specifies that the existing region is replaced by the result of the new region being removed from the existing region. Said differently, the new region is excluded from the existing region. Intersect Two regions are combined by taking their intersection. Union Two regions are combined by taking the union of both. Xor Two regions are combined by taking only the areas enclosed by one or the other region, but not both.
- CombineModes are handled as follows:
- a PathGeometry element contains a set of Path Figure elements. The union of the Path Figures defines the interior of the PathGeometry.
- the filled area of PathGeometry is defined by taking all of the contained Path Figure that have their Filled attribute set to true and applying the FillRule to determine the enclosed area.
- FillRule options specify how the intersecting areas of Figure elements contained in a Geometry are combined to form the resulting area of the Geometry.
- the EvenOdd Fill algorithm determines the “insideness” of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray. Starting with a count of zero, add one each time a Segment crosses the ray from left to right and subtract one each time a path segment crosses the ray from right to left. After counting the crossings, if the result is zero then the point is outside the path. Otherwise, it is inside.
- the NonZero Fill algorithm determines the “insideness” of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path Segments from the given shape that the ray crosses. If this number is odd, the point is inside; if even, the point is outside.
- a Path Figure element is composed of a set of one or more line or curve segments.
- the segment elements define the shape of the Path Figure.
- the Path Figure must always define a closed shape.
- a figure requires a starting point, after which each line or curve segment continues from the last point added.
- the first segment in the Path Figure set must be a StartSegment, and CloseSegment must be the last segment.
- StartSegment has a Point attribute.
- CloseSegment has no attributes.
- StartSegment Attribute Description Point The location of the line segment (starting point).
- Fixed-Payload markup includes the PolyBezierSegment for drawing cubic Bézier curves.
- a brush is used to paint the interior of geometric shapes defined by the ⁇ Path> element, and to fill the character bitmaps rendered with a ⁇ Glyphs> element.
- a brush is also used in defining the alpha-transparency mask in ⁇ Canvas.OpacityMask>, ⁇ Path.OpacityMask>, and ⁇ Glyphs.OpacityMask>.
- the FixedPage markup includes the following brushes:
- SolidColorBrush Fills defined geometric regions with a solid color.
- ImageBrush Fills a region with an image.
- DrawingBrush Fills a region with a vector drawing.
- LinearGradientBrush Fills a region with a linear gradient.
- RadialGradientBrush Fills a region with a radial gradient.
- the following properties are applicable to all brushes, except for the simple brush SolidColorBrush, which has fewer optional child elements.
- the Horizontal Alignment attribute specifies how the brush is aligned horizontally within the area it fills out.
- the Vertical Alignment attribute specifies how the brush is aligned vertically within the area it fills out.
- the ViewBox attribute has a default value of (0,0,0,0), interpreted as unset. When unset, no adjustment is made and the Stretch attribute is ignored.
- the viewbox specifies a new coordinate system for the contents, i.e. redefines the extent and origin of the viewport.
- the Stretch attribute helps to specify how those contents map into the viewport.
- the value of the viewBox attribute is a list of four “unitless” numbers ⁇ min-x>, ⁇ min-y>, ⁇ width> and ⁇ height>, separated by whitespace and/or a comma, and is of type Rect.
- the Viewbox rect specifies the rectangle in user space that maps to the bounding box. It works the same as inserting a scaleX and scaleY.
- the Stretch attribute (in case the option is other than none) provides additional control for preserving the aspect ratio of the graphics. An additional transformation is applied to all descendants of the given element to achieve the specified effect. If there is a transform on the Brush, it is applied “above” the mapping to ViewBox.
- the Stretch attribute has the following modes: None, Fill, Uniform, UniformToFill.
- the Path.Brush and Canvas.Brush child elements include the following: SolidColorBrush, ImageBrush, and DrawingBrush.
- SolidColorBrush fills defined geometric regions with a solid color. If there is an alpha component of the color, it is combined in a multiplicative way with the corresponding opacity attribute in the Brush.
- ImageBrush can be used to fill a space with an image.
- the markup for ImageBrush allows a URI to be specified. If all other attributes are set to their default values, the image will be stretched to fill the bounding box of the region.
- the ImageSource attribute must reference either one of the supported Reach Image Formats or a selector which leads to an image of one of these types.
- DrawingBrush can be used to fill a space with a vector drawing.
- DrawingBrush has a Drawing Child Element, whose use in markup is shown below.
- Gradients are drawn by specifying a set of gradient stops as XML Child Elements of the gradient brushes. These gradient stops specify the colors along some sort of progression. There are two types of gradient brushes supported in this framework: linear and radial.
- LinearGradientBrush and GradientBrush share the following common attributes:
- Attribute Description SpreadMethod This property describes how the brush should fill the content area outside of the primary, initial gradient area. Default value is Pad. MappingMode This property determines whether the parameters describing the gradient are interpreted relative to the object bounding box. Default value is relative-to- bounding-box.
- SpreadMethod options specify how the space is filled.
- the default value is Pad.
- the LinearGradientBrush specifies a linear gradient brush along a vector.
- This example shows a page with a rectangular path that is filled with a linear gradient.
- the Path also has a clip property in the shape of an octagon which clips it.
- the RadialGradient is similar in programming model to the linear gradient. However, whereas the linear gradient has a start and end point to define the gradient vector, the radial gradient has a circle along with a focal point to define the gradient behavior.
- the circle defines the end point of the gradient—in other words, a gradient stop at 1.0 defines the color at the circle's circumference.
- the focal point defines center of the gradient.
- a gradient stop at 0.0 defines the color at the focal point.
- the RadialGradientBrush interpolates the colors from the Focus to the circumference of the ellipse. The circumference is determined by the Center and the radii. Default is 0.5, 0.5 Focus Focus of the radial gradient. RadiusX Radius in the X dimension of the ellipse which defines the radial gradient. Default is 0.5 RadiusY Radius in the Y dimension of the ellipse which defines the radial gradient. Default is 0.5 FillGradient Pad, Reflect, Repeat
- each pixel of each element carries an alpha value ranging from 0.0 (completely transparent) to 1.0 (fully opaque).
- the alpha value is used when blending elements to achieve the visual effect of transparency.
- Each element can have an Opacity attribute with which the alpha value of each pixel of the element will be multiplied uniformly.
- OpacityMask allow the specification of per-pixel opacity which will control how rendered content will be blended into its destination.
- the opacity specified by OpacityMask is combined multiplicatively with any opacity which may already happen to be present in the alpha channel of the contents.
- the per-pixel Opacity specified by the OpacityMask is determined by looking at the alpha channel of each pixel in the mask—the color data is ignored.
- OpacityMask The type of OpacityMask is Brush. This allows the specification of how the Brush's content is mapped to the extent of the content in a variety of different ways. Just as when used to fill geometry, the Brushes default to filling the entire content space, stretching or replicating its content as appropriate. This means that an ImageBrush will stretch its ImageSource to completely cover the contents, a GradientBrush will extend from edge to edge.
- the following example illustrates how an OpacityMask is used to create a “fade effect” on a Glyphs element.
- the OpacityMask in the example is a linear gradient that fades from opaque black to transparent black.
- the Fill property of the Path element specifies the fill contents for the described region. Images are one type of fill, drawn into a region by the ImageBrush. All brushes have default behavior that will fill an entire region by either stretching or repeating (tiling) the brush content as appropriate. In the case of ImageBrush, the content specified by the ImageSource property will be stretched to completely cover the region.
- the markup below demonstrates how to place an image onto a Canvas.
- ⁇ Canvas> ⁇ Path> ⁇ Path.Data> ⁇ GeometryCollection> ... ⁇ /GeometryCollection> ⁇ /Path.Data> ⁇ Path.Fill> ⁇ ImageBrush ImageSource “/images/dog.jpg” /> ⁇ /Path.Fill> ⁇ /Path> ⁇ /Canvas>
- Colors can be specified in illustrated and described markup using scRGB or sRGB notation.
- the scRGB specification is known as “IEC 61966-2-2 scRGB” and can be obtained from www.iec.ch
- the ARGB parameters are described in the table below.
- Metadata could contain an ICC color profile, or other color definition data.
- Text is represented in Fixed Payloads using a Glyphs element.
- the element is designed to meet requirements for printing and reach documents.
- Glyphs elements may have combinations of the following properties.
- FontRenderingEmSize Font size in drawing surface units Measured in (default 96ths of an inch) Length units. FontHintingEmSize Size to hint for in points. Fonts may Measured in include hinting to produce subtle doubles differences at different sizes, such as representing thicker stems and more open bowls in points size of the smaller sizes, to produce results that font look more like the same style than pure scaling can. This is not the same as hinting for device pixel resolution, which is handled automatically.
- GlyphIndices Array of 16 bit glyph numbers that Part of Indices represent this run. property. See below for representation. AdvanceWidths Array of advance widths, one for each Part of Indices glyph in GlyphIndices. The nominal property. See origin of the nth glyph in the run (n > 0) below for is the nominal origin of the n ⁇ 1th glyph representation. plus the n ⁇ 1th advance width added along the runs advance vector. Base glyphs generally have a non-zero advance width, combining glyphs generally have a zero advance width. GlyphOffsets Array of glyph offsets.
- Base glyphs generally have a glyph offset of (0, 0), combining glyphs generally have an offset that places them correctly on top of the nearest preceding base glyph.
- GlyphTypeface The physical font from which all FontUri, glyphs in this run are drawn. FontFaceIndex and StyleSimulations properties UnicodeString Optional* yes Array of characters represented by this glyph run.
- the character or character(s) and glyph or glyph(s) are called a cluster. All entries in the ClusterMap for a multi-character cluster map to the offset in the GlyphIndices array of the first glyph of the cluster. Sideways The glyphs are laid out on their side. yes By default, glyphs are rendered as they would be in horizontal text, with the origin corresponding to the Western baseline origin. With the sideways flag set, the glyph is turned on it's side, with the origin being the top center of the unturned glyph. BidiLevel The Unicode algorithm bidi nesting yes level.
- Each glyph defines metrics that specify how it aligns with other glyphs. Exemplary metrics in accordance with one embodiment are shown in FIG. 12 .
- glyphs within a font are either base glyphs or combining marks that may be attached to base glyphs.
- Base glyphs usually have an advance width that is non-zero, and a 0,0 offset vector.
- Combining marks usually have a zero advance width. The offset vector may be used to adjust the position of a combining mark and so may have a non 0,0 value for combining marks.
- Each glyph in the glyph run has three values controlling its position.
- the values indicate origin, advance width, and glyph offset, each of which is described below:
- Cluster maps contain one entry per Unicode codepoint.
- the value in the entry is the offset of the first glyph in the GlyphIndices array that represents this codepoint.
- the codepoint is part of a group of codepoints representing an indivisible character cluster
- the first glyph in the GlyphIndices array represents the offset of the first glyph that represents that cluster.
- the cluster map can represent codepoint-to-glyph mappings that are one-to-one, many-to-one, one-to-many, or many-to-many.
- One-to-one mappings are when each codepoint is represented by exactly one glyph, the cluster map entries in FIG. 13 are 0, 1, 2, . . .
- mappings are when two or more codepoints map to a single glyph.
- the entries for those codepoints specify the offset of that glyph in the glpyh index buffer.
- the ‘f’ and ‘i’ characters have been replaced by a ligature, as is common typesetting practice in many serif fonts.
- an indivisible group of codepoints for a character cluster maps to more than one glyph. For example, this is common in fonts supporting Indic scripts.
- the value in the ClusterMap for each of the codepoints reference the first glyph in the GlyphIndeces array that represents that codepoint.
- the following example shows the Unicode and glyph representations of the Tamil word ⁇ .
- the first two codepoints combine to generate three glyphs.
- Cluster specifications precede the glyph specification for the first glyph of a non 1:1 cluster (mappings are more complex than one-character-to-one-glyph).
- Each glyph specification has the following form:
- Glyph specification part Purpose Default value GlyphIndex Index of glyph in the rendering physical font As defined by the fonts character map table for the corresponding Unicode codepoint in the inner text. Advance Placement for next glyph relative to origin of this glyph. As defined by Measured in direction of advance as defined by the fonts HMTX sideways and BidiLevel attributes. or VMTX font Measured in 100ths of the font em size. metric tables. Advance must be calculated such that rounding errors do not accumulate. See note below on how to achieve this requirement. uOffset, vOffset Offset relative to glyph origin to move this glyph. 0, 0 Usually used to attach marks to base characters. Measured in 100ths of the font em size. Flags Distinguishes base glyphs and combining marks 0 (base glyph)
- Each advance value must be calculated as the exact unrounded origin of the subsequent glyph minus the sum of the calculated (i.e. rounded) advance widths of the preceding glyphs. In this way each glyph is positioned to within 0.5% of an em of its exact position.
- Markup details such as glyph indices and advance widths, can be omitted from the markup if a targeted client can regenerate them reliably.
- the following options allow dramatic optimization of commonly used simple scripts.
- Glyph indices may be omitted from markup where there is a one-to-one mapping between the positions of characters in the Unicode string and the positions of glyphs in the glyph string, and the glyph index is the value in the CMAP (character mapping) table of the font, and the Unicode character has unambiguous semantics.
- Glyph advance width may be omitted from the markup where the advance width required is exactly that for the glyph in the HMTX (horizontal metrics) or VMTX (vertical metrics) tables of the font.
- Glyph vertical offset may be omitted from the markup where it is zero. This is almost always true for base characters, and commonly true for combining marks in simpler scripts. However, this is often false for combining marks in more complex scripts such as Arabic and Indic.
- Glyph flags may be omitted for base glyphs with normal justification priority.
- the above-described modular content framework and document format methods and systems provide a set of building blocks for composing, packaging, distributing, and rendering document-centered content. These building blocks define a platform-independent framework for document formats that enable software and hardware systems to generate, exchange, and display documents reliably and consistently.
- the illustrated and described reach package format provides a format for storing paginated or pre-paginated documents in a manner in which contents of a reach package can be displayed or printed with full fidelity among devices and applications in a wide range of environments and across a wide range of scenarios.
- computer-readable media are capable of storing thereon a computer program that, when executed by one or more processors, cause the one or more processors to perform one or more functions.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/837,042 US7418652B2 (en) | 2004-04-30 | 2004-04-30 | Method and apparatus for interleaving parts of a document |
PCT/US2004/023373 WO2005111828A2 (fr) | 2004-04-30 | 2004-07-22 | Méthode et appareil pour intercalaires d'un document |
EP04778743A EP1646952A4 (fr) | 2004-04-30 | 2004-07-22 | Méthode et appareil pour intercalaires d'un document |
JP2007510683A JP2007535749A (ja) | 2004-04-30 | 2004-07-22 | ドキュメントのパーツをインタリーブする方法と装置 |
CN2004800013951A CN1961304B (zh) | 2004-04-30 | 2004-07-22 | 交错文档的部件的方法和装置 |
KR1020057006684A KR101109396B1 (ko) | 2004-04-30 | 2004-07-22 | 문서의 부분들을 인터리빙하는 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/837,042 US7418652B2 (en) | 2004-04-30 | 2004-04-30 | Method and apparatus for interleaving parts of a document |
Publications (2)
Publication Number | Publication Date |
---|---|
US20050248790A1 US20050248790A1 (en) | 2005-11-10 |
US7418652B2 true US7418652B2 (en) | 2008-08-26 |
Family
ID=35239150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/837,042 Expired - Fee Related US7418652B2 (en) | 2004-04-30 | 2004-04-30 | Method and apparatus for interleaving parts of a document |
Country Status (6)
Country | Link |
---|---|
US (1) | US7418652B2 (fr) |
EP (1) | EP1646952A4 (fr) |
JP (1) | JP2007535749A (fr) |
KR (1) | KR101109396B1 (fr) |
CN (1) | CN1961304B (fr) |
WO (1) | WO2005111828A2 (fr) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075337A1 (en) * | 2004-09-30 | 2006-04-06 | Microsoft Corporation | Method, system, and computer-readable medium for creating, inserting, and reusing document parts in an electronic document |
US20060136827A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | File formats, methods, and computer program products for representing presentations |
US20060136433A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | File formats, methods, and computer program products for representing workbooks |
US20060136812A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | Method and system for linking data ranges of a computer-generated document with associated extensible markup language elements |
US20060190815A1 (en) * | 2004-12-20 | 2006-08-24 | Microsoft Corporation | Structuring data for word processing documents |
US20070182990A1 (en) * | 2004-06-17 | 2007-08-09 | Objective Systems Pty Limited | Reproduction of documents into requested forms |
US20080168342A1 (en) * | 2004-04-30 | 2008-07-10 | Microsoft Corporation | Packages that Contain Pre-Paginated Documents |
US20090083661A1 (en) * | 2007-09-26 | 2009-03-26 | Yahoo! Inc. | System and method for selectively displaying web page elements |
US7617229B2 (en) | 2004-12-20 | 2009-11-10 | Microsoft Corporation | Management and use of data in a computer-generated document |
US20100165380A1 (en) * | 2008-12-30 | 2010-07-01 | Jason Grams | Systems and Methods for Processing Packaged Print Data Streams |
US7752632B2 (en) | 2004-12-21 | 2010-07-06 | Microsoft Corporation | Method and system for exposing nested data in a computer-generated document in a transparent manner |
US7770180B2 (en) | 2004-12-21 | 2010-08-03 | Microsoft Corporation | Exposing embedded data in a computer-generated document |
US20140009787A1 (en) * | 2012-07-03 | 2014-01-09 | Canon Kabushiki Kaisha | Information processing device, and method and medium for the same |
US8661332B2 (en) | 2004-04-30 | 2014-02-25 | Microsoft Corporation | Method and apparatus for document processing |
US20150007021A1 (en) * | 2013-06-27 | 2015-01-01 | Adobe Systems Incorporated | Vector Graphic Conversion into Fonts |
US9953008B2 (en) | 2013-01-18 | 2018-04-24 | Microsoft Technology Licensing, Llc | Grouping fixed format document elements to preserve graphical data semantics after reflow by manipulating a bounding box vertically and horizontally |
US9965444B2 (en) | 2012-01-23 | 2018-05-08 | Microsoft Technology Licensing, Llc | Vector graphics classification engine |
US9990347B2 (en) | 2012-01-23 | 2018-06-05 | Microsoft Technology Licensing, Llc | Borderless table detection engine |
US10108585B2 (en) * | 2012-12-05 | 2018-10-23 | Chegg, Inc. | Automated testing materials in electronic document publishing |
US10943030B2 (en) | 2008-12-15 | 2021-03-09 | Ibailbonding.Com | Securable independent electronic document |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168268A1 (en) * | 2004-12-02 | 2006-07-27 | International Business Machines Corporation | Specific method of setting transport-specific properties from transport-agnostic clients |
WO2006116676A2 (fr) | 2005-04-28 | 2006-11-02 | Wms Gaming Inc. | Dispositif pour jeux de pari dote d'un ensemble de caracteres omnipresents |
US7934153B2 (en) * | 2005-05-06 | 2011-04-26 | Madcap Software, Inc. | Visual document structure indicator system |
WO2007019571A2 (fr) | 2005-08-09 | 2007-02-15 | Compography, Inc. | Procedes et appareils permettant d'assembler, d'extraire et de deployer le contenu de documents electroniques |
US8201088B2 (en) * | 2006-07-25 | 2012-06-12 | Monotype Imaging Inc. | Method and apparatus for associating with an electronic document a font subset containing select character forms which are different depending on location |
US7886226B1 (en) | 2006-10-03 | 2011-02-08 | Adobe Systems Incorporated | Content based Ad display control |
US8612847B2 (en) * | 2006-10-03 | 2013-12-17 | Adobe Systems Incorporated | Embedding rendering interface |
US7786994B2 (en) * | 2006-10-26 | 2010-08-31 | Microsoft Corporation | Determination of unicode points from glyph elements |
US8095873B2 (en) * | 2007-04-02 | 2012-01-10 | International Business Machines Corporation | Promoting content from one content management system to another content management system |
US7928992B2 (en) * | 2007-05-30 | 2011-04-19 | Kabushiki Kaisha Toshiba | System and method for transparent object rendering |
JP5408904B2 (ja) * | 2008-05-23 | 2014-02-05 | キヤノン株式会社 | 情報処理装置、プレビュー方法、及びプログラム |
US8548946B2 (en) | 2008-10-14 | 2013-10-01 | Microsoft Corporation | Content package for electronic distribution |
CN102855107B (zh) * | 2011-06-30 | 2015-05-27 | 国际商业机器公司 | 在计算机上演示文件的方法和系统 |
US8676952B2 (en) * | 2011-09-13 | 2014-03-18 | Ericsson Television Inc. | User adaptive HTTP stream manager and method for using same |
US9240073B2 (en) * | 2011-11-15 | 2016-01-19 | Pixar | File format for representing a scene |
CN103034694A (zh) * | 2012-12-04 | 2013-04-10 | 厉向晨 | 一种计算机字库内建支持行外标点功能的方法 |
US9275233B1 (en) * | 2012-12-21 | 2016-03-01 | Emc Corporation | Generation and use of a modified protected file |
CN105511891A (zh) * | 2016-02-26 | 2016-04-20 | 广州品唯软件有限公司 | 一种自助取数平台的前端框架建立方法及装置 |
CN108170660B (zh) * | 2018-01-22 | 2021-08-06 | 北京百度网讯科技有限公司 | 多语言排版的显示方法、装置、浏览器、终端及介质 |
JP6517414B1 (ja) | 2018-08-24 | 2019-05-22 | グレイステクノロジー株式会社 | ドキュメント作成支援システム |
CN111460188B (zh) * | 2020-04-28 | 2023-10-20 | 上海联影医疗科技股份有限公司 | 医学扫描数据归档的方法、设备和计算机设备 |
Citations (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4410286A (en) | 1981-06-16 | 1983-10-18 | International Business Machines Corporation | Printing complex characters |
US4594674A (en) | 1983-02-18 | 1986-06-10 | International Business Machines Corporation | Generating and storing electronic fonts |
US4649513A (en) | 1983-11-15 | 1987-03-10 | International Business Machines Corporation | Apparatus and method for processing system printing data records on a page printer |
US4870611A (en) | 1983-11-15 | 1989-09-26 | International Business Machines Corporation | Apparatus and method for system printing mode control |
US5222205A (en) | 1990-03-16 | 1993-06-22 | Hewlett-Packard Company | Method for generating addresses to textured graphics primitives stored in rip maps |
US5267155A (en) | 1989-10-16 | 1993-11-30 | Medical Documenting Systems, Inc. | Apparatus and method for computer-assisted document generation |
US5469533A (en) | 1992-07-10 | 1995-11-21 | Microsoft Corporation | Resource-oriented printer system and method of operation |
US5487138A (en) | 1993-09-02 | 1996-01-23 | Hewlett-Packard Company | Method to reduce memory requirements in Asian printers while improving performance |
US5537526A (en) | 1993-11-12 | 1996-07-16 | Taugent, Inc. | Method and apparatus for processing a display document utilizing a system level document framework |
US5579519A (en) | 1990-03-05 | 1996-11-26 | Interleaf, Inc. | Extensible electronic document processing system for creating new classes of active documents |
US5579466A (en) | 1994-09-01 | 1996-11-26 | Microsoft Corporation | Method and system for editing and formatting data in a dialog window |
US5613124A (en) | 1994-04-15 | 1997-03-18 | Microsoft Corporation | Method and system for generating and storing multiple representations of a source object in object storage |
US5675788A (en) | 1995-09-15 | 1997-10-07 | Infonautics Corp. | Method and apparatus for generating a composite document on a selected topic from a plurality of information sources |
US5701342A (en) | 1992-12-14 | 1997-12-23 | The Commonwealth Of Australia Of Anzac Park | Complex document security |
US5745910A (en) | 1993-05-10 | 1998-04-28 | Apple Computer, Inc. | Frame structure which provides an interface between parts of a compound document |
US5752055A (en) | 1994-12-27 | 1998-05-12 | International Business Machine Corp. | Systems and method for automatically linking parts within compound documents |
US5752056A (en) | 1994-03-02 | 1998-05-12 | Apple Computer, Inc. | System for binding document parts and handlers by fidelity of parts or by automatic translation of parts |
US5819295A (en) | 1995-10-30 | 1998-10-06 | Matsushita Electric Industrial Co., Ltd. | Document storing and managing system |
US5845058A (en) | 1994-10-05 | 1998-12-01 | Microsoft Corporation | Device independent spooling in a print architecture |
US5893109A (en) | 1996-03-15 | 1999-04-06 | Inso Providence Corporation | Generation of chunks of a long document for an electronic book system |
US5903903A (en) | 1996-04-25 | 1999-05-11 | Microsoft Corporation | System for determining the sequence and placement of pages for a multiple-page document |
US5903905A (en) | 1996-04-30 | 1999-05-11 | Microsoft Corporation | Method for simultaneously constructing and displaying a dynamic preview of a document that provides an accurate customized document |
US5905504A (en) | 1994-04-15 | 1999-05-18 | Hewlett Packard Company | System and method for dithering and quantizing image data to optimize visual quality of a color recovered image |
US5950215A (en) | 1995-02-07 | 1999-09-07 | Nec Corporation | System for managing a compound document |
US5960168A (en) | 1994-10-05 | 1999-09-28 | Microsoft Corporation | Deferred printing |
US5993088A (en) | 1998-09-30 | 1999-11-30 | International Business Machines Corporation | Method for improving print performance and quality by accumulating, storing and using resource accounting information with a print job |
US6023714A (en) | 1997-04-24 | 2000-02-08 | Microsoft Corporation | Method and system for dynamically adapting the layout of a document to an output device |
US6026416A (en) | 1996-05-30 | 2000-02-15 | Microsoft Corp. | System and method for storing, viewing, editing, and processing ordered sections having different file formats |
US6067531A (en) | 1998-07-21 | 2000-05-23 | Mci Communications Corporation | Automated contract negotiator/generation system and method |
US6094665A (en) | 1997-09-18 | 2000-07-25 | Hewlett-Packard Company | Method and apparatus for correcting a uniform resource identifier |
US6134552A (en) | 1997-10-07 | 2000-10-17 | Sap Aktiengesellschaft | Knowledge provider with logical hyperlinks |
US6144974A (en) | 1996-12-13 | 2000-11-07 | Adobe Systems Incorporated | Automated layout of content in a page framework |
US6175845B1 (en) | 1998-01-06 | 2001-01-16 | International Business Machines Corporation | Method and component for presentation of information |
US6182080B1 (en) | 1997-09-12 | 2001-01-30 | Netvoyage Corporation | System, method and computer program product for storage of a plurality of documents within a single file |
US6182096B1 (en) | 1998-06-30 | 2001-01-30 | International Business Machines Corporation | Method and apparatus of creating highly portable output files by combining pages from multiple input files |
US6199082B1 (en) | 1995-07-17 | 2001-03-06 | Microsoft Corporation | Method for delivering separate design and content in a multimedia publishing system |
US6212530B1 (en) | 1998-05-12 | 2001-04-03 | Compaq Computer Corporation | Method and apparatus based on relational database design techniques supporting modeling, analysis and automatic hypertext generation for structured document collections |
US6247066B1 (en) | 1995-11-06 | 2001-06-12 | Hitachi, Ltd. | Compound document processing method |
US6247018B1 (en) | 1998-04-16 | 2001-06-12 | Platinum Technology Ip, Inc. | Method for processing a file to generate a database |
US20010003828A1 (en) * | 1997-10-28 | 2001-06-14 | Joe Peterson | Client-side system for scheduling delivery of web content and locally managing the web content |
US6269403B1 (en) | 1997-06-30 | 2001-07-31 | Microsoft Corporation | Browser and publisher for multimedia object storage, retrieval and transfer |
US20010013043A1 (en) | 1998-03-12 | 2001-08-09 | Richard J. Wagner | System and method for determining browser package and version compatibility of a web document |
US20010018697A1 (en) | 2000-01-25 | 2001-08-30 | Fuji Xerox Co., Ltd. | Structured document processing system and structured document processing method |
US20010034739A1 (en) | 2000-03-07 | 2001-10-25 | Anecki John A. | Interactive system for and method of automating the generation of legal documents |
US20010044813A1 (en) | 2000-01-10 | 2001-11-22 | Frank Kenneth B. | Document production platform |
US20010044809A1 (en) | 2000-03-29 | 2001-11-22 | Parasnis Shashank Mohan | Process of localizing objects in markup language documents |
US6362870B2 (en) | 1998-10-26 | 2002-03-26 | Hewlett-Packard Company | Image copier having enhanced duplex capabilities; method of printing a copy of a document to produce a duplex copy product |
US20020049790A1 (en) | 2000-08-08 | 2002-04-25 | Ricker Jeffrey M | Data interchange format transformation method and data dictionary used therefor |
US20020059337A1 (en) | 2000-09-12 | 2002-05-16 | Makoto Takaoka | Information processing apparatus, method therefor, and computer-readable memory |
US20020065857A1 (en) | 2000-10-04 | 2002-05-30 | Zbigniew Michalewicz | System and method for analysis and clustering of documents for search engine |
US20020065848A1 (en) | 2000-08-21 | 2002-05-30 | Richard Walker | Simultaneous multi-user document editing system |
US20020073236A1 (en) | 2000-01-14 | 2002-06-13 | Helgeson Christopher S. | Method and apparatus for managing data exchange among systems in a network |
US6407821B1 (en) | 1998-09-08 | 2002-06-18 | International Business Machines Corporation | Method and apparatus for printing documents including embedded print objects with an intelligent printing system |
US20020087602A1 (en) | 2000-09-13 | 2002-07-04 | Ryuichi Masuda | Information processing apparatus, method therefor, and computer-readable memory |
US6418448B1 (en) | 1999-12-06 | 2002-07-09 | Shyam Sundar Sarkar | Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web |
US20020099797A1 (en) | 2001-01-25 | 2002-07-25 | Merrell Alan Ray | Architecture for access to embedded files using a san intermediate device |
US20020103835A1 (en) | 2001-01-30 | 2002-08-01 | International Business Machines Corporation | Methods and apparatus for constructing semantic models for document authoring |
US20020107886A1 (en) | 2001-02-07 | 2002-08-08 | Gentner Donald R. | Method and apparatus for automatic document electronic versioning system |
US20020111133A1 (en) | 1999-07-15 | 2002-08-15 | Erland Wittkotter | Data processing appliance |
US20020116421A1 (en) | 2001-02-17 | 2002-08-22 | Fox Harold L. | Method and system for page-like display, formating and processing of computer generated information on networked computers |
US6442576B1 (en) * | 1997-08-06 | 2002-08-27 | Adobe Systems Incorporated | Searching for documents with multiple element types |
US6449653B2 (en) | 1997-03-25 | 2002-09-10 | Microsoft Corporation | Interleaved multiple multimedia stream for synchronized transmission over a computer network |
US6457017B2 (en) | 1996-05-17 | 2002-09-24 | Softscape, Inc. | Computing system for information management |
US6480206B2 (en) | 1998-02-24 | 2002-11-12 | Sun Microsystems, Inc. | Method and apparatus for an extensible editor |
US6496206B1 (en) | 1998-06-29 | 2002-12-17 | Scansoft, Inc. | Displaying thumbnail images of document pages in an electronic folder |
US6538760B1 (en) | 1998-09-08 | 2003-03-25 | International Business Machines Corp. | Method and apparatus for generating a production print stream from files optimized for viewing |
US6549918B1 (en) | 1998-09-21 | 2003-04-15 | Microsoft Corporation | Dynamic information format conversion |
US20030093520A1 (en) * | 2001-10-26 | 2003-05-15 | Beesley Richard Craig | Method of controlling the amount of data transferred between a terminal and a server |
US6583789B1 (en) | 1998-12-03 | 2003-06-24 | International Business Machines Corporation | Method and system for processing glyph-based quality variability requests |
US6591278B1 (en) | 2000-03-03 | 2003-07-08 | R-Objects, Inc. | Project data management system and method |
US6604144B1 (en) | 1997-06-30 | 2003-08-05 | Microsoft Corporation | Data format for multimedia object storage, retrieval and transfer |
US6608693B1 (en) | 1999-04-30 | 2003-08-19 | Hewlett-Packard Development Company, L.P. | Apparatus and method for generating a print job from a command stream describing multiple copies of a document |
US6609200B2 (en) | 1996-12-20 | 2003-08-19 | Financial Services Technology Consortium | Method and system for processing electronic documents |
US6658477B1 (en) | 1999-05-12 | 2003-12-02 | Microsoft Corporation | Improving the control of streaming data through multiple processing modules |
US6657647B1 (en) * | 2000-09-25 | 2003-12-02 | Xoucin, Inc. | Controlling the order in which content is displayed in a browser |
US6675353B1 (en) | 1999-07-26 | 2004-01-06 | Microsoft Corporation | Methods and systems for generating XML documents |
US6675356B1 (en) | 1998-12-22 | 2004-01-06 | Xerox Corporation | Distributed document-based calendaring system |
US6674540B1 (en) | 1999-05-24 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Assembling and printing compound documents |
US6681223B1 (en) | 2000-07-27 | 2004-01-20 | International Business Machines Corporation | System and method of performing profile matching with a structured document |
US6694485B1 (en) | 1999-07-27 | 2004-02-17 | International Business Machines Corporation | Enhanced viewing of hypertext markup language file |
US20040054669A1 (en) * | 2000-12-18 | 2004-03-18 | Claude Seyrat | Method for dividing structured documents into several parts |
US6715126B1 (en) | 1998-09-16 | 2004-03-30 | International Business Machines Corporation | Efficient streaming of synchronized web content from multiple sources |
US20040117733A1 (en) * | 2002-09-05 | 2004-06-17 | Canon Kabushiki Kaisha | Electronic document for describing a computer service |
US6763343B1 (en) | 1999-09-20 | 2004-07-13 | David M. Brooke | Preventing duplication of the data in reference resource for XML page generation |
US6771291B1 (en) | 2000-06-07 | 2004-08-03 | The Perfect Web Corporation | Method for developing electronic documents employing multiple display regions |
US6781609B1 (en) | 2000-05-09 | 2004-08-24 | International Business Machines Corporation | Technique for flexible inclusion of information items and various media types in a user interface |
US6785673B1 (en) | 2000-02-09 | 2004-08-31 | At&T Corp. | Method for converting relational data into XML |
US6789229B1 (en) | 2000-04-19 | 2004-09-07 | Microsoft Corporation | Document pagination based on hard breaks and active formatting tags |
US6812941B1 (en) | 1999-12-09 | 2004-11-02 | International Business Machines Corp. | User interface management through view depth |
US20050114316A1 (en) * | 2003-11-25 | 2005-05-26 | Fontoura Marcus F. | Using intra-document indices to improve xquery processing over XML streams |
US6910843B2 (en) | 2001-11-26 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Cover authoring systems and methods and bookbinding systems incorporating the same |
US6912555B2 (en) | 2002-01-18 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Method for content mining of semi-structured documents |
US6925631B2 (en) * | 2000-12-08 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Method, computer system and computer program product for processing extensible markup language streams |
US6925597B2 (en) | 2000-04-14 | 2005-08-02 | Picsel Technologies Limited | Systems and methods for digital document processing |
US6931590B2 (en) | 2000-06-30 | 2005-08-16 | Hitachi, Ltd. | Method and system for managing documents |
US6944515B2 (en) | 2002-03-25 | 2005-09-13 | Honda Giken Kogyo Kabushiki Kaisha | Parts list system which generates and manages a parts list simply and effectively |
US6952801B2 (en) | 1995-06-07 | 2005-10-04 | R.R. Donnelley | Book assembly process and apparatus for variable imaging system |
US20050251742A1 (en) * | 2000-09-27 | 2005-11-10 | Microsoft Corporation | View templates for HTML source documents |
US6981207B1 (en) | 2000-01-11 | 2005-12-27 | Ecora Software Corporation | Automatic documentation of configurable systems by outputting explanatory information of configuration parameters in a narrative format and configuration parameters differences |
US7054841B1 (en) | 2001-09-27 | 2006-05-30 | I2 Technologies Us, Inc. | Document storage and classification |
US7080083B2 (en) | 2001-12-21 | 2006-07-18 | Kim Hong J | Extensible stylesheet designs in visual graphic environments |
US7134071B2 (en) | 2001-11-21 | 2006-11-07 | Ricoh Company, Ltd. | Document processing utilizing a version managing part |
US7171618B2 (en) | 2003-07-30 | 2007-01-30 | Xerox Corporation | Multi-versioned documents and method for creation and use thereof |
US7301544B2 (en) | 2005-03-31 | 2007-11-27 | Microsoft Corporation | Printing tree-described documents |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3035434B2 (ja) * | 1993-10-13 | 2000-04-24 | キヤノン株式会社 | 複眼撮像装置 |
US5933841A (en) * | 1996-05-17 | 1999-08-03 | Ameritech Corporation | Structured document browser |
US20040139049A1 (en) * | 1996-08-22 | 2004-07-15 | Wgrs Licensing Company, Llc | Unified geographic database and method of creating, maintaining and using the same |
JPH10143498A (ja) * | 1996-11-08 | 1998-05-29 | Nippon Telegr & Teleph Corp <Ntt> | リンク付与機能を持つページ分割通信中継装置 |
EP1087306A3 (fr) * | 1999-09-24 | 2004-11-10 | Xerox Corporation | Méta-documents et méthode de gestion correspondante |
WO2001044934A1 (fr) * | 1999-12-15 | 2001-06-21 | Sun Microsystems, Inc. | Preparation d'une configuration de logiciel utilisant un langage de programmation de type xml |
US6701314B1 (en) * | 2000-01-21 | 2004-03-02 | Science Applications International Corporation | System and method for cataloguing digital information for searching and retrieval |
AU2001224977A1 (en) * | 2000-03-03 | 2001-09-12 | Ferag Ag | Holding clamp and device for conveying flexible, flat objects containing two or several pieces |
US20040049737A1 (en) | 2000-04-26 | 2004-03-11 | Novarra, Inc. | System and method for displaying information content with selective horizontal scrolling |
GB0011426D0 (en) * | 2000-05-11 | 2000-06-28 | Charteris Limited | A method for transforming documents written in different XML-based languages |
FR2828307B1 (fr) * | 2000-05-18 | 2004-10-22 | Il System | Procede pour la constitution d'une base de donnees relative aux informations contenues dans un document |
US20040015890A1 (en) * | 2001-05-11 | 2004-01-22 | Windriver Systems, Inc. | System and method for adapting files for backward compatibility |
US7512879B2 (en) * | 2001-05-11 | 2009-03-31 | Microsoft Corporation | Intelligent virtual paging paradigm |
KR100556647B1 (ko) * | 2001-06-14 | 2006-03-06 | 샤프 가부시키가이샤 | 데이터 처리 방법, 데이터 처리 프로그램을 기록한 기록매체, 및 데이터 처리 장치 |
CN1647070A (zh) * | 2001-06-22 | 2005-07-27 | 诺萨·欧莫贵 | 用于知识检索、管理、交付和表示的系统和方法 |
US8001465B2 (en) * | 2001-06-26 | 2011-08-16 | Kudrollis Software Inventions Pvt. Ltd. | Compacting an information array display to cope with two dimensional display space constraint |
US7263656B2 (en) | 2001-07-16 | 2007-08-28 | Canon Kabushiki Kaisha | Method and device for scheduling, generating and processing a document comprising blocks of information |
CA2357087C (fr) * | 2001-09-06 | 2009-07-21 | Cognos Incorporated | Gestionnaire de deploiement pour l'organisation et le deploiement d'une application dans un environnement informatique reparti |
CN100338573C (zh) * | 2001-10-04 | 2007-09-19 | 皇家飞利浦电子股份有限公司 | 设计用户界面样式的方法以及具有自适应用户界面的设备 |
US6680693B2 (en) * | 2002-03-07 | 2004-01-20 | The University Of Southern Mississippi | Method and apparatus for automatically tracking the sun with an object |
US20060155529A1 (en) * | 2002-08-16 | 2006-07-13 | Teamware Group Oy | System and method for a context-independent framework for management and execution of xml processing tasks |
DE60218304D1 (de) * | 2002-08-29 | 2007-04-05 | Hewlett Packard Co | Verfahren und Vorrichtung zur Datenverteilung in einem Netzwerk |
US7418661B2 (en) * | 2002-09-17 | 2008-08-26 | Hewlett-Packard Development Company, L.P. | Published web page version tracking |
EP1403778A1 (fr) * | 2002-09-27 | 2004-03-31 | Sony International (Europe) GmbH | Langage d'intégration multimedia adaptif (AMIL) pour applications et présentations multimédia |
KR100636909B1 (ko) * | 2002-11-14 | 2006-10-19 | 엘지전자 주식회사 | 확장성 표기 언어 기반의 전자문서 버전 매김 및 버전을이용한 갱신 문서 제공 방법 |
US20040103073A1 (en) * | 2002-11-21 | 2004-05-27 | Blake M. Brian | System for and method of using component-based development and web tools to support a distributed data management system |
US20050022113A1 (en) * | 2003-07-24 | 2005-01-27 | Hanlon Robert Eliot | System and method to efficiently switch between paper, electronic and audio versions of documents |
US20050063010A1 (en) * | 2003-09-24 | 2005-03-24 | Hewlett-Packard Development Company, L.P. | Multiple flow rendering using dynamic content |
WO2005031570A1 (fr) * | 2003-09-26 | 2005-04-07 | Bitfone Corporation | Catalogue de progiciels de mise a jour pour transfert de progiciels de mise a jour entre un generateur et un serveur de contenu dans un reseau |
US8065616B2 (en) * | 2003-10-27 | 2011-11-22 | Nokia Corporation | Multimedia presentation editor for a small-display communication terminal or computing device |
US7434160B2 (en) * | 2003-12-03 | 2008-10-07 | Hewlett-Packard Development Company, L.P. | PDF document to PPML template translation |
US7434157B2 (en) * | 2003-12-09 | 2008-10-07 | Microsoft Corporation | Programmable object model for namespace or schema library support in a software application |
US7636891B2 (en) * | 2004-08-31 | 2009-12-22 | Research In Motion Limited | Method for paginating a document structure of a document for viewing on a mobile communication device |
US7712027B2 (en) * | 2004-08-31 | 2010-05-04 | Research In Motion Limited | Method for document page delivery to a mobile communication device |
US7277890B2 (en) * | 2004-12-01 | 2007-10-02 | Research In Motion Limited | Method of finding a search string in a document for viewing on a mobile communication device |
US7614000B2 (en) * | 2004-12-20 | 2009-11-03 | Microsoft Corporation | File formats, methods, and computer program products for representing presentations |
-
2004
- 2004-04-30 US US10/837,042 patent/US7418652B2/en not_active Expired - Fee Related
- 2004-07-22 EP EP04778743A patent/EP1646952A4/fr not_active Ceased
- 2004-07-22 CN CN2004800013951A patent/CN1961304B/zh not_active Expired - Fee Related
- 2004-07-22 WO PCT/US2004/023373 patent/WO2005111828A2/fr not_active Application Discontinuation
- 2004-07-22 JP JP2007510683A patent/JP2007535749A/ja active Pending
- 2004-07-22 KR KR1020057006684A patent/KR101109396B1/ko active IP Right Grant
Patent Citations (108)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4410286A (en) | 1981-06-16 | 1983-10-18 | International Business Machines Corporation | Printing complex characters |
US4594674A (en) | 1983-02-18 | 1986-06-10 | International Business Machines Corporation | Generating and storing electronic fonts |
US4649513A (en) | 1983-11-15 | 1987-03-10 | International Business Machines Corporation | Apparatus and method for processing system printing data records on a page printer |
US4870611A (en) | 1983-11-15 | 1989-09-26 | International Business Machines Corporation | Apparatus and method for system printing mode control |
US5267155A (en) | 1989-10-16 | 1993-11-30 | Medical Documenting Systems, Inc. | Apparatus and method for computer-assisted document generation |
US5579519A (en) | 1990-03-05 | 1996-11-26 | Interleaf, Inc. | Extensible electronic document processing system for creating new classes of active documents |
US5222205A (en) | 1990-03-16 | 1993-06-22 | Hewlett-Packard Company | Method for generating addresses to textured graphics primitives stored in rip maps |
US5469533A (en) | 1992-07-10 | 1995-11-21 | Microsoft Corporation | Resource-oriented printer system and method of operation |
US5701342A (en) | 1992-12-14 | 1997-12-23 | The Commonwealth Of Australia Of Anzac Park | Complex document security |
US5745910A (en) | 1993-05-10 | 1998-04-28 | Apple Computer, Inc. | Frame structure which provides an interface between parts of a compound document |
US5487138A (en) | 1993-09-02 | 1996-01-23 | Hewlett-Packard Company | Method to reduce memory requirements in Asian printers while improving performance |
US5537526A (en) | 1993-11-12 | 1996-07-16 | Taugent, Inc. | Method and apparatus for processing a display document utilizing a system level document framework |
US5752056A (en) | 1994-03-02 | 1998-05-12 | Apple Computer, Inc. | System for binding document parts and handlers by fidelity of parts or by automatic translation of parts |
US5613124A (en) | 1994-04-15 | 1997-03-18 | Microsoft Corporation | Method and system for generating and storing multiple representations of a source object in object storage |
US5905504A (en) | 1994-04-15 | 1999-05-18 | Hewlett Packard Company | System and method for dithering and quantizing image data to optimize visual quality of a color recovered image |
US5579466A (en) | 1994-09-01 | 1996-11-26 | Microsoft Corporation | Method and system for editing and formatting data in a dialog window |
US5845058A (en) | 1994-10-05 | 1998-12-01 | Microsoft Corporation | Device independent spooling in a print architecture |
US5960168A (en) | 1994-10-05 | 1999-09-28 | Microsoft Corporation | Deferred printing |
US5752055A (en) | 1994-12-27 | 1998-05-12 | International Business Machine Corp. | Systems and method for automatically linking parts within compound documents |
US5950215A (en) | 1995-02-07 | 1999-09-07 | Nec Corporation | System for managing a compound document |
US6952801B2 (en) | 1995-06-07 | 2005-10-04 | R.R. Donnelley | Book assembly process and apparatus for variable imaging system |
US6199082B1 (en) | 1995-07-17 | 2001-03-06 | Microsoft Corporation | Method for delivering separate design and content in a multimedia publishing system |
US5675788A (en) | 1995-09-15 | 1997-10-07 | Infonautics Corp. | Method and apparatus for generating a composite document on a selected topic from a plurality of information sources |
US5819295A (en) | 1995-10-30 | 1998-10-06 | Matsushita Electric Industrial Co., Ltd. | Document storing and managing system |
US6247066B1 (en) | 1995-11-06 | 2001-06-12 | Hitachi, Ltd. | Compound document processing method |
US5893109A (en) | 1996-03-15 | 1999-04-06 | Inso Providence Corporation | Generation of chunks of a long document for an electronic book system |
US5903903A (en) | 1996-04-25 | 1999-05-11 | Microsoft Corporation | System for determining the sequence and placement of pages for a multiple-page document |
US5903905A (en) | 1996-04-30 | 1999-05-11 | Microsoft Corporation | Method for simultaneously constructing and displaying a dynamic preview of a document that provides an accurate customized document |
US6457017B2 (en) | 1996-05-17 | 2002-09-24 | Softscape, Inc. | Computing system for information management |
US6026416A (en) | 1996-05-30 | 2000-02-15 | Microsoft Corp. | System and method for storing, viewing, editing, and processing ordered sections having different file formats |
US6507858B1 (en) | 1996-05-30 | 2003-01-14 | Microsoft Corporation | System and method for storing ordered sections having different file formats |
US6393441B1 (en) | 1996-05-30 | 2002-05-21 | Microsoft Corporation | System and method for printing ordered sections having different file formats |
US6144974A (en) | 1996-12-13 | 2000-11-07 | Adobe Systems Incorporated | Automated layout of content in a page framework |
US6609200B2 (en) | 1996-12-20 | 2003-08-19 | Financial Services Technology Consortium | Method and system for processing electronic documents |
US6449653B2 (en) | 1997-03-25 | 2002-09-10 | Microsoft Corporation | Interleaved multiple multimedia stream for synchronized transmission over a computer network |
US6023714A (en) | 1997-04-24 | 2000-02-08 | Microsoft Corporation | Method and system for dynamically adapting the layout of a document to an output device |
US6604144B1 (en) | 1997-06-30 | 2003-08-05 | Microsoft Corporation | Data format for multimedia object storage, retrieval and transfer |
US6269403B1 (en) | 1997-06-30 | 2001-07-31 | Microsoft Corporation | Browser and publisher for multimedia object storage, retrieval and transfer |
US6442576B1 (en) * | 1997-08-06 | 2002-08-27 | Adobe Systems Incorporated | Searching for documents with multiple element types |
US6182080B1 (en) | 1997-09-12 | 2001-01-30 | Netvoyage Corporation | System, method and computer program product for storage of a plurality of documents within a single file |
US6094665A (en) | 1997-09-18 | 2000-07-25 | Hewlett-Packard Company | Method and apparatus for correcting a uniform resource identifier |
US6134552A (en) | 1997-10-07 | 2000-10-17 | Sap Aktiengesellschaft | Knowledge provider with logical hyperlinks |
US20010003828A1 (en) * | 1997-10-28 | 2001-06-14 | Joe Peterson | Client-side system for scheduling delivery of web content and locally managing the web content |
US6175845B1 (en) | 1998-01-06 | 2001-01-16 | International Business Machines Corporation | Method and component for presentation of information |
US6480206B2 (en) | 1998-02-24 | 2002-11-12 | Sun Microsystems, Inc. | Method and apparatus for an extensible editor |
US20010013043A1 (en) | 1998-03-12 | 2001-08-09 | Richard J. Wagner | System and method for determining browser package and version compatibility of a web document |
US6247018B1 (en) | 1998-04-16 | 2001-06-12 | Platinum Technology Ip, Inc. | Method for processing a file to generate a database |
US6212530B1 (en) | 1998-05-12 | 2001-04-03 | Compaq Computer Corporation | Method and apparatus based on relational database design techniques supporting modeling, analysis and automatic hypertext generation for structured document collections |
US6496206B1 (en) | 1998-06-29 | 2002-12-17 | Scansoft, Inc. | Displaying thumbnail images of document pages in an electronic folder |
US6182096B1 (en) | 1998-06-30 | 2001-01-30 | International Business Machines Corporation | Method and apparatus of creating highly portable output files by combining pages from multiple input files |
US6067531A (en) | 1998-07-21 | 2000-05-23 | Mci Communications Corporation | Automated contract negotiator/generation system and method |
US6538760B1 (en) | 1998-09-08 | 2003-03-25 | International Business Machines Corp. | Method and apparatus for generating a production print stream from files optimized for viewing |
US6407821B1 (en) | 1998-09-08 | 2002-06-18 | International Business Machines Corporation | Method and apparatus for printing documents including embedded print objects with an intelligent printing system |
US6715126B1 (en) | 1998-09-16 | 2004-03-30 | International Business Machines Corporation | Efficient streaming of synchronized web content from multiple sources |
US6549918B1 (en) | 1998-09-21 | 2003-04-15 | Microsoft Corporation | Dynamic information format conversion |
US5993088A (en) | 1998-09-30 | 1999-11-30 | International Business Machines Corporation | Method for improving print performance and quality by accumulating, storing and using resource accounting information with a print job |
US6362870B2 (en) | 1998-10-26 | 2002-03-26 | Hewlett-Packard Company | Image copier having enhanced duplex capabilities; method of printing a copy of a document to produce a duplex copy product |
US6583789B1 (en) | 1998-12-03 | 2003-06-24 | International Business Machines Corporation | Method and system for processing glyph-based quality variability requests |
US6675356B1 (en) | 1998-12-22 | 2004-01-06 | Xerox Corporation | Distributed document-based calendaring system |
US6608693B1 (en) | 1999-04-30 | 2003-08-19 | Hewlett-Packard Development Company, L.P. | Apparatus and method for generating a print job from a command stream describing multiple copies of a document |
US6658477B1 (en) | 1999-05-12 | 2003-12-02 | Microsoft Corporation | Improving the control of streaming data through multiple processing modules |
US6674540B1 (en) | 1999-05-24 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Assembling and printing compound documents |
US20020111133A1 (en) | 1999-07-15 | 2002-08-15 | Erland Wittkotter | Data processing appliance |
US6675353B1 (en) | 1999-07-26 | 2004-01-06 | Microsoft Corporation | Methods and systems for generating XML documents |
US6694485B1 (en) | 1999-07-27 | 2004-02-17 | International Business Machines Corporation | Enhanced viewing of hypertext markup language file |
US6763343B1 (en) | 1999-09-20 | 2004-07-13 | David M. Brooke | Preventing duplication of the data in reference resource for XML page generation |
US6418448B1 (en) | 1999-12-06 | 2002-07-09 | Shyam Sundar Sarkar | Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web |
US6812941B1 (en) | 1999-12-09 | 2004-11-02 | International Business Machines Corp. | User interface management through view depth |
US20010044813A1 (en) | 2000-01-10 | 2001-11-22 | Frank Kenneth B. | Document production platform |
US6981207B1 (en) | 2000-01-11 | 2005-12-27 | Ecora Software Corporation | Automatic documentation of configurable systems by outputting explanatory information of configuration parameters in a narrative format and configuration parameters differences |
US20020073236A1 (en) | 2000-01-14 | 2002-06-13 | Helgeson Christopher S. | Method and apparatus for managing data exchange among systems in a network |
US20010018697A1 (en) | 2000-01-25 | 2001-08-30 | Fuji Xerox Co., Ltd. | Structured document processing system and structured document processing method |
US6785673B1 (en) | 2000-02-09 | 2004-08-31 | At&T Corp. | Method for converting relational data into XML |
US6591278B1 (en) | 2000-03-03 | 2003-07-08 | R-Objects, Inc. | Project data management system and method |
US6961902B2 (en) | 2000-03-07 | 2005-11-01 | Broadcom Corporation | Interactive system for and method of automating the generation of legal documents |
US20010034739A1 (en) | 2000-03-07 | 2001-10-25 | Anecki John A. | Interactive system for and method of automating the generation of legal documents |
US20010044809A1 (en) | 2000-03-29 | 2001-11-22 | Parasnis Shashank Mohan | Process of localizing objects in markup language documents |
US6925597B2 (en) | 2000-04-14 | 2005-08-02 | Picsel Technologies Limited | Systems and methods for digital document processing |
US6789229B1 (en) | 2000-04-19 | 2004-09-07 | Microsoft Corporation | Document pagination based on hard breaks and active formatting tags |
US6781609B1 (en) | 2000-05-09 | 2004-08-24 | International Business Machines Corporation | Technique for flexible inclusion of information items and various media types in a user interface |
US6771291B1 (en) | 2000-06-07 | 2004-08-03 | The Perfect Web Corporation | Method for developing electronic documents employing multiple display regions |
US6931590B2 (en) | 2000-06-30 | 2005-08-16 | Hitachi, Ltd. | Method and system for managing documents |
US6681223B1 (en) | 2000-07-27 | 2004-01-20 | International Business Machines Corporation | System and method of performing profile matching with a structured document |
US20020049790A1 (en) | 2000-08-08 | 2002-04-25 | Ricker Jeffrey M | Data interchange format transformation method and data dictionary used therefor |
US20020065848A1 (en) | 2000-08-21 | 2002-05-30 | Richard Walker | Simultaneous multi-user document editing system |
US20020059337A1 (en) | 2000-09-12 | 2002-05-16 | Makoto Takaoka | Information processing apparatus, method therefor, and computer-readable memory |
US20020087602A1 (en) | 2000-09-13 | 2002-07-04 | Ryuichi Masuda | Information processing apparatus, method therefor, and computer-readable memory |
US6657647B1 (en) * | 2000-09-25 | 2003-12-02 | Xoucin, Inc. | Controlling the order in which content is displayed in a browser |
US20050251742A1 (en) * | 2000-09-27 | 2005-11-10 | Microsoft Corporation | View templates for HTML source documents |
US7051276B1 (en) | 2000-09-27 | 2006-05-23 | Microsoft Corporation | View templates for HTML source documents |
US20020065857A1 (en) | 2000-10-04 | 2002-05-30 | Zbigniew Michalewicz | System and method for analysis and clustering of documents for search engine |
US6925631B2 (en) * | 2000-12-08 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Method, computer system and computer program product for processing extensible markup language streams |
US20040054669A1 (en) * | 2000-12-18 | 2004-03-18 | Claude Seyrat | Method for dividing structured documents into several parts |
US20020099797A1 (en) | 2001-01-25 | 2002-07-25 | Merrell Alan Ray | Architecture for access to embedded files using a san intermediate device |
US20020103835A1 (en) | 2001-01-30 | 2002-08-01 | International Business Machines Corporation | Methods and apparatus for constructing semantic models for document authoring |
US20020107886A1 (en) | 2001-02-07 | 2002-08-08 | Gentner Donald R. | Method and apparatus for automatic document electronic versioning system |
US20020116421A1 (en) | 2001-02-17 | 2002-08-22 | Fox Harold L. | Method and system for page-like display, formating and processing of computer generated information on networked computers |
US7054841B1 (en) | 2001-09-27 | 2006-05-30 | I2 Technologies Us, Inc. | Document storage and classification |
US20030093520A1 (en) * | 2001-10-26 | 2003-05-15 | Beesley Richard Craig | Method of controlling the amount of data transferred between a terminal and a server |
US7134071B2 (en) | 2001-11-21 | 2006-11-07 | Ricoh Company, Ltd. | Document processing utilizing a version managing part |
US6910843B2 (en) | 2001-11-26 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Cover authoring systems and methods and bookbinding systems incorporating the same |
US7080083B2 (en) | 2001-12-21 | 2006-07-18 | Kim Hong J | Extensible stylesheet designs in visual graphic environments |
US6912555B2 (en) | 2002-01-18 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Method for content mining of semi-structured documents |
US6944515B2 (en) | 2002-03-25 | 2005-09-13 | Honda Giken Kogyo Kabushiki Kaisha | Parts list system which generates and manages a parts list simply and effectively |
US20040117733A1 (en) * | 2002-09-05 | 2004-06-17 | Canon Kabushiki Kaisha | Electronic document for describing a computer service |
US7171618B2 (en) | 2003-07-30 | 2007-01-30 | Xerox Corporation | Multi-versioned documents and method for creation and use thereof |
US20050114316A1 (en) * | 2003-11-25 | 2005-05-26 | Fontoura Marcus F. | Using intra-document indices to improve xquery processing over XML streams |
US7301544B2 (en) | 2005-03-31 | 2007-11-27 | Microsoft Corporation | Printing tree-described documents |
Non-Patent Citations (43)
Title |
---|
"@tryinCSS3 (was Useragent Rules in CSS)"; Mar. 31, 2004; http://lists.w3.org/Archives/Public/www-style/2004Mar/0333.html.; 2 pages. |
"[Editorial Draft] Versioning XML Languages"; Proposed TAG Finding Nov. 16, 2003; http://www.w3.org/2001/tag/doc/versioning-20031116: 23 pages. |
"Controlling the Data Chaos by Adding Intelligence to Media"; 4 pages. 2004. |
"Efficient Representation and Streaming of XML Content over the Internet Medium", Girardot et al., IEEE, 2000, pp. 67-70. |
"Interleaved Graphics and Text", Bluethman et al., IBM Technical Disclosure Bulletin, Apr. 1980, vol. 22, No. 11, pp. 4813-4815. |
"Microsoft Word", copyrighted 2001, 1-4. |
"Mulberry Slideshow XML (v 2.1): A User's Guide", http://www.mulberrytech.com/slideshow/Mulberry-slideshow.zip, Online Publication,(Dec. 7, 2001),17. |
"Networked File System"; http://www.scit.wlv.ac.uk/~jphb/comms/nfs.html.; 6 pages, printed Apr. 19, 2004. |
"Office Action Correspondence Subsystem OACS User's/Training Manual", 1-296. |
"Open eBook Publication Structure 1.2", Aug. 27, 2002, 91 pages. |
"Reply Assistant", Copyright 2001, 1-34. |
"SOAP Version 1.2 Part 1: Messaging Framework"; W3C Proposed Recommendation May 7, 2003; http://www.w3.org/TR/2003/PR-soap12-part1-20030507. 25 pages. |
"SVG Print", W3C Working Draft, Jul. 15, 2003 http://www.w3.org/TR/2003/WD-SVGPrint-20030715/ pp. 1-14. |
"Technical Note 2067: About the Keynote XML File Format (APXL Schema)", http://developer.apple.com/technotes/tn2002/pdf/tn2067.pdf, (Dec. 12, 2003),26. |
"Technical note TN2073: Deconstructing A Keynote 1.x Document: Part One-Slides", http://developer.apple.com/technotes/tn2002/pdf/tn2073.pdf, (May 30, 2003),27. |
"URIQA! The URI Query Agent Model, A Semantic Web Enabler"; URIQA: The Nokia Query Agent; http://sw.nokia.com/uriqa/URIQA.html.; 9 pages 2004. |
"XMP Adding Intelligence to Media"; XMP Specification, Jan. 2004, 11 pages. |
Apache Server Frequently Asked Questions; Apache HTTP Server Version 1.3; http://httpd.apache.org/docs/misc/FAQ.html.; 35 pages, printed Apr. 19, 2004. |
Bauer, M. et al., "Open Office Specification 1.0", http://www.oasis-open.org/committees/download.php/6037/office-spec-1.0-cd-1.pdf, (Mar. 22, 2004),607. |
Brauer, M. et al., "Open Office Specification 1.0", http://www.oasis-open.org/committees/download.php/6037/office-spec1.0-cd-c.pdf, 1-607. |
Christodoulakis, et al., "Multimedia Document Presentation, Information Extraction, and Document Formation in MINOS: A Model and a System"; ACM Transaction on Office Information Systems, vol. 4, No. 4: Oct. 1986; pp. 345-383. |
El-Kwae, et al., "Document Image Representation Using XML Technologies"; Proceedings of SPIE, vol. 4670, 2001, pp. 109-120. |
Ellis et al., "Postscrip, Bezier Curves and Chinese Character", ACM, 1989, pp. 162-165. |
Han, Richard , et al., "Websplitter: A Unified XML Framework for Multi-Device Collaborative Web Browsing", IBM Thomas J. Watson Research Center, 1-10. |
Hardy, et al., "Mapping and Displaying Structural Transformations between XML and PDF", ACM 2002, (2002),95-102. |
Holman; "What is XSL-FO", Google Mar. 20, 2002, pp. 1-4. |
Leeuwen, et al., "XML for Flexibility and Extensibility of Design Information Models", Google, (2001),pp. 1-11. |
Marco et al., A Framework for Designing and Implementing the Ada Standard Container Library, ACM 2003, pp. 49-61. |
Meyer, O. "a Tool-Creating Validated XML Documents on the Fly Using MS Word", 113-121. |
Miller; "An Introduction to the Resource Description Framework"; D-Lib Magazine, May 1998; ISSN 1082-9873; http://www.dlib.org/dlib/may98/miller/05miller.html. 10 pages. |
Obasanjo, "Designing Extensible, Versionable XML formats", Google, (Jul. 21, 2004),pp. 1-9. |
Obasanjo, "Designing XML Formats: Versioning vs. Extensibility", Google, (Apr. 11, 2004),pp. 1-6. |
Obasanjo, "Designing XML Formats: Versioning vs. Extensibility", Google, One additional page is included to show the actual of the article, which is Nov. 17, 2004, pp. 1-19. |
OPENOFFICE.ORG, "OpenOffice.org User Guide for Version 1.1.x: Chapter 4: Spreadsheets in Calc", http://documentation.openoffice.org/manuals/OO01.x.x/user<SUB>-</SUB>guide.pdf., (May 7, 2004), 1,2,179-254. |
OpenOffice.org, "OpenOffice.org User Guide for Version 1.1.x: Chapter 5: Creating Presentations With Impress", http://documentation.openoffice.org/manuals/OO01.x.x/user<SUB>-</SUB>guide.pdf., (May 7, 2004, 1,2, 255-286. |
Orchard et al [Editorial Draft] Versioning XML Languages W3C Proposed TAG finding. Nov. 16, 2003, pp. 1-23. |
Orchard, David; "Versioning XML Vocabularies" published on XML.com Dec. 3, 2003, pp. 1-10. |
Pawson; "Printing from XML: An Introduction to XSL-FO", Google Oct. 9, 2002, pp. 1-4. |
Peters, Ralph , et al., "CrystalWeb-a distributed authoring environment for the World-Wide Web", R. Peters, C. Neuss/computer networks and ISDN Systems 27 (1995), 861-870. |
Sahuguet, A et al., "Building Intelligent Web Applications using Lightweight Wrappers", Data & Knowledge Engineering, Amsterdam, NL vol. 36, 2001,, 283-316. |
Steele, Heidi "Easy Microsoft Office Work 2003", published by Que Corporation,(Sep. 19, 2003),52,53,216. |
Sun Microsystems, "StarOffice TM7 Office Suite A Sun TMO NE Software Offering", (Jul. 2003). |
Whitmer, R. ""Document Object Model (DOM) Level 3 Xpath Specification"", http://www.w3.org/TR/DOM-Level-3-XPath, (Dec. 26, 2004), 18. |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8661332B2 (en) | 2004-04-30 | 2014-02-25 | Microsoft Corporation | Method and apparatus for document processing |
US8122350B2 (en) | 2004-04-30 | 2012-02-21 | Microsoft Corporation | Packages that contain pre-paginated documents |
US20080168342A1 (en) * | 2004-04-30 | 2008-07-10 | Microsoft Corporation | Packages that Contain Pre-Paginated Documents |
US20070182990A1 (en) * | 2004-06-17 | 2007-08-09 | Objective Systems Pty Limited | Reproduction of documents into requested forms |
US20060080603A1 (en) * | 2004-09-30 | 2006-04-13 | Microsoft Corporation | Method and apparatus for utilizing an object model to manage document parts for use in an electronic document |
US7673235B2 (en) | 2004-09-30 | 2010-03-02 | Microsoft Corporation | Method and apparatus for utilizing an object model to manage document parts for use in an electronic document |
US20060075337A1 (en) * | 2004-09-30 | 2006-04-06 | Microsoft Corporation | Method, system, and computer-readable medium for creating, inserting, and reusing document parts in an electronic document |
US7617450B2 (en) | 2004-09-30 | 2009-11-10 | Microsoft Corporation | Method, system, and computer-readable medium for creating, inserting, and reusing document parts in an electronic document |
US20060136812A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | Method and system for linking data ranges of a computer-generated document with associated extensible markup language elements |
US7614000B2 (en) | 2004-12-20 | 2009-11-03 | Microsoft Corporation | File formats, methods, and computer program products for representing presentations |
US20060190815A1 (en) * | 2004-12-20 | 2006-08-24 | Microsoft Corporation | Structuring data for word processing documents |
US7617229B2 (en) | 2004-12-20 | 2009-11-10 | Microsoft Corporation | Management and use of data in a computer-generated document |
US7617451B2 (en) | 2004-12-20 | 2009-11-10 | Microsoft Corporation | Structuring data for word processing documents |
US7617444B2 (en) | 2004-12-20 | 2009-11-10 | Microsoft Corporation | File formats, methods, and computer program products for representing workbooks |
US7620889B2 (en) | 2004-12-20 | 2009-11-17 | Microsoft Corporation | Method and system for linking data ranges of a computer-generated document with associated extensible markup language elements |
US20060136433A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | File formats, methods, and computer program products for representing workbooks |
US20060136827A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | File formats, methods, and computer program products for representing presentations |
US7770180B2 (en) | 2004-12-21 | 2010-08-03 | Microsoft Corporation | Exposing embedded data in a computer-generated document |
US7752632B2 (en) | 2004-12-21 | 2010-07-06 | Microsoft Corporation | Method and system for exposing nested data in a computer-generated document in a transparent manner |
US8347225B2 (en) * | 2007-09-26 | 2013-01-01 | Yahoo! Inc. | System and method for selectively displaying web page elements |
US20090083661A1 (en) * | 2007-09-26 | 2009-03-26 | Yahoo! Inc. | System and method for selectively displaying web page elements |
US10943030B2 (en) | 2008-12-15 | 2021-03-09 | Ibailbonding.Com | Securable independent electronic document |
US20100165380A1 (en) * | 2008-12-30 | 2010-07-01 | Jason Grams | Systems and Methods for Processing Packaged Print Data Streams |
US8339641B2 (en) * | 2008-12-30 | 2012-12-25 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for processing packaged print data streams |
US9965444B2 (en) | 2012-01-23 | 2018-05-08 | Microsoft Technology Licensing, Llc | Vector graphics classification engine |
US9990347B2 (en) | 2012-01-23 | 2018-06-05 | Microsoft Technology Licensing, Llc | Borderless table detection engine |
US9632737B2 (en) * | 2012-07-03 | 2017-04-25 | Canon Kabushiki Kaisha | Information processing device, and method and medium for the same |
US20140009787A1 (en) * | 2012-07-03 | 2014-01-09 | Canon Kabushiki Kaisha | Information processing device, and method and medium for the same |
US10521495B2 (en) | 2012-12-05 | 2019-12-31 | Chegg, Inc. | Authenticated access to accredited testing services |
US10108585B2 (en) * | 2012-12-05 | 2018-10-23 | Chegg, Inc. | Automated testing materials in electronic document publishing |
US10713415B2 (en) | 2012-12-05 | 2020-07-14 | Chegg, Inc. | Automated testing materials in electronic document publishing |
US10929594B2 (en) | 2012-12-05 | 2021-02-23 | Chegg, Inc. | Automated testing materials in electronic document publishing |
US11295063B2 (en) | 2012-12-05 | 2022-04-05 | Chegg, Inc. | Authenticated access to accredited testing services |
US11741290B2 (en) | 2012-12-05 | 2023-08-29 | Chegg, Inc. | Automated testing materials in electronic document publishing |
US11847404B2 (en) | 2012-12-05 | 2023-12-19 | Chegg, Inc. | Authenticated access to accredited testing services |
US9953008B2 (en) | 2013-01-18 | 2018-04-24 | Microsoft Technology Licensing, Llc | Grouping fixed format document elements to preserve graphical data semantics after reflow by manipulating a bounding box vertically and horizontally |
US20150007021A1 (en) * | 2013-06-27 | 2015-01-01 | Adobe Systems Incorporated | Vector Graphic Conversion into Fonts |
US9317489B2 (en) * | 2013-06-27 | 2016-04-19 | Adobe Systems Incorporated | Vector graphic conversion into fonts |
Also Published As
Publication number | Publication date |
---|---|
EP1646952A4 (fr) | 2011-12-07 |
CN1961304A (zh) | 2007-05-09 |
KR101109396B1 (ko) | 2012-01-30 |
EP1646952A2 (fr) | 2006-04-19 |
WO2005111828A2 (fr) | 2005-11-24 |
WO2005111828A3 (fr) | 2006-08-31 |
CN1961304B (zh) | 2010-06-16 |
KR20070011055A (ko) | 2007-01-24 |
JP2007535749A (ja) | 2007-12-06 |
US20050248790A1 (en) | 2005-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7418652B2 (en) | Method and apparatus for interleaving parts of a document | |
US7383500B2 (en) | Methods and systems for building packages that contain pre-paginated documents | |
US8661332B2 (en) | Method and apparatus for document processing | |
US7487448B2 (en) | Document mark up methods and systems | |
US7359902B2 (en) | Method and apparatus for maintaining relationships between parts in a package | |
US7512878B2 (en) | Modular document format | |
US7549118B2 (en) | Methods and systems for defining documents with selectable and/or sequenceable parts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ORNSTEIN, DAVID;PAOLI, JEAN;HILLBERG, MICHAEL J.;AND OTHERS;REEL/FRAME:015137/0448;SIGNING DATES FROM 20040805 TO 20040912 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034541/0477 Effective date: 20141014 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20200826 |