ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

This content has been translated automatically.  Click here  to view the French version.
Help / WLanguage / WLanguage functions / Standard functions / Print functions
  • Print characteristics
  • Combining fonts
  • Combining positions
  • Printing in Java and Android
WINDEV
WindowsLinuxJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac Catalyst
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 following line then. 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) + "Texte en police 2")
iSkipPage()
// Nom du client sur la première ligne à 50 mm du bord
iPrint(iXPos(50) + Cl.NomCli)
iEndPrinting()
Syntax
<Result> = iPrint(<Text to print> [, <String of 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 has the following format:
[<Identifiant police> +] [<Position verticale> +] [<Position horizontale> +] <Texte1>
...
[<Identifiant police> +] [<Position verticale> +] [<Position horizontale> +] <TexteN>
where:
  • <Identifiant police> 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.
  • <Position verticale> 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.
  • <Position horizontale> 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.
  • <Texte>: Character string.
    Character string to print.
Example:
Texte_a_imprimer = "Première partie" + iFont(1) + "Seconde partie"
<String of 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): 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) + CL.NOM + iXPos(150) + CL.PRENOM)
  • 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. In this case, the iPolice(1) function is executed during construction of the string to be printed, before the "First Part" string is printed.
To obtain the same result, simply use function iFont with parameter Faux: the iPolice(1, Faux) function will then only be executed during printing.

Combining positions

When combining positions, unexpected results may occur. For example, the following code:
iXPos(50)
iPrint("Première partie" + iXPos(30) + "Seconde partie")
is not equivalent to:
iPrint(iXPos(50) + "Première partie" + iXPos(30) + "Seconde partie")
In the first case, the entire character string is printed at horizontal position 30. In this case, the iPosX(30) function is executed during the construction of the chain to be printed, and therefore before the "First Part" chain is printed.
To obtain the same result, simply use the iXPos function with the Faux parameter: the iPosX(30, Faux) function will then only really be executed during printing.
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.
As a consequence, the position of points of images and drawings (lines for instance) is rounded, especially when working with small values. During the print job, calculations are performed in points (depending on the print resolution) instead of mm (or cm).
Example: Lines: If lines are 0.5 mm apart, how many dots are there between each line in Java (72 dpi resolution)?
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 depending on 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 at 1.5 mm is combined with the line at 1 mm (there is no space between these two lines)
  • 2.0 mm --> (5.67) 6 points
  • 2.5 mm --> (7.09) 7 points. Caution: the line at 2.5 mm is combined with the line at 2 mm (there is no space between these two lines)
  • 3.0 mm --> (8.50) 9 points
  • 3.5 mm --> (9.92) 10 points. Caution: the line at 3.5 mm is combined with the line at 3 mm (there is no space between these two lines)
  • 4.0 mm --> (11.33) 11 points. Caution: the line at 4 mm is combined with the line at 3.5 mm (there is no space between these two lines)
  • etc.
To get an accurate representation (without 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) inches --> (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: 09/24/2024

Send a report | Local help