Advanced printing
techniques
Creating complex reports in PowerBuilder requires the use of
additional functions but is relatively easy. You can use PowerScript
functions to define fonts for a job, specify fonts and line spacing, place
objects on a page, and specify exactly where you want the text or object
to be placed.
Defining and setting fonts
The examples so far have used the default font for the printer.
However, you can define as many as eight fonts for each print job and then
switch among them during the job.
In addition, you can redefine the fonts as often as you want during
the print job. This allows you to use as many fonts as you have available
on your printer during a print job. Since there is a slight performance
penalty for redefining fonts, you should define the fonts after the
PrintOpen call and leave them unchanged for the duration of the print
job.
To define a font, set an integer variable to the value returned by a
call to the PrintDefineFont function and then use the
PrintSetFont function to change the font in the job.
Example
Assume that JobNum is the integer print job number and that the
current printer has a font named Helv. The following statements define
Helv18BU as the Helv font, 18 point bold and underlined. The definition is
stored as font 2 for JobNum. The company name is printed in font 2:
|
1 2 3 4 5 6 |
IntJob, Helv18BU JobNum = PrintOpen() Helv18BU = PrintDefineFont(JobNum,2,"Helv",250,700, & Variable!,Swiss!,FALSE,TRUE) PrintSetFont(JobNum,2) Print(JobNum,"Appeon, Inc.") |
For more information about PrintDefineFont and PrintSetFont, see
the section called “PrintDefineFont” in PowerScript Reference and the section called “PrintSetFont” in PowerScript Reference.
Setting line spacing
PowerBuilder takes care of line spacing automatically when you use
the Print function. For example, after you print in an 18-point font and
start a new line, PowerBuilder adds 1.2 times the character height to the
Y coordinate of the print cursor.
The spacing factor 1.2 is not fixed. You can use the
PrintSetSpacing function to control the amount of space between
lines.
Examples
This statement results in tight single-line spacing. (Depending on
the font and the printer, the bottoms of the lowest characters may touch
the tops of the tallest characters):
|
1 |
PrintSetSpacing(JobNum,1) |
This statement causes one-and-a-half-line spacing:
|
1 |
PrintSetSpacing(JobNum,1.5) |
This statement causes double spacing:
|
1 |
PrintSetSpacing(JobNum,2) |
Printing drawing objects
You can use the following drawing objects in a print job.
-
Lines
-
Rectangles
-
Round rectangles
-
Ovals
-
Pictures
When you place drawing objects in a print job, place the objects
first and then add the text. For example, you should draw a rectangle
inside the print area and then add lines and text inside the rectangle.
Although the objects appear as outlines, they are actually filled (contain
white space); if you place an object over text or another object, it hides
the text or object.
Be careful: PowerBuilder does not check to make sure that you have
placed all the text and objects within the print area. PowerBuilder simply
does not print anything that is outside the print area.
Example
These statements draw a 1-inch by 3-inch rectangle and then print
the company address in the rectangle. The rectangle is at the top of the
page and centered:
|
1 2 3 4 5 6 7 8 |
IntJob JobNum = PrintOpen() PrintRect(JobNum,2500,0,3000,1000,40) Print(JobNum,2525,"") Print(JobNum,2525,"25 Mountain Road") Print(JobNum,2525,"Milton, MA 02186") PrintClose(JobNum) |