A method is disclosed for laying out a plurality of containers on a page to generate a document upon insertion of content in the containers. The containers each have edges whose position upon layout is independent of the dimensions of the content inserted in each container. An association is created between an edge of a first container and an edge of a second container that is parallel and opposed to the first edge which constrains the second edge to a relation to the first edge. The page may then be laid out using the containers such that the edge of the first container moves dependent on the dimensions of content inserted in the first and second containers.
|
1. A computer-implemented method of automatically laying out a plurality of containers in a page layout to generate, with a processor, one or more documents upon insertion of content in the containers, said method comprising:
(a) creating a plurality of containers, each said container having edges whose position in the page layout is independent of the content inserted in said containers and having at least one edge whose position is constrained by setting to be either content-independent or content-dependent in at least one direction, wherein a first container of said plurality of containers has an edge glued to a guide of the page layout and a second container of said plurality of containers also has an edge glued to the guide, and the guide is displayed as part of a graphical user interface representation of the page layout, and the edge of the first container and the edge of the second container are each associated with the guide;
(b) setting the guide to be movable in the page layout, if the glued edges of the first container and the second container are opposed to each other with respect to the guide, to establish the opposed glued edges to be content-dependent; and
(c) setting the guide to be fixed in the page layout, if the glued edges of the first container and the second container are positioned on the same side with respect to the guide, to establish the glued edges to be content-independent.
26. computer apparatus configured to automatically lay out a plurality of containers to generate one or more documents upon insertion of content in the containers in a page layout, said apparatus comprising:
means for creating a plurality of containers, each said container having edges whose position in the page layout is independent of the content inserted in said containers;
means for creating a guide in relation to a first edge of one said container;
means for creating an association between said guide and an edge of a further said container that is parallel to said first edge, said association constraining said edge of said further container to be in relation to said guide;
means for displaying the guide as part of a graphical user interface representation of the page layout;
means for setting, in the case where the parallel edges are related to the guide and opposed to each other with respect to the guide, the guide to be movable in the page layout, thus establishing the parallel edges to be dependent on the content inserted in said one container and dependent on the content inserted in said further container; and
means for setting, in the case where the parallel edges are related to the guide and are positioned on the same side with respect to the guide, the guide to be fixed in the page layout, thus establishing the parallel edges to be independent of the content to be inserted in said one container and independent of content to be inserted in said further container.
17. A graphical user interface for automatically creating a page layout for document generation, the page layout comprising a plurality of containers into which content is insertable to generate the document, said graphical user interface comprising:
a display space upon which a representation of the page layout is formed;
means for creating a plurality of containers in the page layout, each said container having edges whose position in the page layout is independent of the content to be inserted in said containers;
means for identifying a reference in relation to a first edge of one container of said plurality of containers;
means for displaying the reference as part of the page layout;
means for creating an association between said reference and a further edge of a further container of said plurality of containers, said further edge being parallel to said first edge, said association constraining said further edge of said further container to be in relation to said reference;
means for setting, in the case where the parallel first and further edges are associated with said reference and are opposed to each other with respect to the reference, the reference to be movable in the page layout, thus establishing the parallel first and further edges to be dependent on the content inserted in the corresponding containers; and
means for setting, in the case where the parallel edges are associated with said reference and are positioned on the same side with respect to the reference, the reference to be fixed in the page layout, thus establishing the parallel edges to be independent of the content to be inserted in the corresponding containers.
24. A computer readable storage medium having a computer program recorded thereon, the program being executable by a computer to automatically lay out a plurality of containers in a page layout to generate one or more documents upon insertion of content in the containers, said program comprising:
code means for creating a plurality of containers, each said container having edges whose position in the page layout is independent of the content inserted in said containers;
code means for creating a guide in relation to a first edge of one container of said plurality of containers and associating the guide with the first edge;
code means for displaying the guide as part of a graphical user interface representation of the page layout;
code means for creating an association between said guide and a further edge of a further container of said plurality of containers, said further edge being parallel to said first edge, said association constraining said further edge of said further container to be in relation to said guide;
code means for setting, in the case where the parallel first and further edges are associated with said guide and are opposed to each other with respect to said guide, the guide to be movable in the page layout, thus establishing the opposed parallel first and further edges to be dependent on the content inserted in said one container and content inserted in said further container; and
code means for setting, in the case where the parallel first and further edges are positioned on the same side with respect to the guide, the guide to be fixed in the page layout, thus establishing the parallel first and further edges to be independent of the content to be inserted in said one container and of the content to be inserted in said further container.
25. A computer readable storage medium having a computer program recorded thereon, the program being executable by a computer to automatically lay out a plurality of containers in a page layout to generate one or more documents upon insertion of content in the containers, said program comprising:
code means for displaying a graphical user interface representation of the page layout;
code means for creating a plurality of containers, each said container having edges whose position in the page layout is independent of the dimensions of the content inserted in said container;
code means for creating a first association between a first edge of a first container of said plurality of containers and a second edge of a second container of said plurality of containers, the second edge of the second container being parallel and opposed according to said first association to said first edge of said first container, said first association constraining said second edge of said second container to be in relation to said first edge of said first container;
code means for creating a second association between a third edge of a third container of said plurality of containers and another edge of another container of said plurality of containers on the page, said another edge of said another container being parallel and unopposed according to the second association to said third edge of said third container, said second association constraining said another edge of said another container to be in relation to said third edge of said third container;
code means for displaying each of the first association and the second association as part of the graphical user interface representation of the page layout;
code means for laying out said containers in the page such that at least said first edge of said first container moves dependent on the dimensions of content inserted in said first and second containers; and
code means for laying out said containers such that at least said third edge of said third container is fixed in the page layout and independent of the dimensions of content inserted in said third container.
2. A method according to
(a) creating a guide in relation to a first edge of one container of said plurality of containers;
(b) creating an association between said guide and a further edge of a further container of said plurality of containers, which is parallel and opposed to said first edge, said association constraining said further edge of said further container in relation to said guide; and
(c) laying out said containers such that said guide moves dependent on the content inserted in at least one of said plurality of containers.
3. A method according to
4. A method according to
an approximate relative distance relation; and
a fixed distance relation.
5. A method according to
(a) creating an association between a first edge of a first container of said plurality of containers and a further edge of a further container of said plurality of containers that is parallel to said first edge, said association constraining said edge of said further container in relation to said first edge; and
(b) where said further edge of said further container is opposed to said first edge, laying out said containers such that said first edge moves dependent on the content inserted in said containers; and
(c) where said further edge of said further container is unopposed to said first edge, laying out said containers such that said first edge is fixed on the page.
6. A method according to
an approximate relative distance relation; and
a fixed distance relation.
7. A method according to
(a) creating an association between a first edge of said first container and a second edge of said second container that is parallel and opposed to said first edge of said first container, said association constraining said second edge of said second container to be in relation to said first edge of said first container;
(b) laying out said containers such that said first edge of said first container moves dependent on the dimensions of content inserted in said first and second containers;
(c) creating an association between a third edge of a third said container and another edge of another container of said plurality of containers on the page, said another edge of said another container being parallel and unopposed to said third edge of said third container, said association constraining said another edge of said another container to be in relation to said third edge of said third container.
8. A method according to
10. A method according to
an approximate relative distance relation; and
a fixed distance relation.
11. A method according to
12. A method according to
14. A method according to
15. A method according to
16. A method according to
18. A graphical user interface according to
19. A graphical user interface according to
an approximate relative distance relation; and
a fixed distance relation.
20. A graphical user interface according to
21. A graphical user interface according to
(a) first means for displaying a reference having an association to said first edge of said one container, and having an association to said further edge, of said further container, that is parallel and opposed to said first edge; and
(b) second means for displaying a reference having no associations to edges, or having associations to edges that are not parallel or not opposed;
wherein the first means and the second means can be distinguished visually by a user.
22. A graphical user interface according to
(i) drawing a line of a first color, and the second means comprises drawing a line of a second color; and
(ii) drawing a dashed line, and the second means comprises drawing a solid line.
23. A graphical user interface according to
|
This application claims the right of priority under 35 U.S.C. §119 based on Australian Patent Application No. 2007201627, filed Apr. 13, 2007, which is incorporated by reference herein in its entirety as if fully set forth herein.
The current invention relates to document layout and, in particular, to setting constraints on containers to hold content to be laid out in a document.
Page layout is the art of positioning elements, such as text and graphics, on a page with the aim of creating a desired aesthetic effect for a document. Whilst this may be done manually, modern approaches involve representing the elements and the page electronically in a computer system whereupon the page may be subsequently reproduced, perhaps on a video display device but typically the page targeted for reproduction by printing.
In order to realise a certain aesthetic effect, the document author will want to retain control over most aspects of page layout. However, there are some circumstances under which a certain degree of automated layout, within specified constraints, is of great benefit.
Variable Data Printing, or VDP, is an example of a class of software applications that benefit from constraint-based automatic layout. VDP allows for the printing of a large number of documents, each of which contains text and graphics that have been customised to the document's recipient by inclusion of so-called variable text and graphics.
A VDP document is typically formed from a template containing static text and graphic objects. The document author then adds placeholders to the template. The placeholders define how elements, such as variable text and graphic objects, are to be selected and laid out within the document to be produced.
A container defines an area on a page that can hold display content, such as images, text, or other media elements. Containers have a size and position that can be fixed on the page, or which can be varied by negotiating for space with other containers. A container's bounds are not necessarily confined to the printable area of the page. A straight line segment of the border of a container is referred to as an edge.
An edge can either be either fixed or movable. A fixed edge has a constant absolute position on the page. A movable edge has a position that can change according to certain placed elements and the rules of one or more of the containers.
Multiple graphical and text elements may be used in the layout. These elements may vary in size and proportion. Without constraint-based automatic layout, each element would be assigned to a container with fixed edges. However, this inflexible approach can lead to an inappropriate amount of space being allocated in many instances.
For example, two adjacent containers of the same size could be occupied by images with greatly differing sizes, leading to the larger image being scaled down and the smaller image failing to fill its space. This can also lead to undesired space around and between elements, due to the actual element differing in aspect ratio from the allocated container. Better results may be obtained if the neighbouring containers can negotiate between each other to determine the best area to allocate to each container. Such negotiation is typically carried out by an automatic layout process using the constraints and the element properties.
There are other (non-VDP) applications which nevertheless are template based. Templates are very good at defining precise layouts, into which content may be inserted. However, it is desirable to define a template which defines a general appearance, but allows the flexible use of different numbers and size of elements. This allows multiple documents to be produced with a similar appearance from a single template. It can also free the document author from some tedious aspects of manually balancing elements against each other.
It is therefore desirable to have a mechanism to set constraints to allow containers to negotiate with each other to determine the size of each container.
Previous solutions have involved the addition of some kind of visual connection between containers to constrain them. As an example, some previous solutions have employed the use of a device called a “strut”. Struts may either be explicitly added to the template by the user, or automatically added by the application. Struts operate to constrain two container edges to the same relative distance apart, regardless of their absolute position on the page.
Struts, and other visual devices for associating and constraining pairs of containers, add visual clutter to the layout, and are limited to each constraining a single pair of edges. In addition, edges have to be manually set to be movable or fixed. This means that the outer boundary has to explicitly be constrained. For example, consider a container on a page with one edge set to be movable. Unless the edge movement is limited by a maximum size setting on the container, or an explicit border placed on the page, this edge can move without limit, even extending beyond the printable area of the page.
Disclosed is an approach for setting containers in a page layout that provides for arbitrated or negotiated changes in size of associated containers dependent upon content inserted therein.
In accordance with one aspect of the present disclosure there is provided a method of laying out a plurality of containers to generate one or more documents upon insertion of content in the containers, said method comprising the steps of:
(a) creating a plurality of containers, each said container having edges whose position upon layout is independent of the content inserted in said containers;
(b) creating a guide in fixed relation to a first edge of one said container;
(c) creating an association between said guide and an edge of a further said container that is parallel and opposed to said first edge, said association constraining said edge of said further container to be in relation to said guide; and
(d) laying out said containers such that said guide moves dependent on the content inserted in said containers.
Desirably the guide moves dependent on content inserted in said one container and content inserted in said further container.
In accordance with one aspect of the present disclosure there is provided a method of laying out a plurality of containers to generate one or more documents upon insertion of content therein, said method comprising the steps of:
(a) creating a plurality of containers, each said container having edges whose position upon layout is independent of the content inserted in said containers;
(b) creating an association between an edge of a first said container and an edge of a further said container that is parallel to said first-mentioned edge, said association constraining said edge of said further container to be in relation to said first-mentioned edge; and
(c) where said edge of said further container is opposed to said first-mentioned edge, laying out said containers such that said first-mentioned edge moves dependent on the content inserted in said containers; and
(d) where said edge of said further container is unopposed to said first-mentioned edge, laying out said containers such that said first-mentioned edge is fixed on the page.
In accordance with one aspect of the present disclosure there is provided a method of laying out a plurality of containers on a page to generate one or more documents upon insertion of content in the containers, said method comprising the steps of:
(a) creating a plurality of containers, each said container having edges whose position upon layout is independent of the dimensions of the content inserted in said container;
(b) creating an association between an edge of a first said container and an edge of a second said container that is parallel and opposed to said edge of said first container, said association constraining said edge of said second container to be in relation to said edge of said first container;
(c) creating an association between an edge of a third said container and an edge of another one of said containers on the page, said edge of said another container being parallel and unopposed to said edge of said third container, said association constraining said edge of said another container to be in fixed relation to said edge of said third container; and
(d) laying out said containers such that said edge of said first container moves dependent on the dimensions of content inserted in said first and second containers.
In this aspect, said another container may comprise one of said first container and said second container, or alternatively a fourth said container.
In accordance with one aspect of the present disclosure there is provided a method of setting positional constraints on a plurality of containers adapted to be laid out upon insertion of content in the containers to generate one or more documents, each said container having at least one edge whose position is constrained by setting to be either content-independent or content-dependent in at least one direction, said method being characterised in that the action of setting the position of said at least one edge to be content-dependent in a particular direction, bounds the position of said one edge in said particular direction if the position of said one edge would otherwise not have been bounded.
In specific implementations at least one of the containers may comprise a plurality of sub-containers in which content is placed upon laying out the page, wherein positions of the sub-containers with the one container is determined by constraints associated with the sub-containers.
Other aspects are also disclosed including a GUI for implementing the lay out processes, a computer program therefore and apparatus for performing the methods and GUI.
At least one embodiment of the present invention will now be described with reference to the drawings in which:
Disclosed is a flexible way of constraining combinations of containers to be laid out on a page, including setting the outer boundary of the containers, without adding excessive visual clutter to the layout, and without being limited to pairs of containers.
The described methods of laying out containers and setting constraints may be implemented using a computer system 600, such as that shown in
As seen in
The computer module 601 typically includes at least one processor unit 605, and a memory unit 606 for example formed from semiconductor random access memory (RAM) and read only memory (ROM). The module 601 also includes an number of input/output (I/O) interfaces including an audio-video interface 607 that couples to the video display 614 and loudspeakers 617, an I/O interface 613 for the keyboard 602 and mouse 603 and optionally a joystick (not illustrated), and an interface 608 for the external modem 616 and printer 615. In some implementations, the modem 616 may be incorporated within the computer module 601, for example within the interface 608. The computer module 601 also has a local network interface 611 which, via a connection 623, permits coupling of the computer system 600 to a local computer network 622, known as a Local Area Network (LAN). As also illustrated, the local network 622 may also couple to the wide network 620 via a connection 624, which would typically include a so-called “firewall” device or similar functionality. The interface 611 may be formed by an Ethernet™ circuit card, a wireless Bluetooth™ or an IEEE 802.11 wireless arrangement.
The interfaces 608 and 613 may afford both serial and parallel connectivity, the former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated). Storage devices 609 are provided and typically include a hard disk drive (HDD) 610. Other devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive 612 is typically provided to act as a non-volatile source of data. Portable memory devices, such optical disks (eg: CD-ROM, DVD), USB-RAM, and floppy disks for example may then be used as appropriate sources of data to the system 600.
The components 605, to 613 of the computer module 601 typically communicate via an interconnected bus 604 and in a manner which results in a conventional mode of operation of the computer system 600 known to those in the relevant art. Examples of computers on which the described arrangements can be practised include IBM-PC's and compatibles, Sun Sparcstations, Apple Mac™ or alike computer systems evolved therefrom.
Typically, the application programs discussed above are resident on the hard disk drive 610 and read and controlled in execution by the processor 605. Intermediate storage of such programs and any data fetched from the networks 620 and 622 may be accomplished using the semiconductor memory 606, possibly in concert with the hard disk drive 610. In some instances, the application programs may be supplied to the user encoded on one or more CD-ROM and read via the corresponding drive 612, or alternatively may be read by the user from the networks 620 or 622. Still further, the software can also be loaded into the computer system 600 from other computer readable media. Computer readable storage media refers to any storage medium that participates in providing instructions and/or data to the computer system 600 for execution and/or processing. Examples of such media include floppy disks, magnetic tape, CD-ROM, a hard disk drive, a ROM or integrated circuit, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module 601. Examples of computer readable transmission media that may also participate in the provision of instructions and/or data include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like.
The second part of the application programs and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display 614. Through manipulation of the keyboard 602 and the mouse 603, a user of the computer system 600 and the application may manipulate the interface to provide controlling commands and/or input to the applications associated with the GUI(s).
As schematically illustrated in
Referring to
A guide is a line or other reference to which an edge of a container, that runs parallel to the guide, can be affixed, connected or “glued”, as termed by the present inventors. In
In the described arrangements, guides are either horizontal (e.g. 115) or vertical (e.g. 110), and span the page. Guides are preferably placed in the layout by clicking in a designation area 130 of the GUI 100 at a border of the page area 140. Guides can also be moved by clicking and dragging the guide to a new location. A container can be moved in a similar fashion. A container is preferably glued to a guide by placing one of the edges of the container in the same position as the guide. This is shown in
Referring to
All containers glued to a movable guide take part in layout negotiations. The negotiations, which are implemented by the layout process 420, will determine the ultimate placement of the guide. In turn, each edge that is glued to the movable guide will move with the movable guide. In the example of
Similarly, any guide without one or more edges on each side will remained fixed in place. For example, referring to
Referring now to
For example, referring to the layout illustrated by
Each of the containers involved in negotiations preferably is configured with a minimum size in each dimension, which thereby limits the movement range of any movable guide glued to the container. For example, in
The role of a layout engine used for the automatic layout process 420 is to adjust size and position of containers to best fit a given set of constraints. As such, a layout engine is a constraint solver, various types of which are known in the art. One common form of constraint solver performs “convex optimisation”, or optimising a convex objective function over a convex subset of a vector space. Another common form of constraint solver creates new candidate solutions by making small random changes to the constrained variables, and selects candidates that score well according to an objective function, until no better solution can be found. Some well-known forms of solver of this type are “genetic algorithms” and “simulated annealing”.
A constraint problem typically involves a set of constraints which must be satisfied exactly, and a second set used to guide the solver to a good solution, without necessarily satisfying all such constraints. The constraints which must be satisfied are referred to as “hard” constraints, and the constraints that may not necessarily be satisfied may be referred to as “soft” constraints. In a preferred implementation, strength and priority can also be assigned to constraints. Constraints with higher priority can override those with lower priority. For soft constraints with the same priority, those with higher strength have more influence in guiding the solver than those with lower strength.
In more than one dimension, containers can be defined by representing each of their edges as a mark along some axis. Typically, two perpendicular axes are used, allowing the definition of rectangular containers. Two marks along one axis are used to represent a container's top and bottom edges, and two marks along the perpendicular axis represent its left and right edges.
Additional soft constraints can be associated with a container, to specify its preferred size and shape. For example, a preferred size constraint can specify a preferred offset between a container's marks along the same axis. A preferred shape constraint can specify a relationship between marks along different axes. For example, a shape constraint could indicate that a container tries to maintain its aspect ratio, by specifying that the preferred distance between two marks on one axis is proportional to the actual distance between two marks on the other axis, and vice versa. As another example, a shape constraint could indicate that a container tries to maintain a constant area. It is often useful to specify both a preferred size and shape for each container, with different strengths to vary the degree of influence from each constraint. In a preferred implementation, shape constraints are solved for each axis by using a partial solution from other axes, iterating across all axes until equilibrium is reached.
A solution to this layout is shown in
Accordingly, using the layout engine described above within the process 420, constraints set via the GUI 410 may be negotiated to provide the laid-out page 430.
In an alternative implementation, edges may be glued to guides by snap dragging. Snap dragging is a technique well known in the art and which may be performed with aid of the mouse 603 in the GUI 410, where an object can easily be aligned with another by positioning the former close to the latter, and allowing the software to “snap” the former into alignment with the latter. Using this technique, edges can be “snap-glued” to guides, by positioning the edge within a certain threshold distance of the guide. Guides could be displayed as solid if they are moveable, and dashed if they are fixed. Alternatively, moveable guides could be displayed within the GUI using one colour, and fixed guides could be displayed using another colour. When a container edge is moved within the snap range of a guide, the appearance of the guide may be changed to indicate that the container may potentially be snapped to the guide. Other variations in appearance that could be used to indicate whether a guide is moveable or a potential snap target include line thickness, line dash patterns, line waviness, animation (such as “marching ants”, commonly used in graphics programs to indicate selections, or blinking), or additional graphical or textual symbols added to the visual appearance of the guide.
In yet another implementation, edges may additionally be directly glued to each other. Edges become movable if a left edge is glued to a right edge, or a top edge to a bottom edge. Such edge pairs are referred to as “opposed pairs.”
Further, in respect of the “opposed” nature of edges, returning to
In still a further implementation, all edges glued to a guide may maintain a fixed relative distance from each other. A fixed distance of zero would be equivalent to the behaviour described previously.
In still a further implementation, edges glued to a guide may maintain an approximate relative distance from each other. The approximate relative distance may comprise a preferred distance, and optionally a maximum distance and a minimum distance. The exact distance may be determined by treating the relative distance as a soft constraint.
The presently disclosed arrangements have various advantages over the prior art. Preferred implementations can be implemented with a simple user interface, where negotiating constraints may be set by snap-gluing edges to guides. Also, a clutter-free display will result for many types of layout designs, in comparison to using struts to represent constraints.
Further, with the described arrangements, the movement range of every movable edge is limited by other (fixed or movable) edges. In particular, the outer edges of the layout design will be fixed in place. This provides an implicit outer bounding box of all outer edges 260 within which the final laid-out containers must wholly lie, without needing to explicitly define a page boundary. It is noted that a slight separation between bounding box and containers has been shown for illustration purposes, in
By gluing multiple containers to each guide, sophisticated networks of negotiating constraints can be constructed with little effort.
Whilst the arrangements described all relate to containers glued to guides, panels may also be glued and handled in the same fashion. A panel in a document layout is akin to a meta-container or super-container in which a number of individual containers are arranged to negotiate locally within the panel during the layout process. Using alternate terminology, a glued container may be considered to enclose a number of sub-containers into each of which content is able to be placed upon laying out the page.
Also seen in
The arrangements described above are applicable to the computer and data processing industries and particularly to VDP applications and others requiring automated layout.
The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive. For example, whilst in each of the examples provided the guide is a straight line, such is not essential. All that is required is a reference that may be considered parallel to some structure of the document being formed. A curved line may be used if associated with a container having a complementary curved side. As seen from
Boreham, Ian Robert, Courtney, Allen Peter, McLeish, David Grant
Patent | Priority | Assignee | Title |
10409895, | Oct 17 2017 | Qualtrics, LLC | Optimizing a document based on dynamically updating content |
11449661, | Feb 20 2012 | Wix.com Ltd. | System and method for extended dynamic layout |
11720739, | Feb 20 2012 | Wix.com Ltd. | System and method for extended dynamic layout |
12112120, | Feb 20 2012 | Wix.com Ltd. | System and method for extended dynamic layout |
Patent | Priority | Assignee | Title |
5796401, | Aug 09 1996 | System for designing dynamic layouts adaptable to various display screen sizes and resolutions | |
6380954, | Feb 09 1998 | REFINITIV US ORGANIZATION LLC | Method and system for layout of objects within a perimeter using constrained interactive search |
6826727, | Nov 24 1999 | MARLBOROUGH SOFTWARE DEVELOPMENT HOLDINGS INC | Apparatus, methods, programming for automatically laying out documents |
7093196, | Jun 10 2000 | ORACLE INTERNATIONAL CORPORATION OIC | Method and apparatus for aligning items relatively within an electronic document |
7203902, | Jul 24 2003 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for document composition |
7676741, | Jan 31 2006 | Microsoft Technology Licensing, LLC | Structural context for fixed layout markup documents |
7930632, | Aug 27 2004 | Canon Kabushiki Kaisha | Information processing apparatus, control method therefor, and computer-readable medium displaying a layout result on the basis of adjustment record information stored with respect to a predetermined record |
7984374, | Jul 23 1999 | Adobe Inc | Computer generation of documents using layout elements and content elements |
20050172221, | |||
20050172226, | |||
20050223319, | |||
20060031773, | |||
20060066902, | |||
20060198555, | |||
AU2004203112, | |||
EP1560127, | |||
EP1624381, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 04 2008 | Canon Kabushiki Kaisha | (assignment on the face of the patent) | / | |||
May 28 2008 | BOREHAM, IAN ROBERT | Canon Kabushiki Kaisha | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021087 | /0815 | |
May 28 2008 | COURTNEY, ALLEN PETER | Canon Kabushiki Kaisha | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021087 | /0815 | |
May 28 2008 | MCLEISH, DAVID GRANT | Canon Kabushiki Kaisha | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021087 | /0815 |
Date | Maintenance Fee Events |
Sep 20 2019 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Nov 27 2023 | REM: Maintenance Fee Reminder Mailed. |
May 13 2024 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Apr 05 2019 | 4 years fee payment window open |
Oct 05 2019 | 6 months grace period start (w surcharge) |
Apr 05 2020 | patent expiry (for year 4) |
Apr 05 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 05 2023 | 8 years fee payment window open |
Oct 05 2023 | 6 months grace period start (w surcharge) |
Apr 05 2024 | patent expiry (for year 8) |
Apr 05 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 05 2027 | 12 years fee payment window open |
Oct 05 2027 | 6 months grace period start (w surcharge) |
Apr 05 2028 | patent expiry (for year 12) |
Apr 05 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |