POSPrinter provides a fluent style api for preparing ESC/POS data. Supported commands depend on printer model.

The class uses ESC/P sequences. ESC/P, short for Epson Standard Code for Printers and sometimes styled Escape/P, is a printer control language developed by Epson to control computer printers. It was mainly used in dot matrix printers and some inkjet printers, and is still widely used in many receipt thermal printers.

1 POS printer

The POSPrinter provides a fluent api to compose ESC commands for POS printers. The following example shows a variety of commands including barcode generation.

Copy
<script>

var pos = new Ax.pos.POSPrinter()
    .build()
    .setCharacterCodeTable(Ax.pos.POSPrinter.CharacterCodeTable.PC437)
    
     // ====================================================   
    // Center and increase character size
     // ====================================================   
    .setAlign("CENTER")
    .setCharacterSize(Ax.pos.POSPrinter.Width.X3, Ax.pos.POSPrinter.Height.X3)
    
     // ==================================================== 
     // SAMPLE TICKET HEADER  
     // ====================================================   
    
    .setUnderline(Ax.pos.POSPrinter.Underline.TWO_DOT)
    .setEmphasize(true)
    .text("STORE AEO")
    .printAndFeedLine()
    .setEmphasize(false)
    .setUnderline(Ax.pos.POSPrinter.Underline.CANCEL)
    .text("Barcelona")
    .printAndFeedLine()
    .printAndFeedLines(2)
    
     // ====================================================   
    // Reduce character size
     // ====================================================   
    .setCharacterSize(Ax.pos.POSPrinter.Width.X1, Ax.pos.POSPrinter.Height.X1)
    .setAlign("LEFT")
    .text("NIF: A282382832").printAndFeedLine()
    .text("01-09-2019 20:00").printAndFeedLine()
    .printAndFeedLine()

    // ====================================================   
    // BARCODES
    // ==================================================== 
    .write(new Ax.pos.POSBarcode("UPCA")    .setAlign("CENTER").setTextPosition("above").print("12345678901"))
    .write(new Ax.pos.POSBarcode("UPCA_B")  .setAlign("CENTER").setTextPosition("none").print("12345678901"))
    .write(new Ax.pos.POSBarcode("UPCE_A")  .setAlign("CENTER").print("230404"))
    .write(new Ax.pos.POSBarcode("UPCE_B")  .setAlign("CENTER").print("230404"))
    .write(new Ax.pos.POSBarcode("EAN13_A") .setAlign("CENTER").print("123456789012"))
    .write(new Ax.pos.POSBarcode("EAN13_B") .setAlign("CENTER").print("123456789012"))
    .write(new Ax.pos.POSBarcode("EAN8_A")  .setAlign("CENTER").print("12345678"))
    .write(new Ax.pos.POSBarcode("EAN8_B")  .setAlign("CENTER").print("12345678"))
    .write(new Ax.pos.POSBarcode("CODE39_A").setAlign("CENTER").print("DR2039"))
    .write(new Ax.pos.POSBarcode("CODE39_B").setAlign("CENTER").print("DR2039"))
    .write(new Ax.pos.POSBarcode("CODE93")  .setAlign("CENTER").print("DR2039"))
    .write(new Ax.pos.POSBarcode("CODE128") .setAlign("CENTER").setTextPosition("aboveandbelow").print("{A81007123452112345678"))
    .write(new Ax.pos.POSQRCode()           .setAlign("CENTER").setSize(3).print("Please don’t try to scan this one"))
    .write(new Ax.pos.POSPDF417()           .setAlign("CENTER").setSize(3, 3).print("ABCabc123"))
    
    // ====================================================   
    // END + CUT PAPER
    // ====================================================   
    .printAndFeedLines(5)
    .cut(Ax.pos.POSPrinter.CutA.PARTIAL);
    
    // ====================================================   
    // Show bytes to be sent
    // ====================================================   
    console.log(pos.getBytes());
    
    // ====================================================   
    // Open a LPR printer
    // ====================================================   
    var lpr = new Ax.net.LPRClient("192.168.12.125");
    // No more than 5 seconds before timeout
    lpr.setTimeout(5000);
    
    // ====================================================   
    // Send a job to the printer
    // ====================================================   
    var job = lpr.print(pos.getBytes());
    console.log("PRINT ID:" + job);
    console.log(lpr.getQueueState());

</script>

2 Write Commands

text(String text)

Sends a string to the printer.

bytes(byte[] bytes)

Sends a raw byte array to the printer.

3 Print Commands

printAndFeedLine()

Prints the data in the print buffer and feeds one line, based on the current line spacing.

  • The amount of paper fed per line is based on the value set using the line spacing command (ESC 2 or ESC 3).
  • After printing, the print position is moved to left side of the printable area. Also, the printer is in the status "beginning of the line".
  • When this command is processed in Page mode, only the print position moves, and the printer does not perform actual printing.

printAndReturnToStandardMode()

In Page mode, prints the data in the print buffer collectively.

  • This command is enabled only in Page mode. Page mode can be selected by ESC L.
  • After printing, the printer does not clear the buffered data, the print position, or values set by other commands.
  • The printer returns to Standard mode with FF, ESC S, and ESC @. When it returns to Standard mode by ESC @, all settings are canceled.
  • This command is used when the data in Page mode is printed repeatedly.

printAndCarriageReturn()

Executes one of the following operations (Alignment, Auto Line Feed):

  • Horizontal, Enabled - Executes printing and one line feed as LF
  • Horizontal, Disabled - This command is ignored.
  • Vertical, Enabled - Executes printing and one line feed as LF
  • Vertical, Disabled - In Standard mode, prints the data in the print buffer and moves the print position to the beginning of the print line. In Page mode, moves the print position to the beginning of the print line.

Notes:

  • With a serial interface, the command performs as if auto line feed is disabled.
  • Enabling or disabling the auto line feed can be selected by the DIP switch or the memory switch. Memory switch can be changed with GS ( E <Function 3>
  • After printing, the print position is moved to left side of the printable area. Also, the printer is in the status "beginning of the line".
  • When this command is processed in Page mode, only the print position moves, and the printer does not perform actual printing.

printInPageMode()

In Page mode, prints all the data in the print buffer collectively and switches from Page mode to Standard mode.

  • This command is enabled only in Page mode. See FF (in Standard mode) to use this command in Standard mode. Page mode can be selected by ESC L.
  • The data is deleted in the print area after being printed.
  • This command returns the values set by ESC W to the default values.
  • The value set by ESC T is maintained.
  • After printing, the printer returns to Standard mode and moves the print position to left side of the printable area. Also, the printer is in the status "beginning of the line".

printAndFeedPaper(int n)

Prints the data in the print buffer and feeds the paper [n × (vertical or horizontal motion unit)].

  • When Standard mode is selected, the vertical motion unit is used.
  • When Page mode is selected, the vertical or horizontal motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the vertical motion unit is used.
  • When the starting position is set to the upper right or lower left of the print area using ESC T, the horizontal motion unit is used.
  • The maximum paper feed amount depends on the printer model. If specified over the maximum amount, the maximum paper feed is executed.
  • After printing, the print postion is moved to left side of the printable area. Also, the printer is in the status "beginning of the line".
  • When this command is processed in Page mode, only the print position moves; the printer does not perform actual printing.
  • This command is used to temporarily feed a specific length without changing the line spacing set by other commands.

printAndReverseFeed(int n)

Prints the data in the print buffer and feeds the paper n × (vertical or horizontal motion unit) in the reverse direction.

  • When Standard mode is selected, the vertical motion unit is used.
  • When Page mode is selected, the vertical or horizontal motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the vertical motion unit is used.
  • When this command is processed in Page mode, only the print position moves; the printer does not perform actual printing.
  • After printing, the print postion is moved to left side of the printable area. Also, the printer is in the status "beginning of the line".
  • The maximum paper feed amount depends on the printer model. If specified over the maximum amount, the reverse feed is not executed although the print is executed.
  • This command is used to temporarily feed a specific length without changing the line spacing set by other commands.
  • Some printers execute a little forward paper feed after reverse feed, from a restriction of the printer mechanism.

printAndFeedLines(int n)

Prints the data in the print buffer and feeds n lines.

  • The amount of paper fed per line is based on the value set using the line spacing command (ESC 2 or ESC 3).
  • The maximum paper feed amount depends on the printer model. If specified over the maximum amount, the maximum paper feed is executed.
  • After printing, the print postion is moved to left side of the printable area. Also, the printer is in the status "beginning of the line".
  • When this command is processed in Page mode, only the print position moves, and the printer does not perform actual printing.
  • This command is used to temporarily feed a specific line without changing the line spacing set by other commands.

printAndReverseFeedLines(int n)

Prints the data in the print buffer and feeds n lines in the reverse direction.

  • The amount of paper fed per line is based on the value set using the line spacing command (ESC 2 or ESC 3).
  • The maximum paper feed amount depends on the printer model. If specified over the maximum amount, the reverse feed is not executed although the print is executed.
  • After printing, the print postion is moved to left side of the printable area. Also, the printer is in the status "beginning of the line".
  • When this command is processed in Page mode, only the print position moves, and the printer does not perform actual printing.
  • This command is used to temporarily feed a specific line without changing the line spacing set by other commands.
  • Some printers execute a little forward paper feed after reverse feed, from a restriction of the printer mechanism.

4 Line Spacing Commands

setDefaultLineSpacing()

Sets the line spacing to the "default line spacing".

  • The line spacing can be set independently in Standard mode and in Page mode.
  • In Standard mode this command sets the line spacing of Standard mode.
  • In Page mode this command sets the line spacing of page mode.
  • Selected line spacing is effective until ESC 3 is executed, ESC @ is executed, the printer is reset, or the power is turned off.

setLineSpacing(int n)

Sets the line spacing to n × (vertical or horizontal motion unit).

  • The maximum line spacing is 1016 mm {40 inches}. However, it may be smaller depending on models.
  • If the specified amount exceeds the maximum line spacing, the line spacing is automatically set to the maximum.
  • When Standard mode is selected, the vertical motion unit is used.
  • When Page mode is selected, the vertical or horizontal motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the vertical motion unit is used.
  • When the starting position is set to the upper right or lower left of the print area using ESC T, the horizontal motion unit is used.
  • The line spacing can be set independently in Standard mode and in Page mode.
  • In Standard mode this command sets the line spacing of Standard mode.
  • In Page mode this command sets the line spacing of page mode.
  • When the motion unit is changed after the line spacing is set, the line spacing setting does not change.
  • Selected line spacing is effective until ESC 2 is executed, ESC @ is executed, the printer is reset, or the power is turned off.

5 Character Commands

cancelPrintInPageMode()

In Page mode, deletes all the print data in the current print area.

  • This command is enabled only in Page mode. Page mode is selected by ESC L.
  • If data set in the previously specified print area is set in the currently specified print area, it is deleted.

setPrintMode(boolean altFont, boolean emphasized, boolean underlined, boolean doubleHeight, boolean doubleWidth)

Selects the character font and styles (emphasized, double-height, double-width, and underline).

  • Configurations of Font 1 and Font 2 are different, depending on the printer model. If the desired font type cannot be selected with this command, use ESC M.
  • The settings of font (Bit 0), double-height (Bit 4), double-width (Bit 5) and underline (Bit 7) are effective for 1-byte code characters. On some models, the settings of double-height (Bit 4), double-width (Bit 5) and underline (Bit 7) are effective also for Korean characters.
  • The emphasized print modes set by this command (Bit 3) is effective for both 1-byte code characters and multi-byte code characters.
  • Settings of this command are effective until ESC @ is executed, the printer is reset, the power is turned off, or one of the following commands is executed:
  • Bit 0 (character font): ESC M
  • Bit 3 (Emphasized mode): ESC E
  • Bit 4, 5 (character size): GS !
  • Bit 7 (underline mode): ESC -
  • When some characters in a line are double-height, all characters on the line are aligned at the baseline.
  • When double-width mode is turned on, the characters are enlarged to the right, based on the left side of the character.
  • When both double-height and double-width modes are turned on, quadruple size characters are printed.
  • In Standard mode, the character is enlarged in the paper feed direction when double-height mode is selected, and it is enlarged perpendicular to the paper feed direction when double-width mode is selected. However, when character orientation changes in 90° clockwise rotation mode, the relationship between double-height and double-width is reversed.
  • in Page mode, double-height and double-width are on the character orientation.
  • The underline thickness is that specified by ESC -, regardless of the character size. The underline is the same color as the printed character. The printed character's color is specified by GS ( N <Function 48>.
  • The following are not underlined.
  • 90° clockwise-rotated characters
  • white/black reverse characters
  • space set by HT, ESC $, and ESC \
  • On printers that have the Automatic font replacement function, the replaced font with GS ( E <Function 5> (a = 111, 112, 113) is selected by this command.

setRightSideCharacterSpacing(int n)

Sets the right-side character spacing to n × (horizontal or vertical motion unit).

  • The character spacing set by this command is effective for alphanumeric, Kana, and user-defined characters.
  • When characters are enlarged, the character spacing is n times normal value.
  • When Standard mode is selected, the horizontal motion unit is used.
  • when Page mode is selected, the vertical or horizontal motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the horizontal motion unit is used.
  • When the starting position is set to the upper right or lower left of the print area using ESC T, the vertical motion unit is used.
  • The character spacing can be set independently in Standard mode and in Page mode.
  • In Standard mode this command sets the character spacing of Standard mode.
  • in Page mode this command sets the character spacing of page mode.
  • If the horizontal or vertical motion unit is changed after this command is executed, the character spacing is not changed.
  • Settings of this command are effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • It is used to change the spacing between characters.

setUnderline(Underline underline)

Turns underline mode off or on with 1-dot/2-dot thickness

  • The underline mode is effective for alphanumeric, Kana, and user-defined characters. On some models, it is effective also for Korean characters.
  • The color of underline is the same as that of the printing character. The printing character's color is selected by GS ( N <Function 48>.
  • Changing the character size does not affect the current underline thickness.
  • When underline mode is turned off, the following data cannot be underlined, but the thickness is maintained.
  • The printer does not underline 90° clockwise rotated characters, white/black reverse characters, and the space set by HT, ESC $, and ESC \.
  • Setting of this command is effective until ESC ! is executed, ESC @ is executed, the printer is reset, or the power is turned off.
  • Some of the printer models support the 2-dot thick underline (n = 2 or 50).

setEmphasize(boolean enabled)

Turns emphasized mode on or off.

  • This mode is effective for alphanumeric, Kana, multilingual, and user-defined characters.
  • Settings of this command are effective until ESC ! is executed, ESC @ is executed, the printer is reset, or the power is turned off.

setDoubleStrike(boolean enabled)

Turns double-strike mode on or off.

  • This mode is effective for alphanumeric, Kana, multilingual, and user-defined characters.
  • Settings of this command are effective until ESC ! is executed, ESC @ is executed, the printer is reset, or the power is turned off.

setFont(Font font)

Selects a character font.

  • The character font set by this command is effective for alphanumeric, Kana, and user-defined characters.
  • Configurations of Font A and Font B depend on the printer model.
  • Settings of this command are effective until ESC ! is executed, ESC @ is executed, the printer is reset, or the power is turned off.
  • On the printer that has the Automatic font replacement function, the replaced font with GS ( E <Function 5> (a = 111 or 112) is selected by this command.

setCharacterSet(CharacterSet characterSet)

Sets an international character set.

  • The selected international character set is effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • Refer to International Character Sets in Character Code Tables for TM printers for the international characters.

setRotation(Rotation rotation)

In Standard mode, turns 90° clockwise rotation mode on or off for characters.

  • The 90° clockwise rotation mode is effective for alphanumeric, Kana, multilingual, and user-defined characters.
  • When underline mode is turned on, the printer does not underline 90° clockwise-rotated characters.
  • When character orientation changes in 90° clockwise rotation mode, the relationship between vertical and horizontal directions is reversed.
  • The 90° clockwise rotation mode has no effect in Page mode.
  • Some printer models support 90° clockwise rotation mode when n = 2 or 50.
  • Some printer models have a font for which 90° clockwise rotation mode is not effective.
  • Settings of this command are effective until ESC @ is executed, the printer is reset, or the power is turned off.

setColor(Color color)

Select print color.

  • When Standard mode is selected, this command is enabled only when processed at the beginning of the line.
  • when Page mode is selected, the color setting is the same for all data collectively printed by FF or ESC FF.
  • This command is effective until ESC @ is executed, the printer is reset, or the power is turned off.

setCharacterCodeTable(CharacterCodeTable characterCodeTable)

Selects a page n from the character code table.

  • The characters of each page are the same for alphanumeric parts (ASCII code: Hex = 20h – 7Fh / Decimal = 32 – 127), and different for the escape character parts (ASCII code: Hex = 80h – FFh / Decimal = 128 – 255).
  • The selected character code table is valid until ESC @ is executed, the printer is reset, or the power is turned off.

setUpsideDownPrint(boolean enabled)

In Standard mode, turns upside-down print mode on or off.

  • When Standard mode is selected, this command is enabled only when processed at the beginning of the line.
  • The upside-down print mode is effective for all data in Standard mode except the following:
  • The graphics from GS ( L / GS 8 L <Function 112>, GS ( L / GS 8 L <Function 113>.
  • Raster bit image from GS v 0.
  • Variable vertical size bit image from GS Q 0.
  • The upside-down print mode has no effect in Page mode.
  • Settings of this command are effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • When upside-down print mode is turned on, the printer prints 180°-rotated characters from right to left. The line printing order is not reversed; therefore, be careful of the order of the data transmitted.

setCharacterSize(Width width, Height height)

Selects the character height and width.

  • The character size set by this command is effective for alphanumeric, Kana, multilingual, and user-defined characters.
  • When the characters are enlarged with different heights on one line, all the characters on the line are aligned at the baseline.
  • When the characters are enlarged widthwise, the characters are enlarged to the right, based on the left side of the character.
  • ESC ! can also turn double-width and double-height modes on or off.
  • In Standard mode, the character is enlarged in the paper feed direction when double-height mode is selected, and it is enlarged perpendicular to the paper feed direction when double-width mode is selected. However, when character orientation changes in 90° clockwise rotation mode, the relationship between double-height and double-width is reversed.
  • in Page mode, double-height and double-width are on the character orientation.
  • The setting of the character size of alphanumeric and Katakana is effective until ESC ! is executed, ESC @ is executed, the printer is reset, or the power is turned off.
  • The setting of the character size of Kanji and multilingual characters is effective until FS ! is executed, FS W is executed, ESC @ is executed, the printer is reset, or the power is turned off.

setWhiteBlackReverse(boolean enabled)

Turns white/black reverse print mode on or off.

  • The white/black reverse print is effective for 1-byte code characters and multi-byte code characters.
  • When white/black reverse print mode is turned on, it also affects the right-side character spacing set by ESC SP and left- and right-side spacing of multi-byte code characters set by FS S.
  • When white/black reverse print mode is turned on, it does not affect the space between lines and the spaces skipped by HT, ESC $, or ESC \.
  • When underline mode is turned on, the printer does not underline white/black reverse characters.
  • This command is effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • In white/black reverse print mode, characters are printed in white on a black background.

setSmoothing(boolean enabled)

Turns smoothing mode on or off.

  • The smoothing mode is effective for quadruple-size or larger characters [alphanumeric, Kana, multilingual, and user-defined characters.]
  • This command is effective until ESC @ is executed, the printer is reset, or the power is turned off.

6 Print Position Commands

horizontalTab()

Moves the print position to the next horizontal tab position.

  • This command is ignored unless the next horizontal tab position has been set.
  • If the next horizontal tab position exceeds the print area, the printer sets the print position to [Print area width + 1].
  • If this command is processed when the print position is at [Print area width + 1], the printer executes print buffer-full printing of the current line and horizontal tab processing from the beginning of the next line. In this case, in Page mode, the printer does not execute printing, but the print position is moved.
  • Horizontal tab positions are set by ESC D.
  • The printer will not be in the beginning of the line by executing this command.
  • When underline mode is turned on, the underline will not be printed under the tab space skipped by this command.

setPrintDirection(Direction direction)

In Page mode, selects the print direction and starting position.

  • The print direction set by this command is effective only in Page mode.
  • This command setting has no effect in Standard mode.
  • The parameters for the horizontal or vertical motion unit differ, depending on the starting position of the print area as follows:
  • If the starting position is the upper left or lower right of the print area:
  • These commands use horizontal motion units: ESC SP, ESC $, ESC \, FS S
  • These commands use vertical motion units: ESC 3, ESC J, ESC K, GS $, GS \
  • If the starting position is the upper right or lower left of the print area:
  • These commands use horizontal motion units: ESC 3, ESC J, ESC K, GS $, GS \
  • These commands use vertical motion units: ESC SP, ESC $, ESC \, FS S
  • Settings of this command are effective until ESC @ is executed, the printer is reset, or the power is turned off.

setJustification(Justification justification)

In Standard mode, aligns all the data in one line to the selected layout.

  • When Standard mode is selected, this command is enabled only when processed at the beginning of the line in Standard mode.
  • The justification has no effect in Page mode.
  • This command executes justification in the print area set by GS L and GS W.
  • This command justifies printing data (such as characters, all graphics, barcodes, and two-dimensional code) and space area set by HT, ESC $, and ESC \.
  • Settings of this command are effective until ESC @ is executed, the printer is reset, or the power is turned off.

You can also use setAlign("left|right|center") insead of setJustification().
setLeftMargin(int nL, int nH)

In Standard mode, sets the left margin to (nL + nH × 256) × (horizontal motion unit) from the left edge of the printable area.

  • When Standard mode is selected, this command is enabled only when processed at the beginning of the line.
  • The left margin has no effect in Page mode. If this command is processed in Page mode, the left margin is set and it is enabled when the printer returns to Standard mode.
  • If the setting exceeds the printable area, the left margin is automatically set to the maximum value of the printable area.
  • If this command and GS W set the print area width to less than the width of one character, the print area width is extended to accommodate one character for the line.
  • Horizontal motion unit is used.
  • If horizontal motion unit is changed after changing left margin, left margin setting is not changed.
  • Left margin setting is effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • Left margin position is left edge of the printable area. If left margin setting is changed, left edge of the printable area will move.

setPrintPositionStart(DataAction action)

In Standard mode, moves the print position to the beginning of the print line after performing the operation specified.

  • In Page mode, this command is ignored.
  • This command is ignored if the print position is already the beginning of the line.
  • If the print position is not set to the beginning of the line, when n = 1, 49, this command functions the same as LF.
  • When erasure is specified (n = 0, 48), executes cancel processing for the print data currently in the print buffer and maintains other data and settings.
  • Setting values of each command, definitions, and receive buffer content are not changed.
  • The command execution moves the print position to left side of the printable area. Also, the printer is in the status "beginning of the line".
  • When using commands that are enabled only at the beginning of the line, these commands are sure to be executed if this command is used immediately before using those commands.

setPrintAreaWidth(int nL, int nH)

In Standard mode, sets the print area width to (nL + nH × 256) × (horizontal motion unit).

  • When Standard mode is selected, this command is enabled only when processed at the beginning of the line.
  • The print area width has no effect in Page mode. If this command is processed in Page mode, the print area width is set and it is enabled when the printer returns to Standard mode.
  • If the [left margin + print area width] exceeds the printable area, the print area width is automatically set to [printable area - left margin].
  • If this command and GS L set the print area width to less than the width of one character, the print area width is extended to accommodate one character for the line.
  • Horizontal motion unit is used.
  • If horizontal motion unit is changed after setting the printable area width, the printable area width setting will not be changed.
  • Printable area width setting is effective until ESC @ is executed, the printer is reset, or the power is turned off.

setAbsolutePosition(int nL, int nH)

Moves the print position to (nL + nH × 256) × (horizontal or vertical motion unit) from the left edge of the print area.

  • The printer ignores any setting that exceeds the print area.
  • When Standard mode is selected, the horizontal motion unit is used.
  • When Page mode is selected, the horizontal or vertical motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the horizontal motion unit is used.
  • When the starting position is set to the upper right or lower left of the print area using ESC T, the vertical motion unit is used.
  • If the horizontal or vertical motion unit is changed after this command is executed, the print position is not changed.
  • The printer will not be in the beginning of the line by executing this command.
  • Even if underline mode is turned on, the underline will not be printed under the space skipped by this command.

setRelativePosition(int nL, int nH)

Moves the print position to (nL + nH × 256) × (horizontal or vertical motion unit) from the current position.

  • The printer ignores any setting that exceeds the print area.
  • A positive number specifies movement to the right, and a negative number specifies movement to the left.
  • When Standard mode is selected, the horizontal motion unit is used.
  • When Page mode is selected, the horizontal or vertical motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the horizontal motion unit is used.
  • When the starting position is set to the upper right or lower left of the print area using ESC T, the vertical motion unit is used.
  • Even if the vertical or horizontal motion unit is changed after changing the print position, the setting of the print position will not be changed.
  • When underline mode is turned on, the underline will not be printed under the space skipped by this command.
  • "\" corresponds to "¥" in the JIS code system.

setAbsoluteVerticalPosition(int nL, int nH)

In Page mode, moves the vertical print position to (nL + nH × 256) × (vertical or horizontal motion unit) from the starting position set by ESC T.

  • This command is enabled only in Page mode. If this command is processed in Standard mode, it is ignored.
  • The printer ignores any setting that exceeds the print area set by ESC W.
  • The horizontal or vertical motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the vertical motion unit is used.
  • When the starting position is set to the upper right or lower left of the print area using ESC T, the horizontal motion unit is used.
  • Even if the vertical or horizontal motion unit is changed after changing the print position, the print position will not be changed.

setRelativeVerticalPosition(int nL, int nH)

In Page mode, moves the vertical print position to (nL + nH × 256) × (vertical or horizontal motion unit) from the current position.

  • This command is enabled only in Page mode. If this command is processed in Standard mode, it is ignored.
  • The printer ignores any setting that exceeds the print area set by ESC W.
  • A positive number specifies movement downward, and a negative number specifies movement upward.
  • The horizontal or vertical motion unit is used for the print direction set by ESC T.
  • When the starting position is set to the upper left or lower right of the print area using ESC T, the vertical motion unit is used.
  • When the starting position is set to the upper right or lower left of the print area using ESC T, the horizontal motion unit is used.
  • Even if vertical or horizontal motion unit is changed after changing the print position, the setting of print position will not be changed.
  • "\" corresponds to "¥" in the JIS code set.

7 Mechanism Control Commands

returnHome()

Moves the print head to the standby position.

  • The standby position is different, depending on the printer model.
  • The command rechecks the standby position; therefore, the print position might be shifted before and after checking the standby position.

setUnidirectionalPrint(boolean enabled)

Turns unidirectional print mode on or off.

  • This mode can be set independently in Standard mode and in Page mode.
  • When this command is used in Standard mode, the printer sets the mode for Standard mode.
  • When this command is used in Page mode, the printer sets the mode for page mode.
  • When unidirectional print mode is turned off, bidirectional print mode is automatically turned on.
  • When Page mode is selected, the printer performs unidirectional printing for all data that is to be collectively printed using FF or ESC FF.
  • Unidirectional print mode can be turned on when printing double-height characters or graphics or bit image or two-dimensional code to ensure that the top and bottom of the printing patterns are aligned.
  • Settings of this command are effective until ESC @ is executed, the printer is reset, or the power is turned off.

cut(CutA cut)

Executes paper cut.

  • When using this command, note that there is a gap between the cutting position and the print position.

cutWithFeed(CutB cut, int n)

Feeds paper to [cutting position + (n × vertical motion unit)] and executes paper cut.

  • Printers without an auto-cutter only feed the paper for specified amount.

cutPosition(CutC cut, int n)

Preset [cutting position + (n × vertical motion unit)] to the paper cutting position, and executes paper cut when it reaches the autocutter position after printing and feeding

  • The preset cutting position is cleared if any of the following cases is performed.
  • Execution of ESC @
  • Execution of commands that perform a software reset
  • Power off or hardware reset
  • Paper feed by pressing paper feed button
  • Execution of buffer clear commands
  • The paper cut involves a stop of printing. This might affect the print quality.
  • The function makes it possible to save paper by reducing the top margin for continuous printing.

cutWithFeedAndReturnStart(CutD cut, int n)

Feeds paper to [cutting position + (n × vertical motion unit)] and executes paper cut, then moves paper to the print start position by reverse feeding.

  • The function makes it possible to save paper by reducing the top margin for continuous printing.
  • The top margin of the print start position is different depending on the printers.

8 Panel Button Commands

setPanelButtons(boolean enabled)

Enables or disables the panel buttons.

  • If panel buttons are enabled, the function of the panel button, such as feeding, will be executed when the panel button is turned on.
  • If panel buttons are disabled, the function of the panel button will not be executed even if pressed the button. To prevent problems caused by accidentally pressing the buttons, use this command to disable the buttons.
  • Setting of this command is effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • When the printer cover is open, there are buttons that are always enabled or disabled regardless of this command. The buttons are different, depending on the printer model.
  • Even if the panel buttons are disabled by this command, paper feed button will be enabled temporarily while printer is waiting for the buttons to be pressed. The following are some examples of the case.
  • When a new roll of paper is installed in the TM-U230
  • When waiting for an online recovery for the TM-L90 with Peeler
  • When the printer is waiting for the button to be pressed while GS ^ is executed

9 Kanji Commands

setKanjiPrintMode(boolean underlined, boolean doubleWidth, boolean doubleHeight)

Selects the character styles (double-height, double-width, and Kanji-underlined) together for multi-byte code character.

  • Settings of this command affect multilingual characters and user-defined characters.
  • Settings of this command are effective until any of the following commands are executed, ESC @ is executed, the printer is, or the power is turned off.
  • Character size (bits 2 and 3): FS W, GS !
  • Underline (bit 7): FS -
  • When a double-height mode is specified, a character is enlarged based on a baseline of the character.
  • When a double-width mode is specified, a character is enlarged based on the left side of the character.
  • When both double-width and double-height modes are specified, quadruple-size characters are printed.
  • When double-height mode is selected in Standard mode, a character is enlarged in the paper feed direction and when double-width mode is selected, a character is enlarged in the direction which is perpendicular to the paper feed direction. Therefore, when 90° clockwise-rotation is selected, the relationship between directions of enlargement of double-height and double-width is opposite from normal direction.
  • When double-height mode is selected in Page mode, height size is enlarged and when double-width mode is selected in Page mode, width size is enlarged.
  • When Kanji underline mode is specified, the width of the underline set by FS - is added. Even if the character size is changed, the width is not changed. The underline has the same color as the characters. The color can be selected by Function 48 of GS ( N.
  • Even if Kanji underline mode is specified, 90° clockwise-rotated characters, white/black reverse characters, and spaces skipped by HT, ESC $, or ESC \ are not underlined.

setKanjiCharacterMode()

Selects Kanji character mode.

  • This command can be used only for the Japanese, Simplified Chinese, and Traditional Chinese models.
  • Settings of this command are effective until FS . is executed, ESC @ is executed, the printer is reset, or the power is turned off.

Notes for Japanese models:

  • Settings of this command affect processing of a character code only when JIS code system is selected by FS C.
  • If Kanji mode is specified when JIS code system is selected, the printer processes a character code as a 2-byte code.
  • Kanji codes are processed in order of the first byte then the second byte.
  • Kanji mode is canceled at default.

Notes for Simplified Chinese models:

  • When Kanji mode is selected, the printer processes a character code that corresponds to the first byte of Kanji code, and then processes consecutive byte(s) as the second byte ( – the fourth byte) of Kanji code. Therefore, when Kanji code is specified, an ASCII code character that corresponds to the first byte of Kanji code cannot be printed.
  • Kanji mode is selected at default.

Notes for Traditional Chinese models:

  • When Kanji mode is selected, the printer processes a character code that corresponds to the first byte of Kanji code, and then processes a consecutive byte as the second byte of Kanji code. Therefore, when Kanji code is specified, an ASCII code character that corresponds to the first byte of Kanji code cannot be printed.
  • Kanji mode is selected at default.

setKanjiUnderline(Underline underline)

Turns on or off underline mode for multi-byte code character (Kanji-underline).

  • Settings of this command affect multilingual characters and user-defined characters.
  • The underline has the same color as the characters. The color can be selected by Function 48 of GS ( N.
  • Even if Kanji underline mode is specified, 90° clockwise-rotation characters, white/black reverse characters, and spaces skipped by HT, ESC $, or ESC \ are not underlined.
  • When a character size is changed, an underline width is not changed.
  • When underline mode is canceled, the following characters are not underlined; however, an underline width set right before the mode is canceled remains.
  • Settings of this command are effective until FS ! is executed, ESC @ is executed, the printer is reset, or the power is turned off.
  • Some printer models support Kanji underline mode with 2-dot width.

cancelKanjiCharacterMode()

Cancels Kanji character mode.

  • This command can be used only for the Japanese, Simplified Chinese, and Traditional Chinese models.
  • Settings of this command are effective until FS & is executed, ESC @ is executed, the printer is reset, or the power is turned off.

Notes for Japanese models:

  • Settings of this command affect character code processing only when JIS code system is selected by FS C.
  • When JIS code system is selected, if Kanji mode is canceled, the printer processes a character code as a 1-byte code of alphanumeric Katakana characters.
  • Kanji mode is canceled at default.

Notes for Simplified Chinese models:

  • If Kanji mode is canceled, the printer processes a character code as a 1-byte code of alphanumeric Katakana characters.
  • Kanji mode is selected at default.

Notes for Traditional Chinese models:

  • If Kanji mode is canceled, the printer processes a character code as a 1-byte code of alphanumeric Katakana characters.
  • Kanji mode is selected at default.

setKanjiCodeSystem(Kanji kanji)

Selects a Kanji character code system for the Japanese model.

  • This command is effective only with Japanese model.
  • When JIS code system is selected, Kanji mode should be specified by FS & to print Kanji characters.
  • When SHIFT JIS code system is selected, if the printer processes a character code that corresponds to the first byte of the Kanji code, the printer processes a consecutive byte as the second byte of the Kanji code.
  • Therefore, when this code system is selected, ASCII code that corresponds to the first byte of the Kanji code cannot be printed.
  • Kanji code processes the first byte and the second byte in order.
  • The command is effective until ESC @ is executed, the printer is reset, or the power is turned off.

setKanjiCharacterSpacing(int n1, int n2)

Sets left- and right-side spacing of the multi-byte code character n1 and n2, respectively.

  • Sets the left-side character spacing to [n1 × horizontal or vertical motion units].
  • Sets the right-side character spacing to [n2 × horizontal or vertical motion units].

Notes:

  • Settings of this command affect multilingual characters and user-defined characters.
  • When a character size is set to N times as large as a normal size, both right- and left-side character spacings are also set to N times as large as a normal size.
  • In Standard mode, the horizontal motion unit (perpendicular to the paper feed direction) is used.
  • in Page mode, the horizontal or vertical motion unit differs, depending on the starting position set by ESC T.
  • When the starting position is set to the upper left or lower right, the horizontal motion unit (perpendicular to the paper feed direction) is used.
  • When the starting position is set to the upper right or lower left, the vertical motion unit (paper feed direction) is used.
  • Different character spacing can be set for Standard mode and page mode.
  • When this command is set in Standard mode, character spacing for multilingual (except Thai) characters printed in Standard mode is set.
  • When this command is set in Page mode, character spacing for multilingual (except Thai) characters printed in Page mode is set.
  • If the horizontal or vertical motion unit is changed after setting the character spacing, the spacing between the characters is not changed.
  • The character spacing is effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • This command is used to change spacing between characters.

setKanjiQuadrupleSize(boolean enabled)

Turns quadruple-size mode on or off for multi-byte code character.

  • Settings of this command affect multilingual characters and user-defined characters.
  • When a double-height mode is specified, a character is enlarged based on a baseline of the character and when a double-width mode is specified, a character is enlarged based on the left side of the character.
  • Settings of this command are effective until FS ! is executed, GS ! is executed, ESC @ is executed, the printer is reset, or the power is turned off.

10 Miscellaneous Commands

initialize()

Clears the data in the print buffer and resets the printer modes to the modes that were in effect when the power was turned on.

  • Any macro definitions are not cleared.
  • Offline response selection is not cleared.
  • Contents of user NV memory are not cleared.
  • NV graphics (NV bit image) and NV user memory are not cleared.
  • The maintenance counter value is not affected by this command.
  • Software setting values are not cleared.

Notes:

  • The DIP switch settings are not checked again.
  • The data in the receive buffer is not cleared.
  • When this command is processed in Page mode, the printer deletes the data in the print areas, initializes all settings, and selects Standard mode.
  • This command can cancel all the settings, such as print mode and line feed, at the same time.
  • The command execution moves the print position to left side of the printable area. Also, the printer is in the status "beginning of the line".

sendRealTimeRequest(RealTimeRequest realTimeRequest)

Responds to a request in real time from the host computer.

  • This is a Real-time command. Refer to Notes of Real-time commands for usage note.
  • DLE ENQ 0 can be used in the following online recovery waiting status.
  • Online recovery after roll paper insertion in TM-U230 (See GS z 0)
  • Online recovery for the TM-L90 with Peeler (See GS z 0 (Peeler)).
  • Status waiting for the button to be pressed, while GS ^ is executed.
  • DLE ENQ 1 or DLE ENQ 2 is enabled only when a recoverable error occurs, with the exception of an automatically recoverable error. When a recoverable error occurs, after removing the cause of the error, the printer can recover from the error by transmitting this command without the printer being turned off. Errors recoverable by this command depend on the printer model.
  • in Page mode, if the printer recovers from a recoverable error by using DLE ENQ 2, the printer returns to Standard mode after clearing the data in receive and print buffers and changing the values set by ESC W to the default values.
  • After processing DLE ENQ 2, the print position is moved to left side of the printable area. Also, the printer is in the status "beginning of the line".

sendRealTimeRequestPulse(Pin pin, PulseTime pulseTime)

Outputs the pulse specified by t to connector pin. The pulse ON time is [t × 100 ms] and the OFF time is [t × 100 ms]

  • This is a Real-time command. Refer to Notes of Real-time commands for usage note.
  • This command is ignored in the following states:
  • In error status
  • When a pulse is being output to the drawer kick-out connector
  • During transmission of block data (Header – NUL)
  • When this command is disabled by GS ( D
  • It is not possible to output the pulses to the drawer kick-out connector pin 2 and 5 at the same time.

sendRealTimeRequestPowerOff()

Executes the printer power-off sequence and transmits the power-off notice.

  • Saving the maintenance counter values
  • Busy controlling for interface
  • Changing to waiting state of mechanism

Notes:

  • This is a Real-time command. Refer to Notes of Real-time commands for usage note.
  • This command can be used after enabling real time command processing with GS ( D.
  • All information and data stored in RAM will be deleted by processing this command.
  • When the printer has executed setup of power off processing, the printer transmits the power-off notice as shown below to the host.
Power-off notice Hex Decimal Number of bytes
Header 3Bh 59 1 byte
Identifier 30h 48 1 byte
NUL 00h 00 1 byte
  • Maintenance counter values are maintained by executing this command; therefore the maintenance counter values will be more accurate if the user uses this command before turning off the power switch.
  • The power-off notice can be differentiated from other transmission data according to specific data of the transmission data block. When the header transmitted from the printer is [hex = 3Bh / decimal = 59], treat NUL [hex = 00h / decimal = 0] as a data group and identify it according to the combination of the header and the identifier.

sendRealTimeRequestBuzzer(int a, int n, int r, int t1, int t2)

Sounds the buzzer with a sound pattern specified by a the number of times specified by r. a, n, r, t1, t2: different depending on the printers.

  • This is a Real-time command. Refer to Notes of Real-time commands for usage note.
  • This command can be used after enabling real time command processing with GS ( D.
  • The function of not sounding the buzzer affects autonomous buzzer sound (errors, paper-end) and buzzer sound with ESC ( A <Function 97>, buzzer sound during cutting, buzzer sound by generating the specified pulse.

sendRealTimeRequestStatus(Status status)

Transmits specified status in real-time as follows.

  • This is a Real-time command. Refer to Notes of Real-time commands for usage note.
  • The status or response format is the same as the format of the related command in the table above. See the description of the related command corresponding to m.
  • Battery status differs depending on printer model.
  • This command is not affected the setting of the corresponding ASB or response. This command transmits the ASB or response only once, even if it is disabled by the related command.
  • This command doesn't affect the setting of the corresponding ASB or response.

sendRealTimeRequestClearBuffers()

Clears all data stored in the receive buffer and the print buffer and transmits Clear response.

  • Do not use this command in a system in which the printer is used with the OPOS driver and Java POS driver that are provided by Seiko Epson Corporation.
  • This is a Real-time command. Refer to Notes of Real-time commands for usage note.
  • When this command is transmitted, do not transmit data that follows until the Clear responseis received.
  • If this command is sent while another command is processing, processing of the other command is canceled.
  • Exmaple: If this command is sent while NV graphics is defined, the definition will be canceled.
  • If this command is processed in Page mode, the printer returns to Standard mode. The setting of ESC W is changed to the default.
  • This command does not change or initialize settings of other commands (except for ESC W with Page mode selected).
  • The command execution moves the print position to left side of the printable area.
  • If this command is executed when a recoverable error has occurred, the printer recovers from the error. This is the same function as DLE ENQ 2.
  • When buffer clear processing is finished, the printer transmits the Clear response as shown below.
Clear Response Hex Decimal Number of bytes
Header 37h 55 1 byte
Identifier 25h 37 1 byte
NUL 00h 00 1 byte

setPeripheralDevice(int n)

Set peripheral device. n is different depending on printer

  • When the printer is disabled, it ignores all received data and commands with the exception of ESC = and real-time commands.
  • If ASB is enabled when the printer is disabled by this command, the printer transmits the ASB status message whenever the status changes. See the description of GS a for ASB function.
  • Settings of this command are effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • The default value when the power supply is turned on and when ESC @ is executed might be different.

setPageMode()

Switches from Standard mode to Page Mode.

  • This command is enabled only in Page mode. Page mode can be selected by ESC L.
  • When this command is executed, data in all the print areas is cleared, the print area set by ESC W returns to the default value, but the value set by ESC T is maintained.
  • The following commands switch the settings for Standard mode because these commands can be set independently in Standard mode and in Page mode:
  • ESC SP, ESC 2, ESC 3, ESC U, FS S
  • In Standard mode, the following commands are ignored.
  • CAN, ESC FF, GS $, GS ( Q, GS \
  • The settings of the following commands do not affect printing in Standard mode.
  • ESC T, ESC W, GS ( P
  • Standard mode is selected as the default.

setStandardMode()

Switches from Page Mode to Standard Mode.

  • This command is enabled only in Page mode. Page mode can be selected by ESC L.
  • When this command is executed, data in all the print areas is cleared, the print area set by ESC W returns to the default value, but the value set by ESC T is maintained.
  • The following commands switch the settings for Standard mode because these commands can be set independently in Standard mode and in Page mode:
  • ESC SP, ESC 2, ESC 3, ESC U, FS S
  • In Standard mode, the following commands are ignored.
  • CAN, ESC FF, GS $, GS ( Q, GS \
  • The settings of the following commands do not affect printing in Standard mode.
  • ESC T, ESC W, GS ( P
  • Standard mode is selected as the default.

generatePulse(Pin pin, int t1, int t2)

Outputs the pulse specified by t1 and t2 to the specified connector pin. The pulse for ON time is (t1 × 2 msec) and for OFF time is (t2 × 2 msec).

  • If t2 < t1, the OFF time is equal to the ON time.
  • It is not possible to output the pulses to the drawer kick-out connector pin 2 and 5 at the same time.

setMotionUnits(int x, int y)

Sets the horizontal and vertical motion units to approximately 25.4/x mm {1/x"} and approximately 25.4/y mm {1/y"}, respectively.

  • When x = 0, the default value of the horizontal motion unit is used.
  • When y = 0, the default value of the vertical motion unit is used.

Notes:

  • The horizontal and vertical motion units indicate the minimum pitch used for calculating the values of related commands.
  • The horizontal direction is perpendicular to the paper feed direction and the vertical direction is the paper feed direction.
  • In Standard mode, the following commands use x or y.
  • Commands using x: ESC SP, ESC $, ESC \, FS S, GS ( P, GS L, and GS W
  • Commands using y: ESC 3, ESC J, ESC K, GS ( P, and GS V
  • in Page mode, the following commands use x or y, when the starting position is set to the upper left or lower right of the print area using ESC T.
  • Commands using x: ESC SP, ESC $, ESC W, ESC \, GS ( Q, and FS S
  • Commands using y: ESC 3, ESC J, ESC K, ESC W, GS $, GS V, GS ( Q, and GS \
  • in Page mode, the following commands use x or y, when the starting position is set to the upper right or lower left of the print area using ESC T.
  • Commands using x: ESC 3, ESC J, ESC K, ESC W, GS $, GS ( Q, and GS \
  • Commands using y: ESC SP, ESC $, ESC W, ESC \, FS S, GS ( Q, and GS V
  • Setting of this command is effective until ESC @ is executed, the printer is reset, or the power is turned off.
  • The calculated result from combining this command with others is truncated to the minimum value of the mechanical pitch.
  • This command does not affect the current setting values.

11 POS examples

The examples will use tree sample tables with a few rows. You should create those tables before running the examples.

11.1 Tables

The tables for the example are:

  • terminal, a POS terminal information
  • ticketh, ticket header
  • ticketl, ticket lines

Copy
<script>
	
   // ======================================================
    // TERMINAL TABLE
    // ======================================================
    Ax.db.execute(`DROP TABLE IF EXISTS terminal`);
    
    Ax.db.execute(
`CREATE TABLE terminal (
        term_code char(20) not null,
        term_name varchar(20) not null,
        country_code char(3) not null,
        term_state varchar(20) not null,
        term_city char(10) not null,
        term_zipcode char(10) not null,
        term_direcc varchar(60),
        term_telef1 char(20)
)`
);
    Ax.db.execute(`INSERT INTO terminal VALUES('TERM_01','TERMINAL 01','SPAIN','BARCELONA','BARCELONA','08017', 'Vallespir 56','678876523');`);
       
    // ======================================================
    // TICKET HEADER TABLE
    // ======================================================
    Ax.db.execute(`DROP TABLE IF EXISTS ticketh`);	
	
    Ax.db.execute(`CREATE TABLE ticketh (
        term_code char(10) not null,
        login_name varchar(80),
        ticket_number char(20) not null,
        numfac char(20),
        nomdoc char(40) not null,
        fecini datetime year to second default current year to second not null,
        fecfin datetime year to second  
)`);

	Ax.db.execute(`INSERT INTO ticketh VALUES('TERM_01','Andrew John','T0956665-09','FTERM_0120-35234','DIRECT SALES',CURRENT -5 UNITS MINUTE,CURRENT);`);

    // ======================================================
    // TICKET LINES TABLE
    // ======================================================
    Ax.db.execute(`DROP TABLE IF EXISTS ticketl`);	
    
    Ax.db.execute(`CREATE TABLE ticketl (
        ticket_number char(20) not null,
        seqno smallint not null,
        codean char(15) not null,
        cantid_1 integer not null,
        price decimal(14,2) not null,
        discount decimal(14,2) not null,
        impnet decimal(14,2) not null,
        desvar varchar(255) 
)`);

    Ax.db.execute(`INSERT INTO ticketl VALUES('T0956665-09',2,'9875435435',1,45.25,0,45.25, 'Green Jacket Snow Patrol');`);
    Ax.db.execute(`INSERT INTO ticketl VALUES('T0956665-09',4,'9875433490',1,12.90,-10,11.61, 'Sunglasses New orizon');`);
</script>

11.2 POS recepit

The following example shows how to print a receipt ticket using some sample database tables.

Copy
<script>
    
    // ======================================================
    // READ DATA FROM DB
    // ======================================================
    var rs_terminal = Ax.db.executeQuery(`
        SELECT term_code,  term_name, country_code, term_state, term_city, term_zipcode, term_direcc,term_telef1
        FROM terminal WHERE term_code = 'TERM_01'
    `).toOne();
    
    var rs_ticketh = Ax.db.executeQuery(`
        SELECT login_name,ticket_number,  numfac, nomdoc, fecini, fecfin
        FROM ticketh WHERE term_code = 'TERM_01'
    `).toOne(); 
    
    let rs_ticketl = Ax.db.executeQuery(`
        SELECT seqno,  codean,   cantid_1, price,  discount, impnet,  desvar
        FROM  ticketl 
        WHERE ticketl.ticket_number = ?
        ORDER BY 1
    `, rs_ticketh.ticket_number).toMemory();
    
    let rs_ticketc = Ax.db.executeQuery(`
        SELECT seqno, pay_type,  pay_amount,  pay_return
        FROM ticketc
        WHERE ticketc.ticket_number = ?
        ORDER BY 1
    `, rs_ticketh.ticket_number).toMemory();
    
    // ======================================================
    // PRINT SECTION
    // ======================================================
    
    var m_cut ="-------------------------------------------";
    var pos = new Ax.pos.POSPrinter().build();
    
    // ==================================================== 
    // HEADER  
    // ====================================================   
    
    pos
        .setCharacterCodeTable(Ax.pos.POSPrinter.CharacterCodeTable.PC437)
        .setAlign("center")
        .setCharacterSize(Ax.pos.POSPrinter.Width.X3, Ax.pos.POSPrinter.Height.X3)
        .setUnderline(Ax.pos.POSPrinter.Underline.TWO_DOT)
        .setEmphasize(true)
        .text(rs_terminal.term_name)
        .printAndFeedLine()
        .setEmphasize(false)
        .setUnderline(Ax.pos.POSPrinter.Underline.CANCEL)    
        .text(rs_terminal.term_direcc).printAndFeedLine()
        .text(rs_terminal.term_zipcode + '-' + rs_terminal.term_city)
        .printAndFeedLine()
        .text(rs_terminal.term_telef1 )
        .printAndFeedLine()
        .text("NIF: A282382832")
        .printAndFeedLines(2)
        .setUnderline(Ax.pos.POSPrinter.Underline.TWO_DOT)
        .setEmphasize(true)
        .text(rs_ticketh.nomdoc).printAndFeedLine()
        .setEmphasize(false)
        .printAndFeedLines(2)
        ;
    
    // ====================================================   
    // Reduce character size
    // ==================================================== 
    
    pos
        .setCharacterSize(Ax.pos.POSPrinter.Width.X1, Ax.pos.POSPrinter.Height.X1)
        .setAlign("left")
        .text("Document:" + rs_ticketh.ticket_number).printAndFeedLine()
        .text(" Invoice:" + rs_ticketh.numfac).printAndFeedLine()
        .text("    Date:" + rs_ticketh.fecfin.toGMTString()).printAndFeedLine()
        .printAndFeedLine()
        .setAlign("center")
        .text("ITEMS")
        .printAndFeedLine()
        .setAlign("left")
        .text(m_cut)
        .printAndFeedLine()
        .text("Product")
        .printAndFeedLine()
        .text("Qty. EAN           Price   %dct Net total")
        .printAndFeedLine()
        .text("---- ------------- ------- ---- ---------")
        .printAndFeedLine()
        ;

    
    // ====================================================   
    // ROWS
    // ====================================================   
    var country_money= "Eur";    

    var total= 0;
   
    for (let ticketl of rs_ticketl) {
        var the_line1 = ticketl.desvar;
        var the_line2 = Ax.lang.String.format("%4d %13s %6.3f %4.0f%% %6.2f %3s", 
            ticketl.cantid_1,
            ticketl.codean,
            ticketl.price, 
            ticketl.discount,
            ticketl.impnet, 
            country_money
        ); 
        pos
        .text(the_line1)
        .printAndFeedLine()
        .text(the_line2)
        .printAndFeedLine();
        
        total = total + ticketl.impnet
    }
    var total_print = total + ' ';
    
    pos
        .printAndFeedLines(1)
        .text(m_cut)
        .printAndFeedLine();
    
    pos
        .setAlign("right")
        .text("TOTAL: " + total_print +  country_money + "     ")
        .printAndFeedLine()
        .printAndFeedLines(2)
        ;
    
    pos
        .setAlign("left")
        .text("Employee: " + rs_ticketh.login_name)
        .printAndFeedLine()
        .printAndFeedLines(2)
        .printAndFeedLines(2)
        .setAlign("center")
        .text("--- Thanks for your vist @ ---")
        .printAndFeedLines(5)
        .cut(Ax.pos.POSPrinter.CutA.PARTIAL)
        ;
    
    
    // ====================================================   
    // SEND TO LPR
    // ====================================================   
    console.log(pos.getBytes());
    
    var lpr = new Ax.net.LPRClient("192.168.12.125");
    lpr.setTimeout(5000);
    console.log(lpr.getQueueState());
    
    var job = lpr.print(pos.getBytes());
    console.log("PRINT ID:" + job);
    console.log(lpr.getQueueState());
</script>

11.3 PDF recepit

The following example shows a way to generate a receipt in PDF and use PDF and POS libraries to send it directly to a printer without using any specific driver (no need of CUPS).

Copy
<script>

    // ======================================================
    // READ DATA FROM DB
    // ======================================================
    var rs_terminal = Ax.db.executeQuery(`
        SELECT term_code, term_name, country_code, term_state, term_city, term_zipcode, term_direcc, term_telef1
        FROM terminal WHERE term_code = 'TERM_01'
    `).toOne();
    
    var rs_ticketh = Ax.db.executeQuery(`
        SELECT login_name,ticket_number,  numfac, nomdoc, fecini, fecfin
        FROM ticketh WHERE term_code = 'TERM_01'
    `).toOne(); 
    
    let rs_ticketl = Ax.db.executeQuery(`
        SELECT seqno,  codean,   cantid_1, price,  discount, impnet,  desvar
        FROM  ticketl 
        WHERE ticketl.ticket_number = ?
        ORDER BY 1
    `, rs_ticketh.ticket_number).toMemory();
    
    // ======================================================
    // PRINT SECTION
    //
    // Create a formatter on specific language and set 
    // numbers to 2 decimals
    // ======================================================pdfe

    var formatter    = new Ax.util.LocaleFormatter("es").setScale(2);
	var font_size    = 7;
	var paper_width  = 8.0;
	var paper_height = 12.0;

    // ======================================================
    // PRINT DATA
    // ======================================================
	
	var company_name = "ACME SPORTS";
    var company_logo = Ax.util.Base64.decode("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");
    
    var ticket       =  {
         total: 53.86,
         base: 65.18,
         iva: 11.32
    }
    
	var header1 = [
			"ACME SPORTS INC",
			"A373473733",
			"MENLO PARK",
			"38383 SAN FRACISCO (CA)",
			"+1 9394394939393",
			"service@apple.com",
			"ww.apple.com",
	];
	var header2 =  [
			"FACTURA SIMLIFICADA",
			"Fac. Simplif: 64200/00048/2018/T0046469",
			"TICKET: 00048005957",
			"FECHA: 27/12/2018 HORA: 10:03",
	];
	
	// ====================================================================
	// 1. Create document layout with page size and margins
	// ====================================================================

	var root = new Ax.fop.DocumentBuilder().createDocument(paper_width, paper_height, 0, 0, 0, 0);
	root.getSimplePageMaster().setMargins(0.5, 0.5, 0.5, 0.5);
	root.setDebug("");
	
	// ====================================================================
	// 2. Create a body flow
	// ====================================================================

	var flow = root.getBodyFlow();

	// ====================================================================
	// 3. Add header block (log, company, ...)
	// ====================================================================
	flow.addBlock()
		.setFontSize(font_size)
		.setTextAlign("center")
		.setPaddingAfter(5)
		// Add child on this block
		.build(c => {
			c.addBlock().build(logo => {
				logo.addExternalGraphic(company_logo).setContentWidth(1.0).setVerticalAlign("middle");
				logo.addText(company_name).setFontWeight("bold").setFontSize(17);
			});
			c.addBlock(header1);
			c.addLeader()
				.setLeaderLength("100%")
				.setLineHeight("10pt")
				.setRuleThickness("0.5pt")
				.setLeaderPattern("rule");
			c.addBlock(header2);
		}
	);
	
	// ====================================================================
	// 4. Add body block (lines) in a TABLE
	// ====================================================================
	var table = flow.addWrapper().setFontSize(font_size).addTable();
		
	table.addColumns([
		"Unid.",
		"Articulo",
		"PVP",
		"%Dto",
		"Precio",
	]).forEach(c => {
		c.getCell().setBorderBottomStyle("solid").setBorderBottomWidth(0.5);
		c.getCell().setPaddingTop(2);
		c.getCell().setPaddingBottom(2);
		c.getCell().setTextAlign("center");
	});
	
	for (var row of rs_ticketl) {
		table.getBody().addRow([ row.get("cantid_1"), row.get("codean"), formatter.format(row.get("price")), formatter.format(row.get("discount")), formatter.format(row.get("impnet")) ])
		.forEach(c => {
			c.setPaddingTop(1);
			c.setPaddingBottom(1);
			if (c.getColumnIndex() > 1)
				c.setTextAlign("end");
		});
		table.getBody().addRow([ row.get("desvar") ]).getCell(0).setColspan(5).setBorderBottomStyle("solid").setBorderBottomWidth(0.25);
	}
	table.setSpaceAfter("5pt");
	table.pack();


	// ====================================================================
	// 5. Add footer block (totals)
	// ====================================================================
	flow.addWrapper().setFontSize(font_size)
		.addListBlock()
		.setProvisionalDistanceBetweenStarts("6cm")
		.setProvisionalLabelSeparation("3pt")
		.addItem((l,b) => {
			l.addBlock("TOTAL IVA INCLUIDO").setTextAlign("end").setFontStyle("italic");
			b.addBlock(formatter.format(ticket.total)).setTextAlign("end").setFontWeight("bold");
		})
		.addItem((l,b) => {
			l.addBlock("BASE IMPONIBLE").setTextAlign("end").setFontStyle("italic");
			b.addBlock(formatter.format(ticket.base)).setTextAlign("end");
		})
		.addItem((l,b) => {
			l.addBlock("21% IVA").setTextAlign("end").setFontStyle("italic");
			b.addBlock(formatter.format(ticket.iva)).setTextAlign("end");
		})
	;
		
	// ====================================================================
	// 6. Add EOF separator
	// ====================================================================
	flow.addBlock()
		.addLeader()
		.setLeaderLength("100%")
		.setRuleThickness("0.5pt")
		.setLeaderPattern("rule")
	;
    
	// ====================================================================
	// GENERATE PDF
	// ====================================================================

	var receipt_fop = root.toFOP();
	let receipt_pdf = new Ax.fop.Processor().transform(receipt_fop);
	
	// ====================================================================
	// Convert PDF TO PNG IMAGE
	// ====================================================================
	var receipt_png = new Ax.pdf.Reader(receipt_pdf).getPreviewFromPage(1);
	
	// ====================================================================
	// Convert PNG image to POS RASTER IMAGE
	//
	// Epson TM M30 Epson TM-m30, 8 Points / mm (203 dpi)
	//
	// Paper is 8cm (8 / 2.5) = 3.14 inches
	//
	// 3.14 * 203 = 637.42 pixels
	// ====================================================================
	
	var receipt_bmp = new Ax.pos.POSImage(receipt_png).scaleToFit(600).toRaster();
	
	// ====================================================================
	// SAVE FILES FOR DEBUG
	// ====================================================================
   	new Ax.io.File("/tmp/PDFticket.fop").write(receipt_fop);
   	new Ax.io.File("/tmp/PDFticket.pdf").write(receipt_pdf);
	new Ax.io.File("/tmp/PDFticket.png").write(receipt_png);

	// ====================================================================
	// Crate A POS SEQUENCE (RASTER + CUT PAPER)
	// ====================================================================
	var pos = new Ax.pos.POSPrinter()
	    .build()
		.write(receipt_bmp)
		.printAndFeedLines(1)
	    .cut(Ax.pos.POSPrinter.CutA.PARTIAL);
	
	// ====================================================================
	// SEND POS SEQUENCE TO PRINTER
	//
	// VOILA! SEND A PDF DIRECTLY TO POS WITHOUT DRIVER!
	// ====================================================================
	var lpr = new Ax.net.LPRClient("192.168.12.125");
    lpr.setTimeout(5000);
    var job = lpr.print(pos.getBytes());
    console.log(lpr.getQueueState());


</script>