The present invention relates to the high speed printing industry, and more particularly a system and method for flowing variable data into a page description language file in a high speed printing environment.
Application programs, such as word processors, illustrators, and computer-aided design systems are software packages used to create a document (text and graphics) on a computer screen and to simultaneously generate a page description language (“PDL”) specification, which is to be transferred to the printer or to any other type of raster or output device for creating a hard copy or copies of the document. Alternatively, a PDL specification can be generated by a programmer without the assistance of an application program.
The printer executes the PDL specification to generate a bitmap of the document, or a raster-data representation of a document, and eventually transfers the bitmap or raster-data to the physical medium. A typical PDIJ language, such as PostScript (a registered trademark of Adobe Corporation) defines a page of the document as containing a number of data areas, where each data area contains either graphic or alpha-numeric data. Each data area is defined by a “graphic state,” which is a collection of parameters for controlling the representation and appearance of text and graphics. For example, the graphic state can include a set of text attributes such as scale-factor, type-font, etc. In PostScript, an example of a PDL command used to build a graphic state can be: “twenty rotate,” and “/Times-Roman find font 14 scalefont setfont.” Examples of PDL commands used to define the graphic or alpha-numeric data that is displayed in the data area include: 0 0 moveto and (ABC) show. The entire group of PDL commands used to define a document is hereinafter referred to as the “PDL specification.”
In variable data printing each printed document shares a common template and there is at least one area in the template that changes for each printing of the template. Typical PDL languages are not designed for high-speed variable data printing because, with PDL languages and PDL interpreters, even if a single item of data in the document changes, an entirely new PDL specification must be created and interpreted. For example, if one-hundred thousand copies of a mass-mailing advertisement were to printed (i.e., each copy of which is identical except for the mailing address), it is typically necessary to generate a new PDL specification for each copy to printed. Hence, to generate one-hundred thousand advertisements, it would be necessary to generate one-hundred thousand PDTJ specifications, even though each advertisement is virtually the same except for the variable data area. The processing time required to interpret and render one-hundred thousand PDL specifications is enormous, significantly slowing the entire printing system.
Furthermore, typical PDL languages do not include any text or data flowing capabilities. These features are usually implemented by the application program, and when such an application program flows data (such as text) into a PDL document, the calculations to determine where to place the data are completed prior to the generation to the PDL specification. Accordingly, variable data cannot be flowed into a template document without creating a new PDL specification for each document. Accordingly, there is a need for a high-speed printing operation having the ability to merge variable data into a template defined by a PDL specification; and in particular, having the ability to flow variable data into a template path defined by PDL specification in a high-speed printing operation.
It is an object of the present invention to provide a system and method for flowing variable data (such as text data, image data, bar code data and the like) into a path of a template defined by a PDL specification in a high-speed printing operation. It is a further object of the present invention to provide the ability to generate a plurality of merged bitmaps, which are each essentially a copy of a template, except for at least one portion of the template that contains an arbitrary path. In that path, each merged bitmap can contain a different set of variable data merged into it. The template is defined by a page description language, and the page description language only needs to be processed or interpreted once before creating all of the merged bitmaps, thus providing an extremely high-speed variable data printing operation.
The computer implemented method for flowing data into an arbitrary path defined by a page description language specification (“PDL specification”) generally comprises the steps of: processing (interpreting) the PDL specification to produce a template; designating a path defined in the PDL specification as a wrapping path; associating a block of variable data with the wrapping path; and merging variable data, according to the path boundary and according to a predefined flow rule, into a copy of the template.
The method of the present invention is accomplished by executing a control task in conjunction with a PDL interpreter program. The control task generates a template display list based upon the PIDL commands in the PDL specification. The display list includes a plurality of rendering commands, where each rendering command designates a particular data area or object to be rendered, the graphics state to be applied to the data area and the offset address at which the rendered object, if any, in the data area is to be overwritten onto the final bit map. The graphic states for each data area are set forth in the PDL specification, and pertain to the print attributes that describe how particular graphic or alpha-numeric data is to appear on the printed page. These attributes can include the size, font, position, orientation, location, and the like.
The control task, during the PDL interpretation procedure, monitors the data areas defined by the PDIJ specification to watch for variable data paths defined by the PDL code. If the control task identifies a path as being a variable data path, it reserves the graphic-states associated with that variable data path in a cache or memory, and then moves on to the next data area defined in the PDL specification, preferably without allowing the path data to be added to the template display list.
Once the interpreter program completes its interpretation of the PDL specification, the control task saves the template display list in memory without dispatching a bitmap of the template to the printer. Subsequently, a merge task is initiated which accesses a variable data record from a merge file; associates the variable data record to a particular variable data path; creates representations of the variable data, such as rendering commands according to the reserved graphic states pertaining to that particular variable data path, according to the boundary of the particular variable data path and according to a predefined flow rule; and then generates a merged bitmap by processing the template display list and the variable data rendering commands. The final merged bitmap that may then be dispatched to the printer. This merge task is repeated for each variable data record in the merge file associated with that particular variable data path to create a plurality of the merged bitmaps. Thus, the PDL specification of the template need only be interpreted once, saving significant processing time for the variable printing operation, because the reserved graphic states may be utilized over and over again to create the flowed data bitmap for each variable data record contained in the merge file.
How the control task identifies a particular PDL path defined in the PDL specification as being unique, i.e., as being identified as a wrapping path, is an important step in the above process. This is accomplished by providing a text command in the PDL specification that defines one or more characters that are recognized by the control task as being special characters, as opposed to merely being characters that are to be included on the printed page. The control task monitors all text strings defined by the PDL specification for such special characters, and responsive to a detection of the special character in the text string defined by the text command, the control task identifies the path command that has a predetermined relationship with the text command in the PDL specification. This predetermined relationship can be satisfied by the first path command to follow the text command in the PDL specification or by the path command that is “grouped” with the text command in the PDTJ specification.
In the preferred embodiment of the present invention, the characters “<<” and “>>” are used as part of a special text string to define an area as a variable data area. And if that special text string also includes the string wrap then the control task will recognize that the very next path command appearing in the PDL specification will be a unique path, in this case a path for flowing variable text bitmaps into.
As shown in
The job ticket file 12 contains the guidelines for the print job which can include the names and locations of the PDL file(s) 14, the merge file(s) 16, the configuration file(s) 18, etc.; and may also include special instructions pertaining to features such as data wrapping, described below. The PDL file 14 is preferably a PostScript specification created by an application program, such as a word processor, illustrator, or computer-aided design system. The merge file 16 contains platform independent data, such as text data, image data, bar-code data and the like, which is to be merged into a template bitmap defined by the PDL file during the merging task, as will be described in detail below. The configuration file 18 defines the print engines and post processing equipment and other options to be executed.
Initially, the location and name of the job ticket file 12 is specified by the operator using the operator control terminal 20. The printer controller 10 retrieves the job ticket file. 12 and then retrieves the PDL files 14 and merge files 16 that are specified in the job ticket file. Next the controller 10 initiates a control task 22 in conjunction with a page description code interpreter program.
The control task interprets the PDL specification from the PDL file 14 and monitors data areas defined in the PDL specification to watch for areas to become variable data areas defined by the specification. If the control task identifies a data area as being a variable data area, it reserves the graphic states 23 of that variable data area in memory 24 and then moves on to the next data area defined by the PDL specification, usually without allowing any data defined by the variable data area to be added to the template bitmap. Preferably, the control task 22 will also create a font cache (an entire set of character bitmaps generated according to the reserved graphic states) for the reserved graphic states, which will be linked to the reserved graphic states in memory 24. Once the control task completes its processing of the PDL specification, the control task saves the template bitmap in memory 26.
The control task 22 may also create a template display list 25 of static data defined by the PDL file 14. The display list 25 will include a plurality of rendering commands, where each rendering command designates a particular static data area or object to be rendered, the graphics state to be applied to the static data area and the offset address at which the rendered object, if any, in the static data area is to be overwritten onto the final bit map. As mentioned above, the graphic states for each data area are set forth in the PDL specification, and pertain to the print attributes that describe how particular graphic or alpha-numeric data is to appear on the printed page. Once the control task completes its processing of the PDL specification, the control task may save the template display list 25 in memory 26. If the PDL-file 14 does not include code for any static data, the control task may generate an empty template display list 25 or may decide not to create a template display list at all.
Next, a merge task 28, having access to the variable data records 17 from the merge file 16, is executed to apply the reserved graphics states 23 and associated font cache, to the variable data records 17, creating rendering commands for that variable data record as defined by the graphic states. The merge task 28 retrieves a copy 25′ of the template display list 25 from the memory 26 and merges the variable data rendering commands with the template display list to create a merged display list 30. Finally, the controller 10 performs a rendering task 32 to render the merged display list 30 into a plurality of bitmap bands 34 for dispatching to at least one print engine 36.
A method for performing the above control task and merge task is described in U.S. patent application Ser. No. 08/373,582 filed Jan. 17; 1995 and entitled “Method of Utilizing Variable Data Fields with a Page Description Language,” the disclosure of which is incorporated herein by reference. A method and a system architecture for performing the above merging, banding and dispatching operations are respectively described in U.S. Pat. No. 5,594,860 and U.S. patent application Ser. No. 08/558,007, filed Nov. 13, 1995, and entitled “System Architecture for Processing and Transporting a Pagemap or Bitmap Data to a Raster Print Engine,” the disclosures of which are also incorporated herein by reference. A preferred embodiment of the present invention is illustrated by way of example in
As illustrated in
As illustrated in
As discussed above, and referring again to
In the preferred embodiment, the control task 22 monitors for variable data areas defined by the PDL specification by monitoring for special characters in the text strings defined by text commands in the PDL specification. As shown in
Preferably, the predetermined relationship is satisfied by the first path command to follow the text command for the attribute string in the PDL specification. This can be accomplished by using the application program to sequentially type the attribute string 58 and then draw the path 56, such that the path command will be the first path command to follow the text command in the PDL specification created by the application program. Alternatively the predetermined relationship can be satisfied by the path command that is “grouped” with the text command for the attribute string in the PDL specification. This can be accomplished by using a “GROUP” tool as provided by many application programs to group the attribute string 58 and path 56 together. It will be apparent to one of ordinary skill in the art that there are many similar predetermined relationships available between the text command for the attribute string and the path command for the wrapping path that can be established in the PDL specification, all of which fall within the scope of the present invention.
Thus, during the execution of the PDL interpreter program, the control task 22 will match the wrap attribute command string 62 and path identifier 64 with the group header 44 and descriptive name of the path 42 defined in the job ticket file 12. Once the attribute string 58 is identified as defining a variable data path by the control task 22, the control task will save the graphic states 23 of the attribute string 58 in memory. The control task may also create a font cache according to the graphic states 23, and store the font cache along with the graphic states in memory 24. The control task will also save the field name 60 along with the graphic states 23 in memory so that the particular graphic states can be matched to the blocks of text data in the merge file 16 under the matching field name 52, as will be described below. The merge task 28 will apply these graphic states 23 and associated font cache to the variable data 54 prior to merging and flowing the variable data into the path 56.
Once the control task 22 has identified the path as being a variable data path, and has reserved the graphic states 23 of the attribute string 58 associated with the path in memory 24, the control task 22 advances to the next data area in the PDL specification, preferably without allowing the attribute string data or the path to be added to the template display list 25 stored in memory 26. And once the PDL interpreter program has completed interpreting the PDL specification, the control task 22 then passes authority to the merge task 28.
The merge task 28 first accesses a set of the saved graphic states 23 and identifies the field name 60 associated with these graphic states. The merge task 28 then accesses the merge file 16 and searches the merge file for a field name 52 matching the field name 60 associated with the graphic states. The merge task then accesses a variable data block 54 associated with the field name 52 and then generates rendering commands for the variable data block according to the graphic states 23, the predefined flow rule 48 and the boundary of the path 56. The predefined flow rule 48, may or may not be defined by the job ticket file 12. Accordingly, when the rendering command is executed the bit map data defined by the rendering command will flow within the path 56 according to a predefined flow rule.
As shown in
As indicated in step 106, the stored graphic states 23 (e.g., font-type and point size) are applied to a variable data block 54 to be merged into the boundary 65′ so as to calculate the dimensions of a plurality of word bitmaps, the word bitmaps being defined by a collection of characters separated from the rest of the data by-white space characters (e.g., a space, tab, new line, etc.). The dimensions of paragraphs can be calculated by defining a paragraph as a collection of word bitmaps separated from other paragraphs by “new line” characters. Assuming that the text flow direction will be from top to bottom and left to right, as indicated in step 108 and as illustrated in
As indicated in step 110 and illustrated in
Once two adjacent intersection points 74 are determined to be candidates for receiving bitmap representations of the text data, as indicated in step 116 and illustrated in
As indicated in step 118, the rendering commands to create the bitmap representations of a word of the text data as merged into the text placement area are created and added to the display list 25, depending upon whether the calculated width of the bitmap is equal to or less than the available width calculated to remain in the text placement area. The rendering commands will define the proper orientation of the bitmap representation of the word rotated back into the original orientation of the attribute string 58.
As illustrated in
As indicated in step 120 and illustrated in
Preferably, in the above step 118, the height of the rectangular insertion area is determined by the dimensions calculated for the first word bitmap. And if, for whatever reason, a next word bitmap is calculated to be higher than the first or previous word bitmap, and higher than all other word bitmaps inserted thus far into a particular text placement area, then the entire rectangular insertion area is thrown out, and steps 116 and 118 are repeated again for the higher rectangular insertion area generated according to this higher word bitmap. As discussed above, a number fill rules are available for flowing the word bitmaps into the boundary. Accordingly, the merge task can mark the path intersections 74 as “positive,” “negative” or “neutral” based upon whether the path enters and leaves from the top or the bottom of the insertion area, or whether it enters and exits the insertion area from the same direction. All of the available fill rules will be apparent to one of ordinary skill in the art, and are thus within the scope of the present invention.
As discussed above, text flowing into the boundary 65′ will continue until it is determined that there are no more word bitmaps to flow into the boundary or until it is determined that there is no more text areas available to flow the word bitmaps into. In the case of the latter, it is within the scope of the invention to define a path as an “overflow” path for continuing the flowing of the text therein, until this overflow path runs out of room. This overflowing process can continue until once again it is determined that there are no more text areas to flow text into. Text can also flowed into more than one path at a time.
For illustration, as shown in
Having described the invention in detail and by reference to the drawings, it will be apparent to one of ordinary skill in the art that variations and modifications are possible without departing from the scope of the invention as defined on the following claims.
The following appendix provides a preferred compilation of text wrapping commands and parameter definitions that can be specified in the job ticket file 12. Each entry provides the particular command header, the syntax for the command, any relevant remarks for the use of the command, examples, etc. As will be apparent to one of ordinary skill in the art, it is within the scope of the present invention to include the means to provide for any of the attributes, or similar attributes, as defined in the Appendix.
COMMAND HEADER=[Wrap]
A group that provides a list of tags which you create to describe the text flowing (wrap) path(s) to be used in the print job. Each tag will become a user-defined group of additional information about the wrap path.
Remarks Optional. Each tag that appears under this [Wrap] group will optionally become a new group name in a succeeding section of the Job Ticket.
Note: Fields on a template that you wish to be flowed into a particular path will use a field attribute of the format:
The <name> argument of the wrap attribute must match a path tag listed in the [Wrap] group.
A user-defined tag name for a group that provides information about the wrap path and corresponds to the descriptive tag that you create under the initial [Wrap] group.
Remarks A separate [<Path>] group defines path information for each descriptive tag listed under the initial [Wrap] group.
If a [<Path Tag>] group is not defined for a path listed under the [Wrap] group, that path will receive the default values for all of the [<Path Tag>] elements.
Take the descriptive tag under the initial [Wrap] group and write it here as a group name within the brackets [ ]
An element that determines the adjustments made to each baseline of text drawn within the path.
By default, the process will space successive text lines at 120% of the font size. For example, a 12-point font will have the next baseline set at 14.4 points (120%×12) from the previous baseline.
The Baseline Adjust element defines an offset from this default value.
A positive Baseline Adjust value increases the space between each baseline of text essentially, moving the next line of text down). A negative value decreases the space between each baseline of text (essentially, moving the next line of text-up).
The default value for Baseline Adjust is 0.
Optional. Enter the abbreviation to identify the unit type if the unit type for Baseline Adjust is different from the default unit type defined in the Units element. Possible values are:
An element that specifies the distance from the bottom of the path at which to stop flowing text.
NOTE: A non-zero value for the BottomMargin element overrides (for the bottom margin only) the value set in the Margins elements.—
For example, if Margins=1 in and BottomMargin=2 in, the path will have 0.1-inch margins on the top, left, and right sides but will have a 2-inch margin on the bottom side.
The default value for Bottom Margin is 0.
Optional. Enter the abbreviation to identify the unit type if the unit type for Bottom Margin is different from the default unit type defined in the Units element. Possible values are:
An element that specifies if two adjacent ON areas separated by a path segment are treated as one area when determining text flow.
This element affects the way in which text is flowed in adjacent ON areas. It applies only to paths defined with FillRule=WindingRule.
If ClobberPath is set to True, text is flowed across the two adjacent ON areas as if they were one area. In this case, only the “outer” margins of the combined areas would be recognized. Text flow would be continuous across the “inner” margins where the path segment intersects the adjacent areas.
If ClobberPath is set to False, text is flowed separately into each Area.
The default value of ClobberPath is True.
False.
An element that determines if the wrap path is actually drawn on the template.
An element that determines if the next paragraph will always start at a distance of the ParagraphAdjust value from any previous paragraphs that were set.
If the text flowed into your path contains blank paragraphs, this element determines how the blank paragraphs are to be handled.
If you want your next paragraph to start at a distance of the ParagraphAdjust value from your previous text paragraph (thereby, “skipping” any blank paragraphs and permitting text to continue to flow), set the EnforceParagraphSpacing value to True.
If you want the blank paragraphs to be allotted the appropriate space defined in ParagraphAdjust, set the EnforceParagraphSpacing value to False.
The default value for EnforceParagraphSpacing is False.
Explanation {True/False}
If the next non-blank paragraph should start at a distance of the ParagraphAdjust value from any previous paragraphs that were set, type True
If blank paragraphs are to be allocated their appropriate paragraph space, type False.
An element that provides the rules used to determine which areas of the path should have text flowed into them and which areas should be blank.
Text is flowed into an area enclosed by (“inside”) the current path. If a path is simple, it is clear which areas are inside the path. However, if a path is complex (for example, intersecting itself or having one subpath that encloses another), it is not as apparent which areas are inside. One of two fill rules will be used to determine which areas lie inside a path.
The FillRule element defines if the non-zero winding rule (WindingRule) or the even-odd rule (EvenOddRule) will be used for the current path.
The non-zero winding rule determines whether a given area along the proposed flow line is inside the path (and thus receives text) by examining the places where a path segment crosses the flow line. Path segments that cross (intersect) the flow line from top to bottom are given a direction of 1. Path segments that cross (intersect) the flow line from bottom to top are given a direction of −1. Path segments that do not fully cross the flow line (for example, entering and exiting the top of the flow line) are given a direction of zero.
An on-going sum of all crossings is calculated from left to right. If the sum of all crossings to that point is zero, the area (immediately to the right) is outside the path. If the sum is non-zero, the area is inside the path and will receive text.
The even-odd rule determines whether a given area long the proposed flow line is inside the path (and thus receives text) by counting the number of times a path segment crosses the flow line. Path segments that fully cross (intersect) the flow line are given a score of 1. Path segments that do not fully cross the flow line are given a score of zero.
An on-going sum of all crossings is calculated from left to right. If the sum of all crossings to that point is even, the area (immediately to the right) is outside the path. If the sum is odd, the area is inside the path and will receive text.
The default value for FillRule is WindingRule.
If the winding rule will determine which areas lie inside a path, type WindingRule.
If the even-odd rule will determine which areas lie inside a path, type EvenOddRule.
An element that determines if the Fit justification rule is applied to the last line of every paragraph.
The FitLastLine element applies only to paths defined with Justify=Fit.
FitLastLine is set to True, the text on the last line will be forced to fit flush on the left and the right. Since the last line of a paragraph may often contain less text than the other lines in a paragraph, this justification will often result in more white space between text on the last line.
The default value for FitLastLine is False.
If the last line of every paragraph should be aligned at both the left side and the right side of the path, type True.
If the last line of every paragraph should not be forced to fit flush left and flush right, type False.
An element that specifies the type of justification (horizontal alignment) to be applied to each line of text drawn in the path.
Enter the type of justification (horizontal alignment) to be applied to each line of text drawn in the path. Possible values are:
An element that specifies the distance from the left side of the path at which to start flowing text.
NOTE: A non-zero value for the LeftMargin element overrides (for the left margin only) the value set in the Margins elements.
For example, if Margins=1 in and LeftMargin=2 in, the path will have 1-inch margins on the bottom, top, and right sides but will have a 2-inch margin on the left side.
A default value for LeftMargin is 0.
Optional. Enter the abbreviation to identify the unit type if the unit type for LeftMargin is different from the default unit type defined in the Units element. Possible values are:
PARAMETER=Margins
An element that specifies the same text margins for all four sides of the path (top, bottom, left, and right).
Note: The value for the Margins element will be overridden on an individual margin basis by any non-zero value defined for the other specific margin attributes (BottomMargin, LeftMargin, RightMargin, and TopMargin).
For example, if Margins=1 in and TopMargin=2 in, the path will have 1-inch margins on the bottom, left, and right sides but will have a 2-inch margin on the top.
The default value for Margins is 0.
Optional. Enter the abbreviation to identify the unit type if the unit type for Margins is different from the default unit type defined in the Units e-element. Possible values are:
An element that specifies the minimum number of lines of a paragraph to be set before the paragraph is allowed to be split between path areas.
If the minimum number of lines of a paragraph defined here cannot be set consecutively in a path area, the entire paragraph will be moved down to the next scanline that allows the specified number of lines to be set consecutively.
The default value for MinParagraphLines is
Enter the integer representing the minimum number of lines of a paragraph to be set before splitting between path areas is permitted.
An element that determines how many postscript paths on the template are concatenated and treated as one path.
This element is used to combine multiple paths drawn on the template, and to treat them as a single path. The path to be combined will be determined—by the order in which they were drawn.
The default value for NumberOfPaths is 1.
Enter the integer representing the number of paths to be combined.
An element that specifies the name (tag) of the wrap path that will receive overflow text from the current wrap path being described.
This element defines the use of an overflow feature. When overflow is available, if the current path has no more space into which text can flow, the text will continue to flow into the path named in this element.
NOTE: If the Overflow element references a wrap path that is not named under the [Wrap] group, the print job will be aborted.
If the Overflow element is not defined, the system will assume that no overflow will occur for the current path being described. Therefore, text will flow into the current path until it is filled. No overflow text will be printed.
Enter the descriptive tag of the path into which overflow text from the current path will flow. This value should correspond to a descriptive tag that you created under the initial [Wrap] group.
An element that determines the distance to adjust the baseline for the start of the next paragraph within the path.
The ParagraphAdjust value overrides the Baseline Adjust value only for the first baseline of text in each paragraph.
A position ParagraphAdjust value increases the vertical space between the last baseline of text in each paragraph and the start of the next paragraph (essentially, moving the start of the next paragraph down). A negative value decreases the vertical space between the last baseline of text in each paragraph and the start of the next paragraph (essentially, moving the start of the paragraph up).
The default value for ParagraphAdjust is 0.
Optional. Enter the abbreviation to identify the unit type if the unit type for ParagraphAdjust is different from the default unit type defined in the Units element. Possible values are:
An element that specifies the indentation from the left margin for the first line of every paragraph in the path.
The default value for ParagraphIndent is 0.
Optional. Enter the abbreviation to identify the unit type if the unit type for ParagraphIndent is different from the default unit type defined in the Units element. Possible values are:
An element that determines if the text will be flowed from bottom to top in the current path.
The default value for ReverseFlow if False.
An element that determines if the ON/OFF designations for areas in the path will be reversed.
Syntax ReversePath={True/False}
The ReversePath element applies only to paths defined with FillRule=EvenOddRule.
If ReversePath is set for True, the areas originally marked as ON based on the EvenOddPath calculation will be set to OFF and the areas originally marked as OFF based on the EvenOddRule calculation will be set to ON.
If ReversePath is set to False, the EvenOddRule calculations will be retained.
The default value for ReversePath is False.
If the ON/OFF designations for areas in the path will be reversed, type True.
If the ON/OFF designations for areas in the path will be retained, type False.
An element that specifies the distance from the side of the path at which to stop flowing test.
NOTE: A non-zero value for the RightMargin element overrides (for the right margin only) the value set in the Margins element.
For example, if Margins=1 in and RightMargin=2 in, the path will have 1-inch margins on the bottom, top, and left sides but will have a 2-inch margin on the right side.
Optional. Enter the abbreviation to identify the unit type if the unit type for RightMargin is different from the default unit type defined in the Units element. Possible values are:
An element that specifies the distance from the top of the path at which to start flowing text.
NOTE: A non-zero value for the TopMargin element overrides (for the top margin only) the value set in the Margins element.
For example, if Margins=1 in and TopMargin=2 in, the path will have 1-inch margins on the bottom, left, and right sides but will have a 2-inch margin on the top side.
The default value for TopMargin is 0.
Optional. Enter the abbreviation to identify the unit type if the unit type for TopMargin is different from the default unit type defined in the Units element. Possible values are:
This application is a continuation of U.S. patent application Ser. No. 10/629,338, filed Jul. 29, 2003, now abandoned, which was a continuation of U.S. patent application Ser. No. 10/233,263, filed on Aug. 30, 2002, now U.S. Pat. No. 6,599,325, which was a continuation of U.S. patent application Ser. No. 09/818,665 filed on Mar. 27, 2001, now U.S. Pat. No. 6,487,568, which was a continuation-in-part of U.S. patent application Ser. No. 08/897,467, filed on Jul. 18, 1997, now U.S. Pat. No. 6,209,010.
Number | Name | Date | Kind |
---|---|---|---|
3576367 | Sable | Apr 1971 | A |
3744899 | Sable | Jul 1973 | A |
4085445 | Blevins et al. | Apr 1978 | A |
4203154 | Lampson et al. | May 1980 | A |
4250976 | Mochida | Feb 1981 | A |
4268164 | Yajima et al. | May 1981 | A |
4300206 | Belleson et al. | Nov 1981 | A |
4314357 | Kimura et al. | Feb 1982 | A |
4322157 | Miura et al. | Mar 1982 | A |
4417322 | Berry et al. | Nov 1983 | A |
4441829 | Hebert, Jr. et al. | Apr 1984 | A |
4445795 | Levine et al. | May 1984 | A |
4454576 | McInroy et al. | Jun 1984 | A |
4460975 | Torkelsen et al. | Jul 1984 | A |
4470129 | Disbrow et al. | Sep 1984 | A |
4493049 | Donohue et al. | Jan 1985 | A |
4509826 | Araghi | Apr 1985 | A |
4539653 | Bartlett et al. | Sep 1985 | A |
4553860 | Imaizumi et al. | Nov 1985 | A |
4651278 | Herzog et al. | Mar 1987 | A |
4677551 | Suganuma | Jun 1987 | A |
4718784 | Drisko | Jan 1988 | A |
4723209 | Hernandez et al. | Feb 1988 | A |
4723210 | Barker et al. | Feb 1988 | A |
4723211 | Barker et al. | Feb 1988 | A |
4739477 | Barker et al. | Apr 1988 | A |
4745415 | Konda et al. | May 1988 | A |
4745560 | Decker et al. | May 1988 | A |
4770972 | Nelson et al. | Sep 1988 | A |
4771340 | Notermans | Sep 1988 | A |
4809220 | Carlson et al. | Feb 1989 | A |
4825251 | Nelson et al. | Apr 1989 | A |
4826333 | Tanaka | May 1989 | A |
4839814 | Steidel | Jun 1989 | A |
4857955 | Crandall | Aug 1989 | A |
4862386 | Axelrod et al. | Aug 1989 | A |
4864516 | Gaither et al. | Sep 1989 | A |
4870611 | Martin et al. | Sep 1989 | A |
4903067 | Murayama et al. | Feb 1990 | A |
4903229 | Schmidt et al. | Feb 1990 | A |
4912491 | Hoshino et al. | Mar 1990 | A |
4933880 | Borgendale et al. | Jun 1990 | A |
4937664 | Chiku et al. | Jun 1990 | A |
4939674 | Price et al. | Jul 1990 | A |
4944614 | Tanaka | Jul 1990 | A |
4953105 | Hirata et al. | Aug 1990 | A |
4959769 | Cooper et al. | Sep 1990 | A |
4963459 | Beery et al. | Oct 1990 | A |
4963899 | Resch, III | Oct 1990 | A |
4965597 | Ohigashi et al. | Oct 1990 | A |
4965748 | Chang et al. | Oct 1990 | A |
4969093 | Barker et al. | Nov 1990 | A |
4992956 | Kaku et al. | Feb 1991 | A |
4994968 | Kato et al. | Feb 1991 | A |
4996662 | Cooper et al. | Feb 1991 | A |
5001653 | Buchanan et al. | Mar 1991 | A |
5021975 | Yamanashi | Jun 1991 | A |
5025396 | Parks et al. | Jun 1991 | A |
5029327 | Nureki | Jul 1991 | A |
5033009 | Dubnoff | Jul 1991 | A |
5043749 | Punater et al. | Aug 1991 | A |
5050101 | Kiuchi et al. | Sep 1991 | A |
5060980 | Johnson et al. | Oct 1991 | A |
5067024 | Anzai | Nov 1991 | A |
5077795 | Rourke et al. | Dec 1991 | A |
5078748 | Akram et al. | Jan 1992 | A |
5084831 | Morikawa et al. | Jan 1992 | A |
5103490 | McMillin | Apr 1992 | A |
5104245 | Oguri et al. | Apr 1992 | A |
5107423 | Sasaki et al. | Apr 1992 | A |
5134669 | Keogh et al. | Jul 1992 | A |
5136316 | Punater et al. | Aug 1992 | A |
5139003 | Ohhashi et al. | Aug 1992 | A |
5142667 | Dimperio et al. | Aug 1992 | A |
5143362 | Doane et al. | Sep 1992 | A |
5148366 | Buchanan et al. | Sep 1992 | A |
5150455 | Morikawa et al. | Sep 1992 | A |
5157765 | Birk et al. | Oct 1992 | A |
5157767 | Nihei | Oct 1992 | A |
5157773 | Matsumoto et al. | Oct 1992 | A |
5173853 | Kelly et al. | Dec 1992 | A |
5181162 | Smith et al. | Jan 1993 | A |
5191429 | Rourke | Mar 1993 | A |
5202206 | Tam | Apr 1993 | A |
5204916 | Hamilton, Jr. et al. | Apr 1993 | A |
5204946 | Shimamura | Apr 1993 | A |
5206951 | Khoyi et al. | Apr 1993 | A |
5208906 | Morgan | May 1993 | A |
5218539 | Elphick et al. | Jun 1993 | A |
5222211 | Mueller et al. | Jun 1993 | A |
5222235 | Hintz et al. | Jun 1993 | A |
5222236 | Potash et al. | Jun 1993 | A |
5226161 | Khoyi et al. | Jul 1993 | A |
5231698 | Forcier | Jul 1993 | A |
5235654 | Anderson et al. | Aug 1993 | A |
5237655 | Statt et al. | Aug 1993 | A |
5239625 | Bogart et al. | Aug 1993 | A |
5241464 | Greulich et al. | Aug 1993 | A |
5243518 | Holt et al. | Sep 1993 | A |
5257097 | Pineau et al. | Oct 1993 | A |
5261047 | Rivshin | Nov 1993 | A |
5267155 | Buchanan et al. | Nov 1993 | A |
5276799 | Rivshin | Jan 1994 | A |
5280574 | Mizuta et al. | Jan 1994 | A |
5282269 | Willems et al. | Jan 1994 | A |
5287128 | Doane et al. | Feb 1994 | A |
5287444 | Enescu et al. | Feb 1994 | A |
5290109 | Midorikawa | Mar 1994 | A |
5291243 | Heckman et al. | Mar 1994 | A |
5297217 | Hamilton, Jr. et al. | Mar 1994 | A |
5303341 | Rivshin | Apr 1994 | A |
5303379 | Khoyi et al. | Apr 1994 | A |
5307266 | Hayashi et al. | Apr 1994 | A |
5307458 | Freiburg et al. | Apr 1994 | A |
5309558 | Rourke et al. | May 1994 | A |
5315693 | Hirosawa | May 1994 | A |
5317646 | Sang, Jr. et al. | May 1994 | A |
5319748 | Motoyama | Jun 1994 | A |
5323217 | Christy et al. | Jun 1994 | A |
5323312 | Saito et al. | Jun 1994 | A |
5325484 | Motoyama | Jun 1994 | A |
5327341 | Whalen et al. | Jul 1994 | A |
5328092 | File | Jul 1994 | A |
5329616 | Silverbrook | Jul 1994 | A |
5339240 | Beaverson | Aug 1994 | A |
5349647 | Freiburg et al. | Sep 1994 | A |
5353388 | Motoyama | Oct 1994 | A |
5355493 | Silberbauer et al. | Oct 1994 | A |
5360277 | Matsubara et al. | Nov 1994 | A |
5367673 | Goldsmith et al. | Nov 1994 | A |
5368334 | Christy et al. | Nov 1994 | A |
5375204 | Motoyama et al. | Dec 1994 | A |
5379368 | Imai et al. | Jan 1995 | A |
5379373 | Hayashi et al. | Jan 1995 | A |
5384886 | Rourke | Jan 1995 | A |
5384901 | Glassner et al. | Jan 1995 | A |
5404294 | Karnik | Apr 1995 | A |
5412566 | Sawa | May 1995 | A |
5416849 | Huang | May 1995 | A |
5416896 | Motoyama | May 1995 | A |
5420696 | Wegeng et al. | May 1995 | A |
5420974 | Morris et al. | May 1995 | A |
5421015 | Khoyi et al. | May 1995 | A |
5422992 | Motoyama et al. | Jun 1995 | A |
5425140 | Bloomfield et al. | Jun 1995 | A |
5436627 | Motoyama et al. | Jul 1995 | A |
5437038 | Silberbauer et al. | Jul 1995 | A |
5438650 | Motoyama et al. | Aug 1995 | A |
5440745 | Platte et al. | Aug 1995 | A |
5446837 | Motoyama et al. | Aug 1995 | A |
5446842 | Schaeffer et al. | Aug 1995 | A |
5448685 | Ogura et al. | Sep 1995 | A |
5448691 | Motoyama | Sep 1995 | A |
5450537 | Hirai et al. | Sep 1995 | A |
5450541 | Rourke et al. | Sep 1995 | A |
5451111 | Matsuhisa | Sep 1995 | A |
5452094 | Ebner et al. | Sep 1995 | A |
5455599 | Cabral et al. | Oct 1995 | A |
5455945 | VanderDrift | Oct 1995 | A |
5458284 | Haan et al. | Oct 1995 | A |
5459819 | Watkins et al. | Oct 1995 | A |
5459826 | Archibald et al. | Oct 1995 | A |
5465165 | Tanio et al. | Nov 1995 | A |
5467448 | Hilton et al. | Nov 1995 | A |
5483623 | Nagashima | Jan 1996 | A |
5483624 | Christopher et al. | Jan 1996 | A |
5483629 | Motoyama et al. | Jan 1996 | A |
5487165 | Tsay et al. | Jan 1996 | A |
5490243 | Millman et al. | Feb 1996 | A |
5493634 | Bonk et al. | Feb 1996 | A |
5495565 | Millard et al. | Feb 1996 | A |
5499329 | Motoyama et al. | Mar 1996 | A |
5500928 | Cook et al. | Mar 1996 | A |
5502796 | Takahashi | Mar 1996 | A |
5504843 | Catapano et al. | Apr 1996 | A |
5504891 | Motoyama et al. | Apr 1996 | A |
5506697 | Li et al. | Apr 1996 | A |
5506985 | Motoyama et al. | Apr 1996 | A |
5521710 | Strossman et al. | May 1996 | A |
5532100 | Christy et al. | Jul 1996 | A |
5535318 | Motoyama et al. | Jul 1996 | A |
5539529 | Merchant | Jul 1996 | A |
5542052 | Deutsch et al. | Jul 1996 | A |
5544287 | Roth | Aug 1996 | A |
5546577 | Marlin et al. | Aug 1996 | A |
5548687 | Motoyama | Aug 1996 | A |
5559933 | Boswell | Sep 1996 | A |
5563987 | Scott | Oct 1996 | A |
5563998 | Yaksich et al. | Oct 1996 | A |
5563999 | Yaksich et al. | Oct 1996 | A |
5587800 | Miyazaki | Dec 1996 | A |
5592683 | Chen et al. | Jan 1997 | A |
5594860 | Gauthier | Jan 1997 | A |
5600768 | Andresen | Feb 1997 | A |
5611024 | Campbell et al. | Mar 1997 | A |
5611035 | Hall | Mar 1997 | A |
5615316 | Imai et al. | Mar 1997 | A |
5621020 | Khatib et al. | Apr 1997 | A |
5634091 | Sands et al. | May 1997 | A |
5640559 | Silberbauer et al. | Jun 1997 | A |
5640577 | Scharmer | Jun 1997 | A |
5642435 | Loris | Jun 1997 | A |
5668897 | Stolfo | Sep 1997 | A |
5671345 | Lhotak | Sep 1997 | A |
5675788 | Husick et al. | Oct 1997 | A |
5680615 | Marlin et al. | Oct 1997 | A |
5689625 | Austin et al. | Nov 1997 | A |
5706365 | Rangarajan et al. | Jan 1998 | A |
5717840 | Pardo | Feb 1998 | A |
5727220 | Hohensee et al. | Mar 1998 | A |
5729665 | Gauthier | Mar 1998 | A |
5729674 | Rosewarne et al. | Mar 1998 | A |
5734915 | Roewer | Mar 1998 | A |
5740338 | Gauthier et al. | Apr 1998 | A |
5745910 | Piersol et al. | Apr 1998 | A |
5754750 | Butterfield et al. | May 1998 | A |
5758074 | Marlin et al. | May 1998 | A |
5760914 | Gauthier et al. | Jun 1998 | A |
5765006 | Motoyama | Jun 1998 | A |
5765874 | Chanenson et al. | Jun 1998 | A |
5768488 | Stone et al. | Jun 1998 | A |
5778377 | Marlin et al. | Jul 1998 | A |
5781711 | Austin et al. | Jul 1998 | A |
5793946 | Gauthier et al. | Aug 1998 | A |
5796411 | Cyman et al. | Aug 1998 | A |
5796930 | Gauthier et al. | Aug 1998 | A |
5801716 | Silverbrook | Sep 1998 | A |
5832530 | Paknad et al. | Nov 1998 | A |
5833375 | Gauthier et al. | Nov 1998 | A |
5841420 | Kaply et al. | Nov 1998 | A |
5852673 | Young | Dec 1998 | A |
5866286 | Christy et al. | Feb 1999 | A |
5877865 | Fukuta | Mar 1999 | A |
5880742 | Rao et al. | Mar 1999 | A |
5895455 | Bellinger et al. | Apr 1999 | A |
5896462 | Stern | Apr 1999 | A |
5900003 | Ben Dror | May 1999 | A |
5915258 | Toyokura | Jun 1999 | A |
5920685 | Romano et al. | Jul 1999 | A |
5926185 | Vyncke et al. | Jul 1999 | A |
5937153 | Gauthier | Aug 1999 | A |
5946461 | Landry et al. | Aug 1999 | A |
5949438 | Cyman et al. | Sep 1999 | A |
5953007 | Center et al. | Sep 1999 | A |
5960164 | Dorfman et al. | Sep 1999 | A |
5963968 | Warmus et al. | Oct 1999 | A |
5982994 | Mori et al. | Nov 1999 | A |
5983243 | Heiney et al. | Nov 1999 | A |
5987461 | Dreyer et al. | Nov 1999 | A |
6006242 | Poole et al. | Dec 1999 | A |
6006281 | Edmunds | Dec 1999 | A |
6009442 | Chen et al. | Dec 1999 | A |
6016380 | Norton | Jan 2000 | A |
6018774 | Mayle et al. | Jan 2000 | A |
6020894 | Silverbrook | Feb 2000 | A |
6027195 | Gauthier et al. | Feb 2000 | A |
6049390 | Notredame et al. | Apr 2000 | A |
6064397 | Herregods et al. | May 2000 | A |
6078403 | Palmer | Jun 2000 | A |
6078406 | Nickerson | Jun 2000 | A |
6145946 | Gauthier et al. | Nov 2000 | A |
6146027 | Orton et al. | Nov 2000 | A |
6209010 | Gauthier et al. | Mar 2001 | B1 |
6236463 | Cyman et al. | May 2001 | B1 |
6243172 | Gauthier et al. | Jun 2001 | B1 |
6290406 | Gauthier et al. | Sep 2001 | B1 |
6292267 | Mori et al. | Sep 2001 | B1 |
6310695 | Gauthier et al. | Oct 2001 | B1 |
6326983 | Venable et al. | Dec 2001 | B1 |
6327599 | Warmus et al. | Dec 2001 | B1 |
6330073 | Sciatto | Dec 2001 | B1 |
6332149 | Warmus et al. | Dec 2001 | B1 |
6381028 | Gauthier | Apr 2002 | B1 |
6437875 | Unno | Aug 2002 | B1 |
6446100 | Warmus et al. | Sep 2002 | B1 |
6459498 | Miyake et al. | Oct 2002 | B2 |
6465165 | Landry-Coltrain et al. | Oct 2002 | B2 |
6487568 | Gauthier et al. | Nov 2002 | B1 |
6493106 | Gauthier et al. | Dec 2002 | B1 |
6505980 | Allday | Jan 2003 | B1 |
6557017 | Venable | Apr 2003 | B1 |
6597467 | Miyake et al. | Jul 2003 | B2 |
6599325 | Gauthier et al. | Jul 2003 | B2 |
6684188 | Mitchell et al. | Jan 2004 | B1 |
6687016 | Gauthier | Feb 2004 | B2 |
6707572 | Walker et al. | Mar 2004 | B1 |
6771387 | Gauthier | Aug 2004 | B2 |
20020089681 | Gauthier | Jul 2002 | A1 |
20020122205 | Gauthier | Sep 2002 | A1 |
20020149792 | Gauthier et al. | Oct 2002 | A1 |
20030050934 | Gauthier et al. | Mar 2003 | A1 |
20040130752 | Gauthier | Jul 2004 | A1 |
20040141197 | Gauthier | Jul 2004 | A1 |
20050076001 | Gauthier et al. | Apr 2005 | A1 |
20050185212 | Gauthier | Aug 2005 | A1 |
20050286065 | Gauthier et al. | Dec 2005 | A1 |
Number | Date | Country |
---|---|---|
2210405 | Jul 1996 | CA |
2207840 | Dec 1997 | CA |
2215094 | Apr 1998 | CA |
4313958 | Nov 1993 | DE |
4313959 | Nov 1993 | DE |
4316282 | Nov 1994 | DE |
4313958 | Aug 1998 | DE |
4313959 | Aug 1998 | DE |
0075732 | Apr 1983 | EP |
0131966 | Jan 1985 | EP |
0075732 | Aug 1987 | EP |
0131966 | Mar 1990 | EP |
0394168 | Oct 1990 | EP |
0475601 | Mar 1992 | EP |
0478335 | Apr 1992 | EP |
0527097 | Feb 1993 | EP |
0538059 | Apr 1993 | EP |
0539135 | Apr 1993 | EP |
0539135 | Jul 1993 | EP |
0594370 | Apr 1994 | EP |
0614156 | Sep 1994 | EP |
0527097 | Mar 1995 | EP |
0703524 | Mar 1996 | EP |
0703524 | Jan 1997 | EP |
0394168 | Jun 1997 | EP |
0475601 | Oct 1997 | EP |
0539135 | Dec 1997 | EP |
0837401 | Apr 1998 | EP |
0538059 | Apr 1999 | EP |
0594370 | Jan 2000 | EP |
1011981 | Jun 2000 | EP |
1132809 | Sep 2001 | EP |
0837401 | Feb 2003 | EP |
1132809 | Jan 2004 | EP |
2220511 | Jan 1990 | GB |
56157369 | Dec 1981 | JP |
58108045 | Jun 1983 | JP |
58224755 | Dec 1983 | JP |
59068244 | Apr 1984 | JP |
59068277 | Apr 1984 | JP |
60073869 | Apr 1985 | JP |
60145865 | Aug 1985 | JP |
61018802 | Jan 1986 | JP |
61118775 | Jun 1986 | JP |
61130067 | Jun 1986 | JP |
61179463 | Aug 1986 | JP |
61223935 | Oct 1986 | JP |
61254369 | Nov 1986 | JP |
62065126 | Mar 1987 | JP |
62207664 | Sep 1987 | JP |
62261467 | Nov 1987 | JP |
63039085 | Feb 1988 | JP |
63108428 | May 1988 | JP |
63271275 | Nov 1988 | JP |
63300259 | Dec 1988 | JP |
63300260 | Dec 1988 | JP |
63300263 | Dec 1988 | JP |
1133051 | May 1989 | JP |
1141746 | Jun 1989 | JP |
1142674 | Jun 1989 | JP |
1142675 | Jun 1989 | JP |
1142680 | Jun 1989 | JP |
2112017 | Apr 1990 | JP |
3091064 | Apr 1991 | JP |
3121870 | May 1991 | JP |
4059372 | Feb 1992 | JP |
5016450 | Jan 1993 | JP |
5031997 | Feb 1993 | JP |
5057967 | Mar 1993 | JP |
5119937 | May 1993 | JP |
5246104 | Sep 1993 | JP |
5270093 | Oct 1993 | JP |
5298037 | Nov 1993 | JP |
5338313 | Dec 1993 | JP |
6032015 | Feb 1994 | JP |
6035632 | Feb 1994 | JP |
6099635 | Apr 1994 | JP |
6106810 | Apr 1994 | JP |
6125454 | May 1994 | JP |
6171176 | Jun 1994 | JP |
6171177 | Jun 1994 | JP |
6238982 | Aug 1994 | JP |
6340129 | Dec 1994 | JP |
7064981 | Mar 1995 | JP |
3048582 | Mar 2000 | JP |
WO9502224 | Jan 1995 | WO |
WO9622573 | Jul 1996 | WO |
WO9718514 | May 1997 | WO |
WO9808176 | Feb 1998 | WO |
WO9821044 | May 1998 | WO |
WO0028435 | May 2000 | WO |
WO0028435 | Oct 2000 | WO |
Number | Date | Country | |
---|---|---|---|
Parent | 10629338 | Jul 2003 | US |
Child | 11226850 | US | |
Parent | 10233263 | Aug 2002 | US |
Child | 10629338 | US | |
Parent | 09818665 | Mar 2001 | US |
Child | 10233263 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 08897467 | Jul 1997 | US |
Child | 09818665 | US |