ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Standard functions / Print functions
  • Print characteristics
  • Combining fonts
  • Combining positions
  • Printing in Java and Android
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
Sends the character string passed as parameter to the print buffer.
A line break is automatically inserted at the end of the string: the cursor is positioned on the next line. The move to the next line takes into account the height of the current line (in relation to the font used). The print job is not started (only iEndPrinting can be used to start the print job).
Remarks:
  • To print a character string without going to the next line, use iPrintWord.
  • iPrint must not be used in the opening code of a report.
Example
iPrint(iFont(2) + "Text in font 2")
iSkipPage()
// Customer name on the first line at 50 mm from the border
iPrint(iXPos(50) + Cu.CustName)
iEndPrinting()
Syntax
<Result> = iPrint(<Text to print> [, <String on next page>])
<Result>: Boolean
  • True if printed successfully,
  • False if the print job was canceled.
<Text to print>: Character string
Character string to print as well as its characteristics. This parameter is of the form:
[<Font Identifier> +] [<Vertical Position> +] [<Horizontal Position> +] <Text1>
...
[<Font Identifier> +] [<Vertical Position> +] [<Horizontal Position> +] <TextN>
where:
  • <Font Identifier>: optional integer.
    Identifier of the font used to print the text. This identifier is returned by iFont. If this parameter is not specified, the last font used will be selected.
  • <Vertical Position>: optional integer.
    Y-coordinate of the point where the print must be performed. This position is specified in number of rows from the top left border of the sheet (with iYPos). If this parameter is not specified, the text will be printed at the current position.
  • <Horizontal Position>: optional integer.
    X-coordinate of the point where the print must be performed. This position is specified in number of columns from the top left border of the sheet (with iXPos). If this parameter is not specified, the text will be printed at the current position.
  • <Text>: Character string.
    Character string to print.
Example:
Text_to_print = "First part" + iFont(1) + "Second part"
<String on next page>: Optional boolean
Specifies whether the text printed at the end of the page must be truncated or whether it must continue over the next page:
  • True (default value): the string will be printed on the next page if it does not fit on a single page.
  • False: the character string is truncated: the rest of the string is not printed on the next page.
Remarks

Print characteristics

  • The origin (0,0) is located in the upper-left corner of the sheet. It takes the physical margins of the printer into account.
  • The current vertical position when printing a character string points to the upper part of the string. The bottom position depends on the height of the fonts used in the line to print.
  • You can specify multiple fonts and positions as parameters in a single call to iPrint. For example:
    iPrint(iXPos(50) + CU.LASTNAME + iXPos(150) + CU.FIRSTNAME)
  • The character corresponding to a line break (Char(10)) is interpreted as a line skip.

Combining fonts

Unexpected results may occur when combining fonts. For example, the following code:
iFont(2)
iPrint("First Part" + iFont(1) + "Second Part")
is not equivalent to:
iPrint(iFont(2) + "First Part" + iFont(1) + "Second Part")
In the first case, the entire character string is printed in font 1. Indeed, in this case, iFont(1) is run when building the string to print and therefore before the "First Part" string is printed.
To get an identical result, all you have to do is use iFont with the False parameter: iFont(1, False) will be actually run during the print.

Combining positions

When combining positions, unexpected results may occur. For example, the following code:
iXPos(50)
iPrint("First Part" + iPrint(30) + "Second Part")
is not equivalent to:
iPrint(iXPos(50) + "First part" + iXPos(30) + "Second part")
In the first case, the entire character string is printed at horizontal position 30. Indeed, in this case, iXPos(30) is run when building the string to print and therefore before the "First Part" string is printed.
To get an identical result, all you have to do is use iXPos with the False parameter: iXPos(30, False) will be actually run during the print.
The same operation can be performed by iYPos.
AndroidAndroid Widget Java

Printing in Java and Android

Printouts can be less precise because the print resolution is set to 72 dpi even if the printer supports higher resolutions.
Consequence: The calculations of points in images and in drawings (lines for example) are rounded during the position calculations when printing, especially for small values. During the print job, calculations are performed in points (depending on the print resolution) instead of mm (or cm).
Example: Printing lines: if the spacing between the lines is set to 0.5 mm, how many points will be found between each line (resolution set to 72 ppp)?
The first line is positioned at 0.5 mm which means (0.5/25.4) inches with a resolution of 72 points per inch (ppp): (0.5/25.4) x 72 = 1.42 point. The point being the base unit, it cannot be divided: the result is automatically rounded to 1 point less or greater according to the case.
This is a succession of lines printed with a spacing set to 05 mm:
  • 0.5 mm --> (1.42) 1 point
  • 1.0 mm --> (2.84) 3 points
  • 1.5 mm --> (4.25) 4 points. Caution: the line found at 1.5 mm is stuck to the line found at 1 mm (no spacing between these two lines)
  • 2.0 mm --> (5.67) 6 points
  • 2.5 mm --> (7.09) 7 points. Caution: the line found at 2.5 mm is stuck to the line found at 2 mm (no spacing between these two lines)
  • 3.0 mm --> (8.50) 9 points
  • 3.5 mm --> (9.92) 10 points. Caution: the line found at 3.5 mm is stuck to the line found at 3 mm (no spacing between these two lines)
  • 4.0 mm --> (11.33) 11 points. Caution: the line found at 4 mm is stuck to the line found at 3.5 mm (no spacing between these two lines)
  • etc.
To get a proper representation (no rounding), the size and/or the position in mm for a resolution set to 72 ppp must be a multiple of 127/360.
1 point --> (1/72) pouces --> (1/72) x 25.4 mm = 127/360 = 0.3527778 mm
Component: wd300prn.dll
Minimum version required
  • Version 9
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 06/21/2023

Send a report | Local help