See the result for
See the code to generate this sample
Line 1 The programmer can choose which of the export
formats are offered to the end user, avoiding those which may
not display well with particular methods.
Line 2 The parameters specify the margins which, in turn, define
the inside frame. Optionally either or both header and footer
frames may be defined. In this case only the header is created.
Line 3 The page size is the dimension of the area within which the
print is to be created. Later, the programmer or the end user may
decide which size paper is used, depending on available printers.
Line 4 The various frames can be modified or added later - in this
case the footer is added.
Line 5 The inside frame is selected by default so the font is set
for that frame.
Line 6 Page number can be either in Arabic or roman numerals.
Line 7 In order to display inside the header frame, it must first
be selected as the current frame.
Lines 8 & 9 Frames may optionally have the outside border
drawn or left blank.
Line 10 AddTextAt is the simplest text method. With no other
parameters than the text string, it uses the current position -
here still at the frame origin - and defaults for other
parameters. The values of curreny x and y are updated so further
calls print on successive lines.
Line 11 ParaText is a more powerful text method that prints text
inside a notional rectangle, using embedded commands to determine
formatting options. In this case <ce> causes the text lines
to be centered whilst <pg> inserts the current page number.
Line 12 DrawPicture reads an external file and scales the picture
to fit within the specified rectangle. By using prSTExternal, the
picture is not stored as part of the document but read in whenever
Line 13 Now the footer frame is selected for printing.
Lines 14 & 15 Draw the outline of the footer in green.
Line 16 This line adds a PageNumber element to the footer frame.
By using this element type, if the frame is copied to another page
then it displays the corresponding page number, whilst <pg>
in ParaText uses the page number at the time the text is flowed.
Line 17 Now we return to the main inside frame.
Line 18 The next 18 lines add various samples of elements. The
line width is first set. The parameter is in twips but, as with
all PrintPreview dimension parameters, a string value is converted
based on the type of dimension specified, in this case points.
Line 19 A line is drawn - the same method draws rectangles but the
default is line.
Line 20 Drawing a circle is based on the center point and radius.
In this case the dimensions are specified in inches.
Lines 21-23 PrintPreview provides a number of symbols which it
draw at the specified location and the given overall size. In some
cases, such as CheckBox, a parameter is used to modify the
appearance. With CheckBox the parameter is a boolean and indicates
whether to show the check (cross)
Line 24 Another picture is added. The code is the same whether the
file is a metafile or a bitmap.
Line 25 Reset the line width to 1 point.
Lines 26 & 27 The modal parameters for element filling are now
Line 28 DrawArrow is similar to DrawLine except that an optional
arrow head may be specified for either end. Several arrowhead
types are available.
Line 29 Another line of text is added, with the default prASLine
sepcified explicitly. If a parameter is entered without a
dimension specified then it is assumed to be in twips. Hence
"2000" is equivalent to 2000 which is equal to 100
points or about 1.38 inches.
Line 30 As an exception, FontSize interprets an integer/long as
implying points rather than twips.
Lines 31-33 These lines show the different effects of the
alignment options. Note that the y position is omitted as
successive lines automatically update the value. All three calls
use the same x position so that the effects can be seen.
Line 34 Change to a bold face
Line 35 Note that if the x position is omitted then the value from
the last call is used. Compare the left hand if this line of
output with the center line above.
Line 36 A second page is created. By default the current page is
copied, but the inside frame is left empty. In this case the
header and footer appear on the second page.
Line 37 Each page may have its orientation (portrait or landscape)
specified individually. When running the demo it may be useful to
click on the Show Whole Page button to see the effect.
Line 38 This time we revert to the Arabic numbering for the page.
Line 39 Here is another example of Para Text with more of the
embedded formatting commands. For example <fs 20> sets the
font size for the following characters whilst <it 1> turns
Line 40 Finally, the document is complete and, by default,
EndDocument displays the result in the preview window, allowing
the user to review it or print it as desired.