Merge branch 'RefactorPrint'

- Modifies printing model to be similar to glabels-3.x.
   - Allow simple projects to print by-the-page (#51)
   - Added collated vs uncollated document merges
- Added ability to separate merge groups by page
- Updated man pages
- Updated misc developer documentation
This commit is contained in:
Jim Evins
2020-01-01 14:19:11 -05:00
parent af607ca4af
commit aebcda43cb
23 changed files with 1184 additions and 380 deletions
+107 -96
View File
@@ -20,10 +20,6 @@ Assumptions/caveats
A sheet contains only one size of label or card (if a sheet contains more than one size of item,
it can be split into multiple templates for multiple pass printing).
Distances can be expressed in units of *pt*, *in*, *mm*, *cm*, or *pc*. For example:
`"1.0in"` or `"2.54cm"`. If no units are specified, computer points (*pt*) will
be assumed (1 *pt* = 1/72 *in* = 0.352778 *mm*).
Template Files
--------------
@@ -57,22 +53,37 @@ An example template file containing a single *Template* node:
</Glabels-templates>
```
*Distance* Attributes
---------------------
A distance attribute is expressed as a number followed by a unit identifier.
Valid unit identifiers are *pt*, *in*, *mm*, *cm*, or *pc*. These are a subset of
the SVG absolute length units. Examples:
```xml
<Label-round radius="1.0in" >
<Label-round radius="2.54cm">
```
If no units are specified, computer points (*pt*) will be assumed (1 *pt* = 1/72 *in* = 0.352778 *mm*).
*Template* Node
---------------
A *Template* node describes a single stationery product. It must contain exactly one instance of
a label node, either *Label-rectangle*, *Label-round*, *Label-ellipse* or *Label-cd*.
Property | Description
---------------|------------
*brand* | Brand or manufacturer of stationery product. E.g. "Avery".
*part* | Part number or name of stationery product. E.g. "8160".
*size* | Paper size. Must match an ID defined in *paper-sizes.xml*, "roll" or "other". E.g. "A4".
*description* | Description of stationery product. E.g, "Mailing Labels".
*_description* | Translatable description of stationery product. Used in predefined labels instead of description.
*width* | Page width. Only valid if `size="other"` or `size="roll"`.
*height* | Page height. Only valid if `size="other"`. Value is ignored if `size="roll"`.
*equiv* | Equivalent part number. If this property is present, the template is a clone of another template of the same brand. The template will inherit all properties, except brand and name from the other template. This equiv property must refer to a previously defined template - *gLabels* does not currently support forward references.
Property | Type | Description
---------------|----------|------------
*brand* | string | Brand or manufacturer of stationery product. E.g. "Avery".
*part* | string | Part number or name of stationery product. E.g. "8160".
*size* | string | Paper size. Must match an ID defined in *paper-sizes.xml*, "roll" or "other". E.g. "A4".
*description* | string | Description of stationery product. E.g, "Mailing Labels".
*_description* | string | Translatable description of stationery product. Used in predefined labels instead of description.
*width* | distance | Page width. Only valid if `size="other"` or `size="roll"`.
*height* | distance | Page height. Only valid if `size="other"`. Value is ignored if `size="roll"`.
*equiv* | string | Equivalent part number. If this property is present, the template is a clone of another template of the same brand. The template will inherit all properties, except brand and name from the other template. This equiv property must refer to a previously defined template - *gLabels* does not currently support forward references.
### Guidelines for Creating Product Descriptions
@@ -90,10 +101,10 @@ If creating templates to be distributed with *gLabels*, please use the following
A *Meta* node contains some additional information about the template. A *Template* node may contain zero
or more *Meta* nodes. Only one property should be defined per *Meta* node.
Property | Description
--------------|------------
*category* | A category for the template. A template can belong to multiple categories by simply adding multiple *Meta* nodes to the parent *Template* node. The category must match an existing ID defined in categories.xml. E.g. `category="media"`
*product_url* | A URL pointing to the vendor's webpage for the specific product, if available.
Property | Type | Description
---------------|----------|------------
*category* | string | A category for the template. A template can belong to multiple categories by simply adding multiple *Meta* nodes to the parent *Template* node. The category must match an existing ID defined in categories.xml. E.g. `category="media"`
*product_url* | string | A URL pointing to the vendor's webpage for the specific product, if available.
*Label-rectangle* Node
@@ -102,14 +113,14 @@ Property | Description
A *Label-rectangle* node describes the dimensions of a single label or business card that is rectangular
in shape (may have rounded edges).
Property | Description
--------------|------------
*id* | Reserved for future use. Should always be 0.
*width* | Width of label or card. E.g. `width="29mm"`
*height* | Height of label or card. E.g. `height="100mm"`
*round* | Radius of corners. For items with square edges (business cards), the radius should be 0.
*x_waste* | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
*y_waste* | Amount of vertical waste (over-print) to allow.
Property | Type | Description
---------------|----------|------------
*id* | integer | Reserved for future use. Should always be 0.
*width* | distance | Width of label or card. E.g. `width="29mm"`
*height* | distance | Height of label or card. E.g. `height="100mm"`
*round* | distance | Radius of corners. For items with square edges (business cards), the radius should be 0.
*x_waste* | distance | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
*y_waste* | distance | Amount of vertical waste (over-print) to allow.
![Label-rectangle properties](images/glabels-template-rect-label.png)
@@ -120,12 +131,12 @@ Property | Description
A *Label-ellipse* node describes the dimensions of a single label or business card that is elliptical
in shape.
Property | Description
--------------|------------
*id* | Reserved for future use. Should always be 0.
*width* | Width of label or card. E.g. `width="29mm"`
*height* | Height of label or card. E.g. `height="100mm"`
*waste* | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
Property | Type | Description
---------------|----------|------------
*id* | integer | Reserved for future use. Should always be 0.
*width* | distance | Width of label or card. E.g. `width="29mm"`
*height* | distance | Height of label or card. E.g. `height="100mm"`
*waste* | distance | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
![Label-ellipse properties](images/glabels-template-ellipse-label.png)
@@ -135,11 +146,11 @@ Property | Description
A *Label-round* node describes the dimensions of a simple round label (not a CD).
Property | Description
--------------|------------
*id* | Reserved for future use. Should always be 0.
*radius* | Radius (1/2 diameter) of label or card. E.g. `radius="14.5mm"`
*waste* | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
Property | Type | Description
---------------|----------|------------
*id* | integer | Reserved for future use. Should always be 0.
*radius* | distance | Radius (1/2 diameter) of label or card. E.g. `radius="14.5mm"`
*waste* | distance | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
![Label-round properties](images/glabels-template-round-label.png)
@@ -149,14 +160,14 @@ Property | Description
A *Label-cd* node describes the dimensions of a CD, DVD, or business card CD.
Property | Description
--------------|------------
*id* | Reserved for future use. Should always be 0.
*radius* | Outer radius (1/2 diameter) of label. E.g. `radius="58.5mm"`
*hole* | Radius (1/2 diameter) of concentric hole. E.g. `hole="18mm"`
*width* | If present, the label is clipped to the given Width. (For use with business card CDs.)
*height* | If present, the label is clipped to the given height. (For use with business card CDs.)
*waste* | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
Property | Type | Description
---------------|----------|------------
*id* | integer | Reserved for future use. Should always be 0.
*radius* | distance | Outer radius (1/2 diameter) of label. E.g. `radius="58.5mm"`
*hole* | distance | Radius (1/2 diameter) of concentric hole. E.g. `hole="18mm"`
*width* | distance | If present, the label is clipped to the given Width. (For use with business card CDs.)
*height* | distance | If present, the label is clipped to the given height. (For use with business card CDs.)
*waste* | distance | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
![Label-cd properties](images/glabels-template-cd-label.png)
@@ -165,13 +176,13 @@ Property | Description
A *Label-continuous* node describes the dimensions of a single section of a continuous label tape.
Property | Description
--------------|------------
*id* | Reserved for future use. Should always be 0.
*width* | Width of label or card. E.g. `width="29mm"`
*min_height* | Minimum user defined height or length of label.
*max_height* | Maximum user defined height or length of label.
*derault_height* | Default user defined height or length of label.
Property | Type | Description
-----------------|----------|------------
*id* | integer | Reserved for future use. Should always be 0.
*width* | distance | Width of label or card. E.g. `width="29mm"`
*min_height* | distance | Minimum user defined height or length of label.
*max_height* | distance | Maximum user defined height or length of label.
*default_height* | distance | Default user defined height or length of label.
*Label-path* Node
@@ -179,13 +190,13 @@ Property | Description
A *Label-path* node describes the dimensions of a label with an outline defined by an arbitrary path.
Property | Description
--------------|------------
*id* | Reserved for future use. Should always be 0.
*d_units* | Units used in path definition. (default = `"pt"`)
*d* | Path definition. This is a subset of of the SVG path "d" attribute. Commands include "M/m", "L/l", "H/h", "V/v", and "Z/z". Commands and data must be delimited by white space."
*x_waste* | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
*y_waste* | Amount of vertical waste (over-print) to allow.
Property | Type | Description
---------------|----------|------------
*id* | integer | Reserved for future use. Should always be 0.
*d_units* | string | Units used in path definition. Must be a supported distance unit identifier. (default = `"pt"`)
*d* | string | Path definition. This is a subset of of the SVG path "d" attribute. Commands include "M/m", "L/l", "H/h", "V/v", and "Z/z". Commands and data must be delimited by white space."
*x_waste* | distance | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
*y_waste* | distance | Amount of vertical waste (over-print) to allow.
*Markup* Nodes
@@ -201,59 +212,59 @@ special areas, or other helpful hints to the user of a template.
A *Markup-margin* describes a margin along all edges of a label.
Property | Description
--------------|------------
*size* | Size of the margin. I.e. the distance of the margin line from the edge of the card/label.
*x_size* | Size of the margin in x dimension. I.e. the distance of the margin line from the edge of the card/label.
*y_size* | Size of the margin in y dimension. I.e. the distance of the margin line from the edge of the card/label.
Property | Type | Description
---------------|----------|------------
*size* | distance | Size of the margin. I.e. the distance of the margin line from the edge of the card/label.
*x_size* | distance | Size of the margin in x dimension. I.e. the distance of the margin line from the edge of the card/label.
*y_size* | distance | Size of the margin in y dimension. I.e. the distance of the margin line from the edge of the card/label.
### *Markup-line* Node
A *Markup-line* node describes a markup line.
Property | Description
--------------|------------
*x1* | X coordinate of 1st endpoint of the line segment.
*y1* | Y coordinate of 1st endpoint of the line segment.
*x2* | X coordinate of 2nd endpoint of the line segment.
*y2* | Y coordinate of 2nd endpoint of the line segment.
Property | Type | Description
---------------|----------|------------
*x1* | distance | X coordinate of 1st endpoint of the line segment.
*y1* | distance | Y coordinate of 1st endpoint of the line segment.
*x2* | distance | X coordinate of 2nd endpoint of the line segment.
*y2* | distance | Y coordinate of 2nd endpoint of the line segment.
### *Markup-circle* Node
A *Markup-circle* describes a markup circle.
Property | Description
--------------|------------
*x0* | X coordinate of circle origin (center).
*y0* | Y coordinate of circle origin (center).
*radius* | Radius of circle.
Property | Type | Description
---------------|----------|------------
*x0* | distance | X coordinate of circle origin (center).
*y0* | distance | Y coordinate of circle origin (center).
*radius* | distance | Radius of circle.
### *Markup-rect* Node
A *Markup-rect* describes a markup rectangle.
Property | Description
--------------|------------
*x1* | X coordinate of upper left corner of rectangle.
*y1* | Y coordinate of upper left corner of rectangle.
*w* | Width of rectangle.
*h* | Height of rectangle.
*r* | Radius of rounded corners of rectangle.
Property | Type | Description
---------------|----------|------------
*x1* | distance | X coordinate of upper left corner of rectangle.
*y1* | distance | Y coordinate of upper left corner of rectangle.
*w* | distance | Width of rectangle.
*h* | distance | Height of rectangle.
*r* | distance | Radius of rounded corners of rectangle.
### *Markup-ellipse* Node
A *Markup-ellipse* describes a markup ellipse.
Property | Description
--------------|------------
*x1* | X coordinate of upper left corner of ellipse bounding box.
*y1* | Y coordinate of upper left corner of ellipse bounding box.
*w* | Width of ellipse.
*h* | Height of ellipse.
Property | Type | Description
---------------|----------|------------
*x1* | distance | X coordinate of upper left corner of ellipse bounding box.
*y1* | distance | Y coordinate of upper left corner of ellipse bounding box.
*w* | distance | Width of ellipse.
*h* | distance | Height of ellipse.
*Layout* Node
@@ -282,13 +293,13 @@ with unique coordinates for the top left corner of that label.
> A single label can always be treated as a grid of one.
Property | Description
--------------|------------
*nx* | Number of labels/cards in the grid in the X direction (horizontal).
*ny* | Number of labels/cards in the grid in the Y direction (vertical).
*x0* | Distance from left edge of sheet to the left edge of the left column of cards/labels in the layout.
*y0* | Distance from the top edge of sheet to the top edge of the top row of labels/cards in the layout.
*dx* | Horizontal pitch of grid.
*dy* | Vertical pitch of grid.
Property | Type | Description
---------------|----------|------------
*nx* | integer | Number of labels/cards in the grid in the X direction (horizontal).
*ny* | integer | Number of labels/cards in the grid in the Y direction (vertical).
*x0* | distance | Distance from left edge of sheet to the left edge of the left column of cards/labels in the layout.
*y0* | distance | Distance from the top edge of sheet to the top edge of the top row of labels/cards in the layout.
*dx* | distance | Horizontal pitch of grid.
*dy* | distance | Vertical pitch of grid.
![Layout example](images/glabels-template-layout.png)