Sign In to Follow Application
View All Documents & Correspondence

Epos Printing

Abstract: A script language compatible with HTML is used to define methods or objects capable of communicating directly with an intelligent module for printing operations without going through a web browser s print selection option. A print API library provides the needed methods/objects for embedding into a web page. The intelligent module may be a stand alone electronic device or may be an intelligent device incorporated into a printer. The intelligent module may manage multiple printers directly or through a network and it functions to provide a communication bridge for translating/conveying communication between the print APIs on a web page and a target printer. The print API knows the fixed IP address of the intelligent module and define a print document or print commands and send it directly to the intelligent module by means of the known IP address.

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
24 April 2014
Publication Number
28/2015
Publication Type
INA
Invention Field
COMPUTER SCIENCE
Status
Email
Parent Application

Applicants

SEIKO EPSON CORPORATION
4 1 Nishi shinjuku 2 chome Shinjuku ku Tokyo 1630811

Inventors

1. NAKAMURA Hideo
c/o SEIKO EPSON CORPORATION 3 5 Owa 3 chome Suwa shi Nagano 3928502

Specification

[Title of Invention]
EPOS PRINTING
[Technical Field]
[0001] The present invention relates to printing over a TCP/IP network. More
specifically, it relates to printing in a point-of-sale (POS) network.
[Background Art]
[0002] Network printing refers to the sharing of printing resources on a computer
network. An early application of network printing is the print server, or printer server, as
illustrated in Fig. 1. A printer server 11 is a device that connects a client computer 13a
with a printer 15a on a common computer network 17. That is, client computer 13a sends a
print job to printer server 11; printer server 1 1 receives and holds (i.e., spools) the print
job; and when printer 15a becomes available, printer server 1 1 sends the held print job to
printer 15a for printing. It is to be understood that printer sever 11 may manage multiple
print jobs from multiple client computers 13a through 13n among multiple printers 15a
through 15i, and that the computer network may including both wired and wireless
communication links. Individual printers 15a through 15i may be local printers and/or
network printers, and may be connected directly to print server 1 1 via a direct cable
connection (such as a by a parallel cable, USB cable, proprietary cable, etc.) or by a wired
network connection (IEEE 802. 11 on standardized network category cable (i.e., CAT 5, 5e,
6), etc.) or by a wireless network connection (IEEE 802. 11 a/b/g/n, etc.) or by another
known wireless communication link (Bluetooth, HomeRF, HyperLan, etc.)
[0003] Printer server 11 is responsible for queuing (i.e., spooling) print jobs-while
it waits for a target printer to become available. It may also be responsible for re-ordering
or deleting print jobs in its queue, keeping track of printer activity (such as the number of
pages printed, the time of printing, etc.). As a result, printer server 11 generally supports
multiple industry standards and/or proprietary printing protocols, and thus may also
include printer drivers for each printer under its management. Although printer servers are
well suited for private networks, as the industry has moved toward using the prolific
internet protocol TCP/IP for both public and private networks, it has become desirable to
incorporate printing capabilities in public networks through internet interfaces.
[0004] The "web browser" is a popular internet interface (commonly used on the
Worldwide Web, i.e., WWW or Internet), which displays "web pages" based on the
Hypertext Markup Language (HTML). A markup language is a text-based language
system that uses "tags" to provide machine-executable instructions in a textual format that
is legible by a human reader. For example, tags may instruct the web browser about how to
format information for display on a web page (i.e., how to display the web page
information on a display screen), or to specify a desired executable function.
[0005] As the Internet grew, it became desirable to provide more functionality than
was available on early versions of HTML. To address this need, the Java language was
adapted to provide fully contained machine code that could be embedded within an HTML
web page. These small applications became known as applets. Java is a full-feature,
object oriented programming (i.e., OOP) language used in many applications, such as in
control applications for small devices and appliances.
[0006] Companies that created Java applications to control their devices wanted to
ease adoption of their devices by third-party manufactures without releasing proprietary
information regarding the control programs of their devices. This was achieved by the use
of application program interface (API) libraries that provided simplified interfaces to their
control applications, and thereby simplified the adoption of their control programs by
third-party manufacturers. Basically, an API is a set of common code pieces with specified
input and output requirements, such as are found in objects or classes in OOP languages,
and which provide an interface to a coded application. In this manner, a user does not need
to re-code a specific software tool or even to know how the software too is coded. The user
merely needs to know how to invoke the software tool, pass it any specified parameters, let
it execute the desired function, and receive any specified output. Although Java made web
pages more dynamic, Java applications (and applets) are compiled programs that are
provided in machine code, not script, and are therefore not readily legible by a human user.
Thus, the use of applets reduced the readability of HTML code.
[0007] JavaScript, which provides some of the dynamic capabilities of Java in a
script-language form, addresses this issue. Since JavaScript is a script language, HTML
can execute JavaScript code without the JavaScript code being pre-processed (i.e.,
compiled), and thus it remains in a script (i.e., textual) form. Like Java applets, JavaScript
may be embedded within an HTML web page, and the web browser will execute it when
the HTML web page is downloaded or in response to a triggering event. JavaScript permits
a web page to dynamically modify its content or add content to a current web page or send
content from that web page. JavaScript, and other script languages, permit web pages to
become more interactive by providing a bridge between the web browser and the operating
system on which the web browser is running. This permits a web page to incorporate
information from the user's local device environment, such the device's location and other
user information that the web browser and/or operating system deem safe to provide to the
web page.
[0008] With the adoption of JavaScript, software developers began providing
complete script applications designed to execute specific tasks. When these script
applications are packaged as a unit for insertion into a web page, they are sometimes
termed "widgets". Since each widget is as a complete script code, it may have a set of
expected inputs and a list of possible outputs, in a manner similar to how inputs and
outputs are used in Java applets As a result, APIs have also been developed for script
codes. For example, a company may produce a library of script codes to operate with a
specific device and provide a list of API's that facilitate the integration of their script codes
into a third party developer's code. Thus, the third party developer does not need to
understand how the company's device works or know how to program it; the third party
developer can quickly insert control of the company's device by using their provided API's
and/or widgets (i.e., script codes).
[0009] This leads to the topic of printing from a web browser, i.e., HTML printing.
Most web browsers provide a print function on their toolbar (i.e., a visual list of selectable
"software-buttons" for invoking different tasks), and when a user selects this print function,
the web browser accesses the local device's printer through the print APIs of the local
device's operating system. That is, the web browser does not know what type of printing
capabilities are available to the device on which it is running, if any, and the operating
system does not share this information with the web browser for security reasons. Thus, in
order for the web browser to print, it must pass this function request to the operating
system, which it may do by calling up the operating system's print interface.
r
[0010] Consequently, printing from a webpage requires going through a printer
dialogue box, as is illustrated in Fig. 2. The printer dialogue box 19 provides printer
information and provides options for a user to select from to format the printed document.
These options are determined from the printer's capabilities, which are in turn provided by
the printer driver. For example, printer dialogue box 19 may provide a printer- select option
2 1 to select among multiple available printers. Boxes 21a through 21c may provide
information about the selected printer, such as its status, type and location, respectively.
Other options may include a choice of printing in black-and-white or color, as indicated by
selection button 23. A user may also enter a range of pages to be printed, and/or select a
paper type or paper orientation, as indicated by selection buttons 25 and 27.
[0011] Some web browsers may provide a quick-print option wherein a currently
displayed web page is sent for printing without the use of a printer dialogue box by instead
sending the printing request to a default printer and accepting all the printer's default
settings. This request is sent to the local operating system's print API, and if it supports
quick printing and it has default print and its default settings assigned, then it will accept
the webpage for printing. Unfortunately, the entire web page is sent for printing. Thus,
web page developers have no control over how, or what part of, a web page is printed, or
what material, in general, is printed. The web page developers also do not know what
printers are available or their print-capabilities, nor do the web developers know what the
individual printer's default settings might be. To summarize, the web browser goes
through the local device's operating system (OS), and assumes that on the local OS will
access the appropriate printer driver.
[001?] The XML printer has been developed to reduce the reliability on printer
drivers, and to have more control over the formatting of printed documents. The XML
printer is not limited to web pages, and can serve as a local virtual printer. That is, it
responds to a print request as if it were a physical printer, but instead of producing a
physical printed document, it produces a script-language description of how the printed
document should look. This is similar to how the HTML script language is used to define
the look and format of a web page on a display screen. This script-language description can
then be sent to a physical printer that supports XML printing to produce a physical print¬
out. XML printers are typically used to maintain consistency of printing across different
platforms and document formats. For example, an XML print document file would assure
that a document prepared in Microsoft Word™ would print the same as the same document
prepared in Adobe Acrobat™.
[Summary of Invention]
[Technical Problem]
[0013] Thus, if one has an XML print document file and a printer (or printer driver)
capable of reading XML print document files, one may send the XML print document file
to the printer without need of printer driver requirements. The printer (or its printer driver)
would read the scripted description of how the document should look, and generate its own
print image for printing. Although the XML printer reduces the reliance on printer drivers,
and thus facilitates printing on a network, it does not provide any additional printing
control to the web page developer. That is, the web page developer still cannot control
printing from within a script application, or widget, but instead relies on the web browser
as a print interface.
[0014] JavaScript does not provide any assistance in this matter. Although the web
browser may interface with the local" operating system to access the local printer's API or
call upon an XML printer to create an XML print document, for security reasons the web
browser does not share this- information with its Java scripts. That is, the job of the
JavaScript is traditionally to define information on a web page and to provide dynamic
functionality; it is not the Java script's job to print documents. It is the web browser's job
to control the print function, and thus it does not share this control with internal script
applications. As a result, heretofore a JavaScript application cannot directly control a
printer. It must instead request that the web browser make a print request, which in turn
relays the request to the local OS, which then calls up the print dialogue box to setup a
local/network printer (real or virtual).
[0015] In spite of these difficulties, strides have been made toward providing webprinting,
i.e., printing over the Internet. For example, the Internet Printing Protocol (IPP)
provides a standard network protocol for remote printing over the internet, which removes
the need for individual print drivers on each user's machine. IPP provides control over
various printing needs, such as managing print jobs, media size, resolution, etc, and is
intended to provide users with similar methods and operations as if the printer were local.
Basically, IPP is a collection of open standards that define a network printing protocol, and
if a printer vendor has adopted this standard, then IPP allows a user to interact with that
vendor's printer in real-time in order to find out about the printer's capabilities, inquire
about the status of a print job or cancel a print job that has been submitted. As in the case
of a local printer, this dialogue would be through a printer dialogue box.
[0016] Another approaph toward providing internet printing is known as Google
Cloud Printing™, or GCP. This is a service provided by Google™ Corp., and it basically
permits developers to incorporate printing capabilities into their web pages and services by
sending print requests to Google Corp, letting Google Corp. prepare print jobs (limited to
PDF print jobs) and forward them to a user's pre-registered printer. Google™ Corp.
provides an API to permit developers to quickly insert the required code, and it uses a
standard printing dialogue box to create and submit PDF print jobs. As it would be
understood, this means that Google has access to all documents to be printed, which raises
questions of security and privacy for users. It is further note that another limitation of this
service is that it requires that the document-to-be-printed already be on the web, and not
just on the user's computer. Thus, the service cannot be used to print locally generated
documents that are not on the web.
[0017] What is needed is a way to increase a user's control over printing from
within a web browser.
[0018] It is further preferred that developer have direct access to, and control over,
a printer directly through a script application, such as a JavaScript widget, without having
to send a print request to a local web browser.
[0019] It also desired that a script application within web page be able to directly
generate and format the information to be printed, and to send the information directly to a
printer without necessitating a print dialogue box, or being limited by the content within
the web page.
[0020] It is further desired that a user have direct web printing capabilities without
depending upon any third party entity to manage print jobs.
[Solution to Problem] ·
[0021] The above objects are met in a method for creating a document in a web
application, and sending the document to a printer through network, the web application
executed by a web browser, the method comprising steps of: providing an intelligent
module adapted to connect to the printer, the intelligent module configured to be set an
address, to receive the document, and to send the document to the printer; embedding an
application program interface (API) in the web application, the API providing an address
property element configured to designate the address of the intelligent module, a first
method element configured to add commands for controlling the printer into a command
buffer and creating the document by accumulating the commands in the command buffer,
and a second method element configured to send the document to the intelligent module;
creating the document by means of the first method element embedded in the web
application; sending the document, by means of the second method element embedded in
the web application, to the intelligent module having the address designated by the address
property element; and sending the document from the intelligent module to the printer.
[0022] Preferably, the web application is placed in the intelligent module or a web
server, and the intelligent module is an electronic device.
[0023] The method may further comprise a step of printing the document on a
paper in the printer. One of the commands may be a text command for adding text for
printing to the command buffer. Additionally, one of the commands may be a text setting
command for adding a parameter for setting a property of the text, to the command buffer.
The text setting command may include a first text setting parameter specifying at least one
of a start position, an alignment, a language, a font, a style, a scale, or a size of the text.
The text command may also include a second text setting parameter specifying whether to
rotate the text, or whether to enable smoothing the text.
[0024] One of the commands may also be a -paper feed command for adding an
instruction of feeding the paper in the printer, to the command buffer.
[0025] Additionally, one of the commands may be an image command for adding a
raster image for printing, to the command buffer.
[0026] Preferably, the API includes a half tone property element, and the image
command converts a color image rendered in the web application into the raster image
data for printing according to a setting of the halftone property element. The halftone
property element may specify either one of a dithering, an error diffusion, and a threshold
for converting the color image into the raster image data.
[0027] Further preferably, the API includes a brightness property element, and the
image command converts the color image into the raster image data for printing according
to a setting of the brightness property element. The brightness property element may, for
example, specify a gamma value in the range 0.1-10 for correcting the brightness of the
raster image data.
[0028] In a preferred embodiment, the printer includes a non-volatile, i.e., NV,
memory for registering a logo identifiable by key code, and wherein the command includes
a logo command for adding a key code to the command buffer for printing the logo, the
added key code specifying (i.e., identifying) the logo registered in the NV memory.
[0029] One of the commands may also be a barcode command for adding an
instruction of printing a barcode, to the command buffer, said barcode command including
a barcode parameter, the barcode parameter specifying at least one of a type of the barcode,
width and height of the barcode, and/or data to be converted to the barcode.
[0030] Additionally, one of the commands may also a symbol command for adding
an instruction of printing a two-dimensional symbol, to the command buffer, said symbol
command including a symbol parameter, the symbol parameter specifying at least one of a
type of the two-dimensional symbol, an error correction level of the two-dimensional
symbol, or data to be converted to the twordimensional symbol.
[0031] The commands may also include a first line command for adding to the
command buffer an instruction of drawing a first line in a first direction and a second line
command for adding to the command buffer an instruction of drawing a second line in a
second direction, the first line command including a first line parameter specifying a start
position and an end position of the first line to define it as a line segment, and the second
line command including a second line parameter specifying a start position of the second
line and excluding any end position of the second line to define it as a continuous line.
Preferably, another of the commands is a third line command for adding an instruction of
finishing drawing the second line, which is started by the second line command, the third
line command including a third line parameter, the third line parameter specifying an end
position of the second line.
[0032] Further preferably, one of the commands is a page mode command for
adding an instruction of switching to a page mode to the command buffer, said page mode
being a print mode wherein a print area is defined, data is laid out in the print area, and the
print area is printed in a batch operation, said page mode command further adding
instructions for adding the print area to the command buffer including a coordinate
specifying the print area. Preferably, one of the commands is a second page mode
command for adding an instruction of ending the page mode to the command buffer. The
commands may further include a third page command for adding a setting for the page
mode, to the command buffer, the third page command including a third page parameter
specifying a direction for the printing in the page mode, or a coordinate specifying a start
position for the printing in the page mode. The commands may further include a forth page
command for adding an instruction of drawing a line or a rectangle in the page mode, to
the command buffer, the forth page command including coordinates specifying a start
position and an end position of the line or the rectangle in the page mode. The forth page
command may include a forth page parameter specifying a type of the line or of the
rectangle.
[0033] Additionally, one of the commands may be a paper cut command for adding
an instruction of cutting the paper, to the command buffer, said paper cut command
including a paper cut parameter specifying either to cut the paper without feeding the paper
or to cut the paper after feeding the paper.
[0034] Further preferably, a drawer connects to the printer, and one of the
commands is a drawer kick command for adding an instruction of kicking the drawer open,
to the command buffer. The drawer kick command preferably includes a first drawer
parameter specifying an ON time duration of a signal that is applied to open the drawer.
Preferably, the drawer is connected to the printer by two connectors, and the drawer kick
command includes a second drawer parameter specifying either one of the connectors
connecting the drawer and the printer.
[0035] Additionally, the printer may have a buzzer and one of the commands may
be a buzzer command for adding an instruction of turning on the buzzer to the command
buffer. The buzzer command may include a buzzer parameter specifying a pattern o a
number of times that actuation of the buzzer is repeated.
[0036] The address property element may be configured to set a timeout period,
and the method may preferably include a step of cancelling a print job for printing the
document in the printer designated by the address property element in response to the
elapse of the timeout period.
[0037] The address property element may further be configured to set a device
identification of the printer for sending the document to the printer. The API may further
include a receive event element configured to obtain a response message including one of a
print result, an error code and/or a printer status from the printer, the may method further
include a step of receiving the response message from the printer that is connected to the
intelligent module designated by the address property element. Preferably, the error code
and/or the printer status indicates the occurrence of one of an automatically recoverable
error and/or an unrecoverable error. Further preferably, the printer has a coyer, and the
error code and/or the printer status indicates when the cover is open. Also preferably, the
printer has an auto cutter, and the error code and/or the printer status indicates when an
error occurred in the auto cutter. The printer may also have a sensor detecting if paper is in
the printer, and the error code and/or the printer status indicates when no paper is detected
by the sensor. The error code and/or the printer status may also indicate if the document
sent to the intelligent module contains a syntax error.
[0038] Preferably the error code and/or the printer status indicate if the printer with
the device identification does not exist. If the printer has a communication port connected
to the intelligent module, the error code and/or the printer status may indicate that if an
error was detected on the communication port. Further preferably, the address property
element is configured to set a timeout period for cancelling a print job for printing the
document in the printer, and the error code and/or the printer status indicates if the timeout
period elapses. The error code and/or the printer status may further indicate if printing is
successfully completed. Assuming that the printer is adapted to connect to a drawer by a
connector, the error code or the printer status may indicate the status of a predetermined
pin of the connector. The error code or the printer status may also indicate if the printer is
offline or waiting to be brought back online, or if no response was received from the
printer. The printer may also have a switch for feeding paper. In this case, the error code
and/or the printer status may indicate if the paper is being fed by operation of the switch.
The printer may also have a buzzer, in which case the error code and/or the printer status;
may indicate if the buzzer is turned on. The printer or the intelligent module may have a
spooler configured to spool a print job for printing the document, and the error code or the
printer status may indicate if the spooler has stopped.
[0039] Preferably the API includes a constructor for initializing the API. In this
case, the method may further include a step of initializing the API before the step of
creating the document. ,
[0040] The objects may also be met in a method for creating a document in a web
application, and sending the document to a printer through network, the web application
executed by a web browser, the method comprising steps of: providing an intelligent
module adapted to connect to the printer, the intelligent module configured to be set an
address, to receive the document, and to send the document to the printer; embedding an
application program interface (API) in the web application, the API providing a first object
for creating the document, the object including a command buffer, a first method element
for processing the first object element, the first method element configured to add
commands of controlling the printer, into the command buffer, and creating the document
by accumulating the commands in the buffer, a second object for sending the document, an
address property element configured to designate the address of the intelligent module, and
a second method element for processing the second object, the second method element
configured to send the document in the buffer to the intelligent module; creating the
document by the first method element embedded in the web application; sending the
document by the second method element embedded in the web application, to the
intelligent module having the address designated by the address property element; and
sending the document from the intelligent module to the printer.
[0041] Preferably in this approach, the API includes a first constructor for
initializing the first object, and a second constructor for initializing the second object, the
method further comprising steps of: initializing the first object before the step of creating
the document; and initializing the second object before the step of sending the document.
[0042] This method may further comprise a step of printing the document on a paper
in the printer.
[0043] The API may also include a receive event element configured to obtain a
response message including one of a print result, an error code or a printer status, from the
printer, and the method may further comprise a step of: receiving the response message
from the printer, which is connected to the intelligent module designated by the address
property element, the second object being initialized before the step of receiving the
response message.
[0044] The objects may also be met in a method for creating a document in a web
application, and sending the document to a printer through a network, the web application
executed by a web browser, the method comprising steps of: providing a printer configured
f
to be set an address; embedding an application program interface (API) in the web
application, the API providing: (i) an address property element configured to designate
the address of the printer, (ii) a first method element configured to add commands for
controlling the printer, into a command buffer, and creating the document by accumulating
the commands in the buffer, and (iii) a second method element configured to send the
document in the buffer to the intelligent module; creating the document by the first
method element embedded in the web application; sending the document by the second
method element embedded in the web application, to the printer having the address
designated by the address property element; and printing the document.
[0045] The objects may also be met in a system for creating a document in a web
application, and sending the document to a printer through network, the web application
executed by a web browser, the system comprising: an intelligent module adapted to
connect to the printer, the intelligent module configured to be set an address; a web server
connected to the intelligent module through the network, the web application installed in
the web server; an application program interface (API) embedded in the web application;
the API including; (i) an address property element configured to designate the address of
the intelligent module, (ii) a first method element configured to add commands, for
controlling the printer, into a command buffer and creating the document by accumulating
the commands in the buffer, and (iii) a second method element configured to send the
document in the buffer to the intelligent module; wherein the document is created by the
first method element and is sent by the second method element, to the intelligent module
having the address designated by the address property element, and the intelligent module
sends the document to the printer.
[0046] Preferably, a drawer is connected to the printer, and one of the commands is
a drawer kick command for adding an instruction of kicking the drawer open, to the
command buffer.
[0047] The printer may also have a buzzer, and one of the commands may be a
buzzer command for adding an instruction of turning on of the buzzer to the command
buffer.
[0048] The above objects are also met in a method for sending an image rendered
in HTML5 Canvas, to a printer, and printing the image by the printer, the method
comprising steps of: providing an intelligent module adapted to connect to the printer, the
intelligent module configured to be set an address; embedding an application program
interface (API) in a web application, the API providing: (i) a first property element
configured to designate a conversion method for converting the rendered image into the
raster image data, (ii) a second property element configured to designate the address of the
intelligent module, and (iii) a method element configured to convert the image into the
raster image data and send the converted raster image data to the intelligent module;
converting the image into the raster image data by the method element, according to the
conversion method designated by the first property element; sending the raster image data
to the intelligent module by the method element, according to the address designated by
the second property element; and sending the raster image data from the intelligent module
to the printer.
[0049] The above objects may also be met in a method for creating or editing a
document in an application, the document adapted to be sent to a printer through a network,
the application adapted to be executed by a web browser, the method comprising steps of:
providing commands of controlling the printer adapted to be added into a command buffer,
and the document being created by accumulating the commands in the command buffer;
displaying a setting screen enabled to set an address of the printer to an address property
element; displaying an edit screen enabled to edit and/or create the document, the edit
screen including icons, each of the icons corresponding to one of the commands of
controlling the printer; displaying an input box enabled to input a parameter of the
command on the edit screen, if a specified one of the icons, which corresponds to the
command, is selected on the edit screen; adding to the command with the parameter,
which is selected or input in the edit screen , to the command buffer.
[0050] Preferably, this method further includes a step of converting the document
edited or created on the edit screen to XML language code, and displaying the code. The
method may further include a step of converting a first portion of the document edited or
created on the edit screen to a print preview, and displaying the print preview. Optionally,
the method may also include a step of displaying a button for sending the document to the
printer having the address designated by the address property element.
[0051] The above objects may further be met in a method for creating a document
in a web application, sending the document to a printer, and obtaining a status of the
printer through a network, the web application executed by a web browser, the method
comprising steps of: providing an intelligent module (the intelligent module preferably
being a physical electronic device) adapted to connect to the printer, the intelligent module
configured to be set an address, to receive the document, and to send the document to the
printer; embedding an application program interface (API) in the web application, the API
including: (i) an address property element configured to designate the address of the
intelligent module, (ii) a status event element configured to check one or more statuses of
the printer, and (iii) an open method element configured to enable to operate the status
event element; setting the address of the intelligent module to the address property
element; and enabling to operate the status event element so as to receive a specified status
of the printer.
[0052] Preferably the API includes a close method element configured to disable
operation of the status event element, the method further comprising a step of disabling the
status event element.
[0053] The API may also include an interval property element specifying a time
interval for upgrading the status of the printer, the method further comprising a step of
setting the time interval in the interval property element.
[0054] The API may further include a status property element specifying the status
last obtained from the printer.
[0055] Additionally, the method may further include a step of setting a device
identification of the printer, wherein the address property element is configured to
designate the device identification of the printer for receiving the status of the printer
specified by the device identification.
[0056] Optionally, the web application may be placed in the intelligent module or a
web server.
[0057] The status of the printer may include a status indicating whether the printer
is online or offline.
[0058] Additionally, the printer may have a cover, and the status of the printer may
include a status indicating whether the cover is open or closed.
[0059] Preferably, the API further provides: (i) a first method element configured
to add commands of controlling the printer, into a command buffer, and creating the
document by accumulating the commands in the buffer, and (ii) a second method element
configured to send the document in the buffer to the intelligent module. In this case, the
method may further include the steps of: creating the document by the first method
element embedded in the web application; sending the document by the second method
element embedded in the web application, to the intelligent module having the address
designated by the address property element; and sending the document from the intelligent
module to the printer.
[0060] The method may also include a step of printing the document on a paper in
the printer. In this case, the status of the printer may include a status indicating whether the
paper supply in the printer is ended or nearly ended. Preferably, a drawer is connected to
the printer, and one of the commands is a drawer kick command for adding an instruction
of kicking the drawer open, to the command buffer. The status of the printer may include a
status indicating whether the drawer is open or closed.
[0061] The above objects may also be met in a system for creating a document in a
web application, sending the document to a printer, and obtaining a status of the printer
through a network, the web application executed by a web browser, the system comprising
of: an intelligent module adapted to connect to the printer, the intelligent module
configured to be set an address; a web server connected to the intelligent module through a
network, the web application installed in the web server; an application program interface
(API) embedded in the web application, the API including: (i) an address property element
configured to designate the address of the intelligent module, (ii) a status event element
configured to check one or more statuses of the printer, and (iii) an open method element
configured to enable operation of the status event element; wherein the status of the printer,
designated by the status event element, is sent from the printer designated by the address
property element, to the web browser, after the open method element enables operation of
the status event element.
[0062] Preferably, the printer has a cover, and the status of the printer includes a
status indicating whether the cover is open or closed.
[0063] Further preferably, the API further provides a first method element
configured to add commands of controlling the printer into a command buffer, and creating
the document by accumulating the commands in the buffer, and a second method element
configured to send the document in the command buffer to the intelligent module, wherein
the document is created by the first method element and is sent by the second method
element, to the intelligent module having the address designated by the address.
[0064] Preferably, a drawer is connected to the printer, and one of the commands is
a drawer kick command for adding an instruction of kicking the drawer open, to the
command buffer.
[0065] The status of the printer may further include a status indicating whether the
drawer is open or closed.
[0066] Other objects and attainments together with a fuller understanding of the
invention will become apparent and appreciated by referring to the following description
and claims taken in conjunction with the accompanying drawings.
[Brief Description of Drawings]
[0067] In the drawings wherein like reference symbols refer to like parts.
Fig. 1 illustrates a typical printer server arrangement.
Fig. 2 illustrates a typical printer dialogue box.
Fig. 3 is a first embodiment in accord with the present invention.
Fig. 4 is a second embodiment in accord with the present invention.
Fig. 5 shows a command buffer and illustrates some examples of control
commands in accord with present invention.
Fig. 6 illustrates a specific example of the present invention as applied in a POS
system.
Fig. 7 shows examples of the type of printing that may be implemented by means
ofePOS-Print API.
Fig. 8 shows examples of the type of printing that may be implemented by means
of the ePOS-Print-Canvas API
Fig. 9 is an example of print flow in accord with an embodiment of the present
invention.
Fig. 10 shows a system construction example in accord with the present invention.
Fig. 11 shows the registering of a web application into a TM intelligent printer.
Fig. 2 provides an example of a sample program screen created using the ePOSPrint
API in accord with the present invention.
Fig. 13 is an example of a settings window that may be called up in response to
actuation of the settings button of Fig. 12.
Fig. 14 shows a first sample print-out using the ePOS-Print API and a second
sample print-out using the ePOS-Print-Canvas API.
Fig, 15 shows a sample flow chart illustrating a process step flow from its initial
display state up to print job completion.
Fig. 16 shows a sample flow chart illustrating a process step flow for coupon
issuance.
Fig. 7 is an example of an operating environment in accord with the present
invention.
Fig. 18 shows a process flow for configuring the environment settings for a sample
program.
Fig. 19 is an example of Network Settings for the TM Intelligent Printer.
Fig. 20 is an example of device settings.
Fig. 2 1 shows examples of devices settings that may be configured.
Fig. 22 show a sample work flow for programming using the ePOS-Print API.
Fig. 23 shows an example of using the HTML tag to embed an ePOS-Print
API.
Fig. 24 shows an example a program code segment for creating a print document.
Fig. 25 illustrates an example of script code for creating a text print document.
Fig. 26 provides sample script code creating a graphic print document.
Fig. 27 illustrates sample code for creating a page mode print document.
Fig. 28 provides sample code for transmission of a print document.
Fig. 29 provides a table with details about the printer end point address.
Fig. 30 provides sample code for implementing a callback function.
Fig. 31 provides an example of an error handling method for a callback function.,
Fig. 32 illustrates the use of the status event notification function to check the
printer status without printing.
Fig. 33 illustrates a workflow for programming using ePOS-Print-Canvas API.
Fig/34 shows sample code for embedding an ePOS-Print-Canvas API.
Fig. 35 provides sample code for rendering in HTML5-Canvas.
Fig. 36 provides sample code for transmitting a print document for printing.
Fig. 37 shows sample code for printing a result receipt and callback function.
Fig. 38 provides sample code for error handling by a callback function.
Fig. 39 provides sample code for using the status event notification function to
check the printer status without printing.
Figs. 40, 41, 42a and 42b list some of the methods and components of the ePOSPrint
API.
. Fig. 43 provides sample code for the constructor of an ePOS-Print Builder object.
Fig. 44 provides examples of types of alignment parameters.
Fig 45 provides the return value for the ePOS-Print Builder object.
Fig. 46 illustrates exception error.
Fig. 47 provides sample code illustrating the use of text alignment.
Fig. 48 provides sample code to set the line feed space to 30 dots.
Fig. 49 illustrates Boolean values for the rotate parameter.
Fig. 50 provides sample code to set text rotation.
Fig. 5 1 shows escape sequences to indicate nonprintable characters in a character
string.
Fig. 52 provides sample code illustrating the use of addText(data).
Fig. 53 provides examples of parameter "lang" to designate a target language.
Fig. 54 provides sample code illustrating the use of method addTextLang(lang).
Fig. 55 illustrates sample values for the font parameter.
Fig. 56 provides sample code illustrating the use of the addTextFont(font) method.
Fig. 57 illustrates possible values for parameter "smooth".
Fig. 58 provides sample code illustrating the use of method
addTextSmooth(smooth).
Fig. 59 describes parameter values for dw.
Fig. 60 describes parameter values for dh.
Fig. 6 1 provides sample code to set the text size to double width and double height.
Fig. 62 illustrates possible values for parameter "width".
Fig. 63 illustrates possible values for parameter "height".
Fig. 64 shows sample code to set a horizontal scale of x 4 and a vertical scale of x 4.
Fig. 65 shows possible values for parameter "reverse".
Fig. 66 shows possible values for parameter "ul".
Fig. 67 shows possible values for parameter "em".
Fig. 68 shows possible values for parameter "color".
Fig. 69 provides sample code to set the underline style.
Fig. 70 shows sample code to set the print position at 120 dots from the left end.
Fig. 7 1 shows sample code to feed paper by 30 dots.
Fig. 72 shows sample code to feed paper by 3 lines.
Fig. 73 shows sample code to start a new line after printing a character string.
Fig. ,74 shows sample values for parameter "color" within the addlmage method.
Fig. 75 shows sample values for parameter "mode" within the addlmage method.
Fig. 76 provides sample code to print an image 300 dots wide and 300 dots high in
page mode.
Fig. 77 shows sample code illustrating the use of the addLogo method.
Figs. 78 to 8 1 provide examples of barcode types.
Fig. 82 illustrates some possible values for the hri parameter.
Fig. 83 provides sample code illustrating how to print barcodes.
Figs. 84 and 85 provide examples of 2D-Code type descriptions for parameter
"data" within the addSymbol method.
Fig. 86 provides sample values for parameter "type" within the addSymbol method.
Fig. 87 provides sample values for parameter "level" within the addSymbol method.
Fig. 88 provides sample code to print two-dimensional symbols.
Fig. 89 illustrates some style parameters for the addHline method.
Fig. 90 shows sample code to draw double horizontal lilies.
Fig. 9 1 provides examples of parameter style for the addVLineBegin method.
Fig. 92 provides sample code to draw thin vertical lines at 100 dots and 200 dots
from the left end.
Fig. 93 provides examples of parameter style for the addVLineEnd method.
Fig. 94 provides sample code to draw thin vertical lines at 100 dots and 200 dots
from the left end:
Fig. 95 shows sample code to print characters "ABCDE" in page mode.
Fig. 96 shows sample code to specify the print area with the origin (100, 50), a
width of 200 dots, and a height of 30 dots and print the characters "ABCDE".
Fig. 97 provides some examples for parameter "dir" of method addPageDirection.
Fig. 98 provides sample code to print characters "ABCDE" by rotating them 90
degrees clockwise.
Fig. 99 shows sample code to specify (50,30) for the print start position in the area
specified by the addPageArea method and print the characters "ABCDE".
Fig. 100 provides examples of the "style" parameter in method addPageLine.
Fig. 101 provides sample code to draw a thin solid line between start position (100,
0) and end position (500, 0).
Fig. 102 provides examples of the "style" parameter in method addPageRectangle.
Fig. 103 shows sample code to draw a rectangle with a thin double line, with the
start position (100, 0) arid the end position (500, 200) as its vertexes.
Fig. 104 shows sample types for method addCut.
Fig. 105 provides sample code to perform a feed cut operation.
Fig. 1 6 shows examples of parameter "drawer" for method addCut.
Fig. 107 shows examples of parameter "time" for method addCut.
Fig. 108 shows sample code to send a lOOrnsec pulse signal to pin "2" of a drawer
kick connector.
Fig. 109 shows examples of buzzer patterns.
Fig. 110 shows examples of how to set parameter "repeat" in method addSound.
Fig. I l l shows sample code to repeat a sound pattern "A" three times.
Fig. 112 shows sample code illustrating the use of method to String().
Fig. 113 shows the specifying of the halftone processing method to be applied to
monochrome (two-tone) printing.
Fig. 114 shows sample code to set the halftone type as error diffusion.
Fig. 115 provides sample code to set brightness as 2.2.
Fig. 116 provides sample code to clear the command buffer and reset it to its initial
state.
Fig. 117 provides sample code illustrating the use of ePOSPring(address).
Fig. 118 provides sample code illustrating the use of the send(request) method.
Fig. 119 provides sample code illustrating the use of the open() method.
Fig. 120 provides sample code illustrating the use of the close() method.
Fig. 121 provides an example of the use of the address property.
Fig. 122 provides an example of using the enabled property.
Fig. 123 provides an example of using the interval property.
Fig. 124 provides an example of using the status property
Fig. 125 shows some' properties of the response object.
Fig. 126 shows value of success.
Fig. 27 shows value of code.
Fig. 28 shows value of status.
Fig. 29 show sample code to create and send a print document, and to display the
print result in a message box.
Fig. 30 lists some properties of the error object.
Fig. 31 shows sample code to create and send a print document and to display the
HTTP status code in a message box when a communication error occurs.
Fig 32 provides an example of using the onstatuschange property.
Fig 33 provides an example of using the ononline property.
Fig 34 provides an example of using the onoffline property.
Fig 35 provides an example of using the onpoweroff property.
Fig 36 provides an example of using the foncoverok property.
Fig 3,7 provides an example of using the oncoveropen property
Fig 38 provides an example of using the onpaperok event.
Fig 39 provides an example of using the onpapernearend event.
Fig 40 provides an example of using the onpaperend event.
Fig 4 1 provides an example of using the ondrawerclosed event.
Fi 42 provides an example of using the ondraweropen event.
Fig 43 provides a list of some components of the ePOS-Print-Canvas API
Fig 44 is sample code illustrating the creation of a new ePOS-Print Canvas API
object.
Fig 45 shows examples of parameter "cut".
Fig 46 shows examples of parameter "mode".
Fig 47 provides sample code to print Canvas(IT>='myCanvas').
48 is sample code illustrating the use of the open() method.
Fig 49 is sample code illustrating the use of the close() method.
Fig 50 is sample code illustrating the use of the address property.
Fig. 5 1 is sample code illustrating the use of the enabled property.
Fig. 52 is sample code illustrating the use of the interval property.
Fig. 53 is sample code illustrating the use of the status property.
Fig. 54 illustrates some halftone properties.
Fig 55 is sample code illustrating the use of the halftone property.
Fig. 156 is sample code illustrating the setting of the brightness property.
Fig. 157 shows some properties of the response object.
Fig. 158 shows value of success.
Fig. 159 shows value of code.
Fig. 160 shows value of status.
Fig. 161 shows sample code to print Canvas(ID=myCanvas), and to display the
print result in a message box.
Fig. 162 lists some properties of the error object.
Fig. 163 shows sample code to print Canvas(ID-myCanvas), and to display the
HTTP status code in a message box when a communication error occurs.
Fig. 164 is sample code illustrating the use of onstatuschange event.
Fig. 165 provides an example of using the ononline property.
Fig. 166 provides an example of using the onoffline property.
Fig. 167 provides an example of using the onpoweroff event.
Fig. 168 provides an example of using the oncoverok event
Fig. 169 provides an example of using the oncoveropen event.
Fig. 170 provides an example of using the. onpaperok event.
Fig. 171 provides an example of using the onpapernearend event.
Fig. 172 provides an example of using the onpaperend event.
Fig. 173a provides an example of using the ondrawerclosed event.
Fig. 173b provides an example of using the ondraweropen event.
Fig. 174 provides a sample main page (i.e. index-. html, or home page) for an ePOS
Print editor in accord with the present invention.
Fig. 175 shows the Setting screen resulting from selection of the "Setting" tab of
the ePOS Print editor in accord with the present invention.
Fig. 176 provides a table summarizing some of the options provided by the Setting
screen.
Fig. 177 provides another view of the Edit screen of the ePOS Print editor in accord
with the present invention.
Fig. 178 shows a sample preview image of the ePOS Print editor in accord with the
present invention.
Fig. 179 provides a sample view of the present ePOS-Print editor with the Print tab
selected.
Fig. 180 shows an import screen in accord with the present invention.
Fig. 181 provides a sample view of the present ePOS-Print editor with the API tab
selected.
[Description of Embodiments]
[0068] Previously, in order to print from a web page on the Internet, a user
typically had to go through a web browser's print-select button on the web browser's
interface or go through a third-party printing service on the Internet. The web browser
controls access to local resources, such as printers. Basically, the web browser functions
as an interface to the local operating system, which in turn controls access to any installed
printer drivers. If one wishes to print through a third-party printing service on the Internet,
then the document to be printed needs to also exist on the Internet, and not just on the
user's local device. In either case, the user is required to go through a printer dialogue box
to select from among available, registered printers and printing options, none of which are
known to the web page from which one wishes to print.
[0069] To improve the capabilities of network printing, the present invention
endeavors to increase the capabilities of web applications, i.e., web pages, and in particular
to increase the capabilities of script applications (i.e., widgets, methods, etc.) executed
within a web page to directly control network printers and non-network printers without
having to go through the web browser's print-select button or relying on a third-party
Internet printing service.
[0070] The printers in the preferred embodiments may be local printers and/or
remote printers. That is, the present invention permits web page script applications to
create a print document and communicate with, and control, a printer without requiring
explicit printing permission or printing assistance from the web browser. In addition to the
print document being directly created by the script application, the print document may
does not need to exist on the Internet in order to be printed. As a preferred implementation,
whenever a script application is mentioned in the following, discussion, it is discussed as
implemented in the JavaScript language, which is a Java-based script language. It is to be
understood however, that the present invention may be implemented using other script
languages known in the art.
[0071] Since the present invention adds printing capabilities to a web page, and the
web page is typically accessed via a web browser, the preferred embodiment of the present
invention includes a local computing device capable of running a web browser. To
facilitate the use of the present invention with existing network and non-network printers,
it is further preferred that the web page communicate via an interface box (i.e., device,
apparatus, or module) capable of receiving printing instructions from the web page and
translating them to an appropriate communication format/language for the connected
printers. Preferably, the interface box provides translation services for communication
between the web page and the printers, and further provides any needed help for creating a
print document appropriate for a given printer. Since the interface box has computing and
decision-making capabilities, it is an intelligent device. So for ease of discussion, the
interface box is hereinafter termed, an "intelligent module".
[0072] If a printer is not a non-network printer, the local printers is connected to
local computing device (on which the web browser is installed) via the intelligent module
(which is preferably a physical computing apparatus/device). Alternatively, if the printer is
a network printer, it is preferred that the intelligent module still function as a
communications interface with the local printer. Furthermore, in a network environment,
the intelligent module may function as a communication interface for multiple (network
and non-network) printers.
[0073] Although the present invention may be implemented in any computing
environment having a web browser and printer(s), for ease of explanation and as an
example of a preferred embodiment, the present invention is herein described as
implemented within a retail environment. In particular, the present invention is described
as implemented in a point-of-sale (i.e., POS) system, or POS network. It is to be
understood however, that the present invention may be implemented other networked and
non-networked computing/printing environments.
[0074] In POS systems, a point-of-sale device is located at each checkout station to
implement a commercial transaction and maintain a record of the transaction. The checkout
station is thus the location within a retail environment (or retail establishment) where a
physical customer pays a merchant for goods and/or services. A POS system may include
multiple POS devices, which may be thought of as electronic cash registers that
incorporate computing and/or networking capabilities. POS devices typically have an
adjacent (or integrated) receipt printer on which a receipt (or summary of a transaction) is
printed for the customer's records. In order to accommodate transaction summaries of
indefinite length, the receipt printer is typically a "roll-paper printer" (i.e., a printer that
prints on a roll of paper, or "paper roll") and cuts the printed portion from the roll of paper
at the end of the printed transaction summary). It is to be understood, however, that the
present invention is compatible with sheet printer, and other non-roll-paper printers.
[0075] POS devices are typically networked within a POS system and
communicate with a central server that keeps track of transactions for bookkeeping and
inventory purposes, and may additionally provide information to the POS device, such as
product prices (or updates to produce prices), coupons, promotional advertisements,
product information (such as product description and/or availability), and other data. The
central server may be part of a local area network and/or a wide area network, and may
optionally be distributed across multiple servers. Conceivably, the central server may also
be accessible via the Internet.
[0076] Since POS system networks are comprised of specialized and computerized
POS devices, they can be complicated and costly to purchase, set-up, maintain, and
upgrade. The cost and difficulty of implementing and maintaining POS systems is further
increased by the use of different model POS devices (from different manufactures) and
different model printers (from different manufactures) within the same POS system
network. As it would be understood, the different POS devices may have different
operating platforms (i.e., run on different operating systems, OS) with different capabilities,
and the different model printers may have different driver requirements/capabilities for the
different operating platforms.
[0077] The following discussion illustrates how the present invention may reduce
the cost and complexity of setting up, maintaining, and upgrading a POS system network;
particularly one that combines different model POS devices and different model printers.
[0078] In a preferred embodiment, a POS system is implemented over a network,
and commercial transactions are managed via a web page application (i.e., a web page)
maintained within a network server and accessible by remote web terminals functioning as
POS devices to implement and record sales transactions. Alternatively, the web page may
be maintained the intelligent module, and the POS devices may access the web page from
the intelligent module. In either case, each POS device accesses the web page via a web
browser, and uses the web page to print to a printer. Preferably, commercial transactions
are also entered and recorded via the web page.
[0079] A printer, which is typically adjacent to a POS device, may be controlled by
the network server or controlled by the POS device. In both cases, it is preferred that
communication with the printer be conducted via the intelligent module, as is explained
more fully below.
[0080] Alternatively, the present invention may also be implemented without the
use of any network server. In this case, the intelligent module may provide the web page to
the POS device(s), and convey communication between the POS device(s) and the
printer(s). This implementation does not preclude the POS device from being part of a
computer network.
[0081] In this manner, the operating platform of the POS device is not a limiting
factor; all that is needed is that the POS device be capable of running a web browser,
irrespective of its operating platform. Indeed, the POS device may be implemented using a
simplified computing device having minimal computing power. For example, the POS
device may be implemented as a budget computer tablet having basic computing and
communications capabilities.
[0082] With reference to Fig. 3, a web page 3 1 is shown within a web browser 33.
Preferably, web browser 33 is run within a computing device (i.e., data processing device
such as computing device 5 1 shown in Fig. 4), which may function as a POS device. As it
is known in the art, web browser 33 provides an interface for accessing web pages within a
TCP/IP network, such as the Internet, and typically includes an address field 35 in which
one may enter a network address for accessing a desired web page. For example, web page
3 1 may be maintained (i.e., placed) in intelligent module 37 and downloaded to web
browser 33. Alternatively, web page 3 1 may be incorporated into (i.e., be resident by
default in) the computer device on which web browser 33 resides. Web page 3 1 is
preferably written in a markup language, such as HTML and/or its variants, and supports
script languages, such as JavaScript.
[0083] In the present embodiment, web browser 33 is in communication with one
or more printers, PrinterlD l and PrinterID_2, via intelligent module device 37. Optionally,
these printers may be POS printers (i.e., receipt printers) and may optionally print onto
respective rolls of paper 39a and 39b.
[0084] Preferably, intelligent module 37 communicates with web page 3 1 via at
least one print application program interfaces, i.e., print API, labeled API l through API_3.
For illustration purposes, print application program interfaces API l through API 3 are
shown embedded within web page 31, and they provide an interface to respective print
script applications, such as Print_Script_App_l through Print_Script_App_3. If desired,
the functionality of all print script applications may be combined and accessed via a single
print API. Further preferably, the print script applications are Java script applications that
provide various printer functions, as described below, and are accessible via at least one
print API. API_1 through API 3 (and their respective print script applications
Print_Script_App_l through Print_Script_App_3) may be provided as part of a library of
print APIs to web page developers to incorporate the present printing capabilities.
[0085] API l through API_3 provide a print interface for web page 31, and print
script applications Print Script App l through Print_Script_App_3 are designed to
provide printing capabilities and/or to communicate with intelligent module 37. The print
APIs and print script applications may be embedded together as a unit within web page 31,
such as illustrated by API_l+Print_Script_App_l and by API_2+Print_Script_App_2. In
this case, both may be addressed under the common term of "API" or "print API", and this
"API" would thus handle both the interfacing with web page 31, the creation of a print
document, and the sending of the print document to the intelligent module 37.
[0086] As it may be understood by one versed in the art, print APIs may be
instances of a specific software class (as defined in object oriented languages), and they
may be created by means of a constructor (as defined in OOP languages). In one
embodiment, a print API may include a constructor for initializing the API.
[0087] In another embodiment, the print API and its corresponding print script
application may be split such that the print API is embedded the within the web page 31,
but its corresponding print script application is maintained separate within intelligent
module 37. This is illustrated by API 3 being embedded within web page 3 1 while its
corresponding printer script application, Print_Script_App_3, is maintained within
intelligent module 37. In this manner, some of the computing resources needed by
Print_Script_App3 may be offloaded from the device on which web browser 33 resides
and transferred to intelligent module 37. In this case, API 3 would send all data necessary
for defining a printed document to Print_Script_App3, which would then create a
corresponding print document within intelligent module 37 and send the resultant print
document to a specified printer. The separating of the print API from its corresponding
print script application also permits the updating of the script application within the
intelligent module 37 without altering the print API within the web browser. In this case,
web developers may be provided with a library of print API for incorporation into their
web pages, but the details of the implementation of the corresponding print script
applications may be maintained in intelligent module 37 or in a network server and thus be
kept hidden from the web developers.
[0088] In a preferred embodiment, each print API communicates directly with
intelligent module 37. Therefore, intelligent module 37 is configured to receive (i.e., be
assigned) a network address, illustrated as IP ADD l . This network address may be a
static address or a dynamically assigned address.
[0089] Each print API is preferably provided with an address property element (i.e.,
address data field) configured to receive the network address of intelligent module 37, by
which each print API may address its communication to intelligent module 37. If the
network address of intelligent module 37 is static (i.e., fixed), the address property element
within each API may be manually set. Alternatively if the network address of is dynamic, a
network address resolution service may be used to determine the network address of
intelligent module 37, and have the resolved address entered in each print API's address
property element. Further preferably, the address property element is configured to set a
timeout period. This timeout period may indicate a maximum amount of time allotted for
receiving an acknowledgement, or other response, from the intelligent module. Preferably,
the print API includes a step, or process, for canceling a print job (or a submitted print
request) in response to the timeout period elapsing.
[0090] Further preferably, each printer is identifiable by name, or identification
code (ID) or (network) address. For ease of discussion, both printer ID and/or printer
network address are designated by reference characters "PrinterlD 1" and "printerID_2".
Further for ease of discussion, whenever printer ID is used, it is to be understood that
"printer network address" may be substituted since the present invention envisions using a
printer network address in place of printer IDs, Further preferably, the name, printer ID
and/or printer address is provided to the print API's. The print API's may therefore
designate a target printer by name, printer ID and/or printer network address to receive a
printing request, or print document.
[0091] In one embodiment, the print API's address property element is expanded to
also receive the ID (or network address) of the target printer. For example, the address
property element may be configured to set the device identification (the ID or network
address) of the target printer, which designates it as the printer to which the document to be
printed should be sent. The print API may further have a receive event element configured
to obtain a response message from the printer. The response message may include a print
result, an error code and/or a printer status. The error code or the printer status may
indicate one of an automatically recoverable error or an unrecoverable error occurred. Thus,
the print API may receive a response message from the printer via the intelligent module
designated by the address property element. In this manner, communications between a
target printer and a print API are conducted via the intelligent module specified in the
address property element. Additionally, the address property element, may be configured
to set a timeout period. This timeout period may indicate the maximum amount of time
allotted for receiving an acknowledgement, or other response, from the intelligent module
or from the printer. Preferably, the print API includes a step, or process, for canceling a
print job (or a submitted print request) for printing a document in the printer designated by
the address property element in response to the timeout period elapsing.
[0092] Alternatively, the print APIs may send a printing request to intelligent
module 37 without designating a specific printer, and intelligent module 37 may select a
printer based on proximity information to the device that issued to the printing request or
by determining which printer is available (i.e., not busy). In this case, intelligent module
37 is preferably aware of the locations of the devices on which the web pages are running
and the locations of the printers in order to select the printer closest to the device that
issued the printing request. Further alternatively, once intelligent module 37 has selected a
printer for a specific device that issues a print request, the selected printer preferably
becomes assigned to that device and all future print requests from the same device are sent
to the same selected printer.
[0093] Since each print API embedded within web page 3 1 can directly
communicate with intelligent module 37 by means of its address property element (which
holds the network address of intelligent module 37), each print API may submit printing
requests at any time without user intervention or without submitting a print request to the
web browser 33 on which it resides! For example at a checkout station, a print API may
submit for printing a description of each product item being summed for purchase, as the
product item is identified (i.e., scanned) by the web browser and added to the overall
transaction summary. Thus, web page 3 1 may generate a print document of any data
(including newly generated data and/or portion(s) of a display screen), and submit the print
document for printing at any desired time. For example, the API may generate parts of a
print document in segments (i.e., at different times) and then combine and/or arrange the
segments into a composite print document to be sent to the printers. Alternatively, since in
the present embodiment the preferred printers are roll printers, the print API may send
multiple segments to the printers for printing, and send an instruction for cutting the
printed portion of the paper roll at the end- of a printing session (i.e., at the end of a
commercial transaction at a checkout station).
[0094] In operation, a print script application (or the API itself if it is combined
with its corresponding print script application as a single unit) includes a first method
element (i.e., a first executable routine, or executable method) to define a print document
by accumulating (i.e., adding) printer control instructions into a command buffer and then
executing the accumulated printer control instructions. Preferably, the print script
application (or API) further include a second method element (i.e., a second executable
routine) configured to send the defined print document to intelligent module 37. A printed
document may thus be created by executing the first and second method elements, in turn.
[0095] In the present discussion, all or some of the recited software methods may
be replaced by software objects, as defined in object oriented languages.
[0096] Intelligent module 37 is preferably implemented as a data processing device
(including, but not limited to: a control unit circuit and/or central processing unit; and/or
volatile/non-volatile electronic memory; and/or data/control registers; and/or signal busses;
and/or electronic communication interfaces; and/or lookup table(s)). Intelligent module 37
may be implemented as a stand-alone unit in its own physical encasement, or may
alternately be incorporated into (or physically attached to) a printer, server, or other
electronic device. In operation, Intelligent module 37 receives a print document from a
print API embedded within web page 31, converts it (if necessary) into a suitable print
document for a specified (or otherwise designated) printer, and sends it for printing to the
designated printer. Optionally, intelligent module 37 may include printer drivers for each
of the printers, and utilize the printer drivers to define the suitable print document.
Alternatively, intelligent module 37 may receive a record of the command buffer from a
print API, create a print document by executing the printer commands in the command
buffer, and send the created print document to the appropriate printer. Still alternatively,
the commands received from a print API may be general printing descriptions, .such as
formatting information and print content data, and the intelligent module may then
determine the necessary printer commands to generate a print document that best
resembles the general printing descriptions based on the capabilities of the designated
printer, and then send generated print document to the designated printer.
[0097] In the above discussion, the created print document may be an XML print
document or a bitmap print document or other document description format known in the
art.
[0098] As illustrated, printers PrintlD l and PrintTD_2 may be POS printers that
prints on jjaper rolls 39a and 39b, respectively. The printers may further have accessories
such as a (fully or partially removable) cover 4l, a drawer 43, a buzzer 45, and a paper
cutter (or auto cutter) 47. These accessories are preferably controllable via the printer
commands mentioned above, and relayed to the printers by intelligent module 37. Among
the error codes or printer statuses that a target printer may send to a print API, as discussed
above, may be an indication that the cover is open. Similarly, an error code or printer
status may indicate that an error occurred in the auto cutter. The printer may also have a
sensor that detects if paper is in the printer, and an error code or printer status may indicate
if no paper is detected by the sensor. Alternatively, an error code or printer status may
indicate if the document sent to intelligent module 37 contains a syntax error. Alternatively,
an error code or printer status may indicate if a print API's target printer, as designated by
the submitted printer ID, does not exist.
[0099] As it would be understood PrintlD l and PrintID_2 have communication
ports for communicating with intelligent module 37. The error code or the printer status
may indicate if an error is detected on the communication port. An error code or printer
status may further indicate if the timeout period, mentioned above, elapses. Alternatively,
the error code or printer status may indicate that printing operation is successfully
completed. As mentioned above, the printer may be connected to a drawer by a connector,
which may have at least one pin. n this case, the error code or the printer status may
indicate the status of a predetermined pin of the connector.
[00100] Alternatively, the error code or printer status may indicate that the printer is
offline or waiting to be brought back online, or that no response was received from the
printer.
[00101] PrintlD l and PrintID_2 may further have a switch for feeding paper 39a
and 39b, and the error code or the printer status may indicate when paper is being fed by
operation of the switch. The error code or printer status may further indicate when buzzer
45 is turned on (i.e., actuated). The printers or intelligent module 37 may have a spooler
configured to spool a print job for printing a document, and the error code or the printer
status may indicate if the spooler has stopped. ,
[00102] In the embodiment of Fig. 3, the present invention is implemented as a
system that may, or may not, be networked. That is, the local device on which web
browser 33 runs may be a stand-alone device not connected to any specific central server.
Irrespective of whether the local device is a stand-alone device or networked with other
POS devices or server(s), intelligent module 37 may function as a printer control bo
relaying and translating communication (and generating any necessary command and
instruction) signals between the printers and web page 31.
[00103] Fig. 4 illustrates a network implementation of the present invention. All
elements similar to those of Fig. 3 have similar reference characters and are described
above. As illustrated, network 55 includes computing device 51, server 53, intelligent
module 37 and printer PrinterID_2. Computing device 51, server 53 and intelligent module
37 communicate via a network communication channel 57, which may be a wired channel,
wireless channel or a combination of both. Computing device 51, which may be a
computer tablet or other data processing device, accesses web page 3 1 via web browser 33.
Optionally, web page (i.e., web application) 3 1 is accessed from server 53 or from
intelligent module 37. That is, web application 3 1 may be maintained (i.e., stored or
placed) in (and accessed from) server 53 and/or in intelligent module 37.
[00104] Optionally, printer PrinterID_2 may include non-volatile memory 59. In one
embodiment, multiple predefined images, such as logos, may be stored in memory 59 and
identified/addressed by ID code, such as LOGO l through LOG0 3.
[00105] As is explained above, the print API defines a command buffer in which
printer control commands are accumulated. Various types of control commands may be
accumulated in the command buffer. Fig. 5 illustrates some examples of printer control
commands 6 1 that may be accumulated in the command buffer 63 in accord with the
present invention. Each command may result in one or more instructions necessary for
executing the command.
[00106] For example with reference to Fig. 5, one of the commands may be a text
command for adding text for printing to the command buffer. That is, the text command
may define a data field of definite or indefinite length in which text to be printed is inserted.
Another command may be a text setting command for adding parameters that define (i.e.,
set) properties of the text, to the command buffer. Such properties may include the size,
font, color, etc. of the inserted text. The text setting command may set multiple different
parameters. For example, a first text setting parameter may specify a start position for
printing on paper, and another may set alignment requirements. Other parameters may set
language, font, style, scale, and/or size of the inserted text. Additional text setting
parameters may include a parameter for specifying whether to rotate the printed text, or
whether to enable smoothing the text.
[00107] Another command may be a paper feed command for adding to the
command buffer one or more instructions for feeding the paper in the printer.
[00108] Still another command may be an image command for adding a raster image
for printing. As it is known in the art, a raster image is typically a rectangular area that
defines an image as viewed on a display medium one point at a time, such as bitmap, and
defines an image file. Preferably, the print API includes a halftone property element, and a
color image rendered in the web application, is converted into the raster image data for
printing, by the image command, according to a setting of the halftone property element.
Preferably, the halftone property element specifies at least one of a dithering, error
diffusion, and/or threshold for converting the color image into the raster image data. The
print API may also include a brightness property element, which may specify a gamma
value in the range 0.1-10.0 for correcting the brightness of the raster image data. In this
case, the image command may convert the color image into the raster image data for
printing according to a setting of the brightness property element.
[00109] As is illustrated in Fig. 4, PrinterID_2 may include non-volatile, NV,
memory 59 for registering at least one logo. In this case, it is preferred that there be a logo
command for adding a key code that identifies a specific logo to the command buffer for
printing the identified logo. That is, the key code specifies a specific logo (i.e., logos
LOGO l through LOG0 3) registered in NV memory 59.
[00110] Another command may be a barcode command for adding an instruction of
printing a barcode, to the command buffer. Preferably, multiple barcode types are
supported, and the barcode command includes a barcode parameter that specifies at least
the barcode type desired, the width and height of the barcode, and/or data to be converted
(i.e., encoded) into the selected barcode type.
[00111] Another command may be a symbol command for adding an instruction of
printing a two-dimensional symbol, to the command buffer. The symbol command may
include a symbol parameter that specifies at least one of a type of the two-dimensional
symbol, an error correction level of the two-dimensional symbol, or data to be converted to
the two-dimensional symbol.
[00112] Preferably, another command is a first line command for adding an
instruction of drawing a first line to the command buffer. The first line command may
include a first line parameter that specifies a start position and an end position of the first
line. The present invention may also include a second line command for adding to the
command buffer an instruction of starting the drawing of a second line of indefinite length,
and providing a second line parameter that specifies a start position of the second line but
provides no line parameter for specifying any end position of the second line. In this case,
it is preferred that the present invention include a third line command for adding an
instruction of finishing (i.e., stopping) the drawing of the second line started by the second
line command. The third line command may include a third line parameter that specifies
an end position for the second line.
[00113] Still another command may be a page mode command for adding to the
command buffer an instruction of switching to a page mode, and adding a print area in the
page mode. That is, the page mode may be a print mode wherein the print area is defined,
data is laid out in the print area, and the print area is printed in a batch operation. The page
mode may further include at least one coordinate specifying a desired placement location
for the print area. A second page mode command may add instruction(s) for ending the
page mode initiated by the first page mode command. A still third\page mode command
may at least one setting (i.e., setting parameter) to the page mode defined by the first page
mode command. The third page mode command may include a third page parameter that
specifies a direction for the printing in the page mode, or coordinate(s) specifying a
starting position for the printing in the page mode. A fourth page mode command may
further add instruction(s) for drawing a predefined shape, such as a line or a rectangle, in
the page mode defined by the first page mode command. The forth page command may
include coordinates specifying a start position and an end position of the predefined shape,
i.e., the line or the rectangle, within the page mode. The forth page command may further
include a forth page parameter that specifies a type choice for the shape. For example, the
forth page parameter may specify a line type or a rectangle type.
[00114] Another command maybe a paper cut command for adding to the command
buffer an instruction for cutting the paper, i.e., the printing medium, such as by means of
paper cutter 47. The paper cut command may include a paper cut parameter specifying
either one of cutting the paper without first feeding the paper or cutting the paper after
feeding the paper.
[00115] As is shown Fig. 3, a printer in accord with the present invention may have
a drawer 43 connected to it. Assuming this is the case, another command may be a drawer
kick command for adding an instruction of kicking (i.e., releasing or unlatching) the
drawer open to the command buffer. Preferably, the drawer kick command includes a first
drawer parameter that specifies an ON time duration of a signal that is applied to open the
drawer. Further preferably, the drawer is connected to the printer by two connectors, and
the drawer kick command includes a second drawer parameter specifying (the release of)
either one of the connectors that connect the drawer and the printer.
[00116] As shown in Fig. 3, PrinterID_2 may include a buzzer 45. If so, then
another command may be a buzzer command for adding to the command buffer an
instruction of turning on (or actuating) the buzzer. The buzzer command may include a
buzzer parameter specifying a pattern or a number of times that actuation of the buzzer is
repeated.
[00117] A specific example of the present invention as implemented in a POS
system is as follows.
[00118] Fig. 6 illustrates a specific example of the present invention as applied in a
POS system 79. As shown, the present example includes a server 71, web browser 73 and
intelligent module 75, as discussed above. For illustration purposes, intelligent module 75
is identified as "TM intelligent Pinter" to indicate that it may consist of the combination of
one or more intelligent modules in communication with one ore more printers. Web
browser 73 may be executed within a POS device (such as an electronic/computerized cash
register), and web browser 73 accesses a web page 77, as discussed above. For ease of
discussion, the printing mechanism/method of the present invention as applied in the
present POS system 79 is termed "ePOS-Print".
[00119] ePOS-Print provides functionality to control POS printers in a multiplatform
environment. Using ePOS-Print, data can be directly printed from Web browsers
on personal computers, smart phones, or tablet computers to TM intelligent printers (i.e.,
the combination of one or more intelligent modules and one or more printers).
[00120] In addition, print images rendered in HTML5 Canvas can be printed. As it
is known in the art, HTML5 Canvas is a container for graphics, and provides a way to
draw graphics via scripting. ePOS-Print provides the API (equivalent to "print API" in the
present discussion) for print commands. When a print document (Request) is sent via
HTTP from the host (i.e., the device or terminal on which web browser 73 is running) to an
ePOS-Print Service of a TM intelligent printer 75, ePOS-Print processes the printing of
that document and returns a response document (i.e., a response).
[00121] The present implementation includes many features. For example, as long
as the present system is in a network environment, a terminal with an HTML5-supported
web browser can perform printing from anywhere. Installation of printer drivers and plugins
are not required. No PCs or servers are required for printing. The present system allows
printing from public and private network clouds. The present invention further allows
printing in any languages supported by web browsers, in general. The present invention
automatically checks the status of the TM printer before printing. There is no need for
checking the status of the TM printer in advance. The present system does not respond to a
printer's function to automatically send its status (such as an AutoStatusBack function).
Instead, the present system is capable of sending an empty print command and checking
(i.e., determining) the status of the TM printer based on the result of the command
transmission. Nonetheless, to change the printer settings, utility programs dedicated to each
printer, or other utility programs, may be used. Thus, the present invention allows printing
by TM printers via TM intelligent printers. The present invention thus may provide both an
ePOS-Print API and an ePOS-Print-Canvas API. As is discussed above, the present
invention further allows device fonts to be used for printing, allows barcode printing,
allows printing of images rendered in HTML5 Canvas and allows TrueType fonts to be
used for printing. Preferably, the f allows device fonts to be used for pnnting and allows
barcode printing. Further preferably, the ePOS-Print-Canvas API allows printing of images
rendered in HTML5 Canvas and allows TrueType fonts to be used for printing.
[00122] Fig. 7 shows examples of the type of printing that may be implemented by
means of the ePOS-Print API. Two receipts 8 1 and 83 are shown. Receipt 8 1 shows
examples the execution of various print commands, as discussed above. Receipt 8 1 shows
examples of printing a logo, text alignment (centered), paper feed, and paper cut. Receipt
83 shows examples of,executing print commands for: printing a raster image, printing text
in a double-sized width style, scaling such as scale=x6 (horizontal) and x4 (vertical),
alignment (center), and printing a barcode.
[00123] Fig. 8 shows examples of the type of printing that may be implemented by
means of the ePOS-Print-Canvas API. In the present example, the graphic created by
HTML5 Canvas includes a barcode, which is typically a monochrome graphic (or image)
and a pictorial graphic immediately above the barcode. The pictorial graphic may be
monochrome, or grayscale, or color.
[00124] Fig. 9 is an example of print flow in accord with an embodiment of the
present invention. The present example shows a server, a wireless LAN router, web
browser, a TM intelligent printer, and printers that can be controlled. Preferably, the web
application (i.e., web page) in accord with the present invention may be placed (i.e.,
maintained) in the server, and the web browser displays the web application. In operation,
the Web browser may send print data to the TM intelligent printer (or intelligent module),
the TM intelligent printer sends the print data to the appropriate printers under its control,
and these printers print the data. The TM intelligent printer then returns a response
document to the web browser (i.e., to the terminal that runs the web browser).
[00125] The ePOS-Print API may provide multiple functions. For example, it can
provide print setting functions, such as alignment (for example text alignment), line feed
space, text rotation, and page mode. It can also provide multiple character data settings (for
example, text characters), such as language, font (device font), double-sizing, scale,
smoothing, and print position. It can also provide character style settings, such as
inversion of black and white, underline, and bold. It may further include printer operation
controls such as paper feed setting (in dots count or in line count). The ePOS-Print API
preferably also provides image printing (i.e., raster image and NV graphics), barcode
printing, and two dimensional symbol printing. It may further provide a ruled line setting,
drawer kick function, buzzer function, ESC/POS command transmission, response
document acquisition (print result, printer status and/or system error status).
[00126] The ePOS-Print-Canvas API may also provide multiple functions. For
example, it may provide printing of images (raster images) rendered in HTML5 Canvas,
feed and cut functions, and response document acquisition (such as print result, printer
status, and/or system error status).
[00127] The preferred web browser is therefore a browser that supports HTML5.
Examples of web browsers that support HTML5 are Windows Internet Explorer 9 or later,
Mozilla Firefox 3.6 or later, Google Chrome 7 or later, Safari in iOS4.0 or later, and the
standard browser in Android 2.2 or later.
[00128] A system construction example in accord with the present invention is
shown in Fig. 10. This example again shows a (web) server (in which the web applications,
i.e., web pages, are placed), a terminal (on which a web browser that supports HTML5 is
installed), an optional wireless LAN router, a TM intelligent printer, and the printers that
can be controlled by the TM intelligent printer. Like before, the TM Intelligent Printer
receives and prints print-data sent from the web browser and/or controls other devices, and
the printers under its control print the print-data received from the TM intelligent printer.
[00129] Fig. 11 shows the registering of a web application into a TM intelligent
printer. As is explained above, the terminal executes (i.e., accesses) the web application
(i.e., web page) using a browser, and sends device control (which may include print data)
to the TMintelligent printer! The TM intelligent printer then prints the received print data
sent from the web browser.
[00130] In a preferred embodiment of the present invention, some restrictions may
be imposed. For example, a printer's drawer and buzzer may not be used together.
Naturally, the buzzer function cannot be used if the printer does not have a buzzer.
[00131] The present invention may also respect restrictions provided by specific
web browsers. For example, Internet Explorer 9 does not allow printing to the printer to be
performed from security-protected Web pages (which are typically identified by the
address header "HTTPS").
[00132] Fig. 12 provides an example of a sample program screen created using the
ePOS-Print API in accord with the present invention. The following examples assume that
the web server is configured using IIS (Microsoft Internet Information Services). Box 1
illustrates a queue ticket, box 2 illustrates a coupon, and box 3 identifies a "settings"
actuation button. In one embodiment, box 1 may print queue ticket numbers and box 2
naturally prints coupons.
[00133] Fig. 3 is an example of a settings window that may be called up in response
to actuation of the settings button of Fig. 12. The settings may include the network address
(i.e., IP address) of the intelligent printer (i.e., of the intelligent module as explained
above), the device ID of the target printer, a timeout setting, and an option to print in
grayscale.
[00134] Fig. 14 shows a first sample print-out using the ePOS-Print API and a
second sample print-out using the ePOS-Print-Canvas API. As illustrated, the ePOS-Print-
Canvas API is preferably used to print graphics.
[00135] Fig. 15 shows a sample flow chart illustrating a process step flow from its
initial display state up to print job completion. This is an example of queue ticket number
issuance printed using the ePOS-Print API. The process begins by opening the web
application (i.e., the sample program web page), step 91. The settings are then entered, step
93. Some settings may include the IP address of the TM intelligent printer, the device ID
of the printer to be controlled and a (print) timeout time. The proper queue ticket is crated
by selecting (i.e., clicking) an "Issue queue ticket number" option, as illustrated by step 95. An
ePOS-Print Builder Object may then be called to create the print data (step 95). The ePOSPrint
Object then creates the prints (step 99).
[00136] Fig. 16 shows a sample flow chart illustrating a process step flow for
coupon issuance. This is an example of the ePOS-Print Canvas API. The process flow
begins by opening the web page in accord with the present invention (step 101). If needed,
one may enter settings (step 103). Example of settings are the IP address of the TM
intelligent printer, the device ID of the printer to be used for printing, and a print timeout
time. One then clicks (i.e., actuates/selects) an "issue coupon" option (step 105). The web
page then renders the coupon in HTML5 Canvas (step 107). Finally in step 109, the web
page issues a print request to the TM intelligent printer (i.e., intelligent module) using the
ePOS-Print Canvas API (i.e., the ePOS-Print Canvas API Object).
[00137] Fig. 17 is an example of an operating environment in accord with the
present invention. Basically, Fig. 17 provides a system configuration diagram for some
sample programs discussed below. Fig. 17 shows a web server with a fixed IP address of
(192.168.192.10). The web server may configure the environment settings. The web
server communicates directly with a wireless LAN router, which may have a fixed IP
address of, for example, (192.168.192.1). The wireless LAN router provides a
communication path (such as a wired connection) between the TM Intelligent Printer
(which may have a fixed IP address of, for example (192.168.192.20)) and an optional
second printer that may be controlled by the TM Intelligent Printer. Preferably, the
optional second printer also has a fixed EP address of, for example (192. 168. 192.21). In the
present implementation, the wireless LAN router provides a wireless communication link
to a terminal that has an HTML5- supported web browser, and on which the web page in
accord with the present invention may be executed. In the present example, the terminal
has a dynamic network address (illustrated as (192.168.192.XXX)), and which can be
issued by DHCP For example, the wireless LAN router may issue an IP address to the
terminal by DHCP.
[00138] Fig. 18 shows a process flow for configuring the environment settings for a
sample program. In step 1 1 1, one begins by configuring the router settings, such as SSID,
IP address, DHCP, and allocated IP address. Next in step 113, one configures the computer
settings. This may be divided into a first sub-step 113a of configuring the network settings
for the computer, such as the IP address, and a second sub-step 113b of configuring the
web server on the computer. In step 115, one registers the program to execute. In the
present example, a sample program called ePOS-Print_API_UM_E_Sample is registered.
One then provides terminal settings (step 117), such as configuring the wireless LAN (Wi-
Fi) settings of the terminal to match the router settings so as to enable network connection.
In step 119, the network settings for the TM Intelligent Printer are configured. This may
be done via a web browser. Next in step 121 the network settings for the printer to be
controlled are configured. These settings may be configured by using a network setting
utility, as is known in the art. Optional device ID Settings are provided in step 123. These
settings may be configured via a web browser, but are not required in the present sample
program. Finally in step 125, any needed program settings may be configured via a web
browser. It is noted that no program settings are needed in the present sample program.
[00139] Fig. 19 is an example of Network Settings for the TM Intelligent Printer.
One may begin by starting the web browser and entering the IP address of the TM
intelligent printer interface into the address bar 127. One may then select a configuration,
such as wired TCP/IP or wireless TCP/IP, as illustrated by 129. The "TCP/IP Setting"
screen then appears and one configures the network settings for the TM intelligent printer,
as illustrated by 131. To test the IP address, one may submit a status sheet using the TM
intelligent printer.
[00140] Fig. 20 is an example of device settings. For example, one may set the ID of
the printer to be controlled by ePOS-Print into the TM intelligent printer. On may use the
web browser to enter the IP address of the TM Intelligent Printer (133). One then selects
device to configure (135). A "Device Settings" screen 137 appears. Fig. 2 1 shows
examples of devices settings that may be configured. Information 139 on the registered
devices is displayed.
[00141] Execution of the above configuration and registration sequence will result in
the sample program screen of Fig. 12.
[00142] Next is discussed a guide for programming using ePOS print, i.e., using
print APIs in accord with the present invention.
[00143] Preferably, there are two types of print modes: standard mode and page
mode. In standard mode, characters are printed line by line. The line feed space is adjusted
based on the font size and the height of images, i.e., barcodes, etc. The standard mode is
suitable for printing receipts, or other types of printing that require the paper length to
change according to the print space.
[00144] In page mode, a print area is set (i.e., defined), data is laid out in it, and the
data is printed in a batch operation. For example, characters, images, and barcodes may be
laid out in the print area by position coordinates, the resultant print area is then printed in a
batch operation.
[00145] Fig. 22 show a sample work flow for programming using the ePOS-Print
API. A first step 141 is to embed the ePOS-Print API in a web page. Preferably, the ePOSPrint
API is provided as JavaScript, and may follow the following file naming convention:
"epos-print-2.x.x.js". That is, the ePOS-Print API is provided so that ePOS-Print can be
used as a JavaScript on a client device. The ePOS-Print API is used by embedding eposprint-
2.x.x.js into applications (such as web pages). To use the ePOS-Print API, epos-print-
2.x.x.js is placed (i.e., provided) on the Web server, and distributed to clients. For example,
the ePOS-Print API script may be embedding into a web page by using the HTML <script>
tags. Fig. 23 shows an example of using the HTML <script> tag to embed an ePOS-Print
API.
[00146] The next step 143 is to create the document that is to be printed. A print
document may be created using an ePOS-Print Builder object. For example, an ePOS-Print
Builder object is created using the constructor for it, and the print document is created
using the object's methods. The print document may be acquired using a toString method,
or other print API methods/functions, as listed below. Fig. 24 shows an example a program
code segment for creating a print document.
[00147] To create a text print document, one stores the font settings into the
command buffer using text methods and then creates the print document. Fig. 25 illustrates
a sample script code for creating a text print document. The sample script code uses a font
called FontA, sets a text scale of x4 horizontal and x4 vertical, and sets the style to Bold.
The result of the sample script is to create a print document with the text, "Hello World"
with the specified text settings.
[00148] Fig. 26 provides sample script code creating a graphic print document.
More specifically, the sample script code creates a print document for the image file
logo.bmp. Basically, it describes one way of printing a raster image. Another method of
printing graphics registered in non-volatile memory within a printer is discussed below.
To create the graphic print document in the present example, a raster image obtained by
rendering an image in HTML5 Canvas is stored into the command buffer using an
addlmage method.
[00149] Another method for creating a print document, as illustrated in step 143 of
Fig. 22 is to create a page mode print document. Fig. 27 illustrates sample code for
creating a page mode print document. The examples adds the phrase, "Hello world" to a
print region. The following example uses an addPageBegin method. When the
addPageBegin method is stored in the command buffer, the page mode starts. The print
area is stored into the command buffer (by means of an addPageArea method), and the
print start position is stored ( by means of an addPagePosition method) into the command
buffer. The print start position is then specified according to the print data. The methods
are then stored into the command buffer to create the print data. For the end of page mode,
a PageEnd method is stored into the command buffer.
[00150] Returning to Fig. 22, following the print document creation step 143, is a
step 145 for transmitting the created print document. Fig. 28 provides sample code for
transmission of a print document. In the present example, a print document is sent using
an ePOS-Print object. The ePOS-Print object may be created using the constructor and the
end point address for the printer to be used for printing as well as the print document may
be specified (i.e., input) into a send method to send the document. Fig. 29 provides a table
with details about the printer end point address.
[00151] As shown in Fig. 22, the last step 147 is reception of the print data. The
print result can be received by setting a callback function using an onreceive property
(discussed below) of the ePOS-Print object. Fig. 30 provides sample code for
implementing a callback function. Examples of the information that may be obtained
include the print result, error codes, and printer status. Fig. 3 1 provides an example of an
error handling method for a callback function. Fig. 32 illustrates the use of the status event
notification function to check the printer status without printing.
[00152] Fig. 33 illustrates a workflow for programming using ePOS-Print-Canvas
API. like in the case of ePOS-Print API, ePOS-Print-Canvas API begins with a step 151 of
embedding the ePOS-Print-Canvas API into a web page. Fig. 34 shows sample code for
embedding an ePOS-Print-Canvas API. For illustration purposes, the ePOS-Print-Canvas
API is shown as JavaScript, and preferably follows the naming convention: "epos-print-
2.x.x.js". The ePOS-Print-Canvas API may be maintained (i.e., placed/kept/stored) in the
web server and then distributed to clients for embedding into their applications (i.e., web
pages). As shown in the Fig. 34, the ePOS-Print-Canvas API may be embedded into a web
application by using HTML <script> tags.
[00153] The next step 153 in Fig. 33 is to render in HTML5-Canvas. Fig. 35
provides sample code for rendering in HTML5-Canvas. The next step 155 is to print the
rendered canvas image. Fig. 36 provides sample code for transmitting a print document for
printing. To print the content drawn HTML5-Canvas using the ePOS-Print Canvas API, an
ePOS-Print Canvas API object is created using the constructor. To use the Print method,
one specifies the end point address for the printer to be used for printing as well as the
canvas content and whether to select paper cut, and then the document is print.
[00154] The TM intelligent printer (i.e., the intelligent module) receives the
transmission, as indicated by step 157. Fig. 37 shows sample code for printing a result
receipt and callback function. As before, the print result can be received by setting a
callback function using the onreceive property of the ePOS-Print Canvas API object. In
this manner, one can obtain information on the print result, error code and printer status.
Fig. 38 provides sample code for error handling by a callback function. Thus, the status
event notification function can be used to check the printer status without printing, as
shown in the sample code of Fig. 39.
[00155] As is mentioned above, the ePOS-Print API provides many methods for
creating a print document. Figs. 40, 41, 42a and 42b list some of the methods and
components of the ePOS-Print API as defined by an ePOSBuilder object.
[00156] As it would be understood by one versed in the art, a new ePOS-Print
Builder object is created and initialized by means of a contractor, an the object can then be
used to create a print document for printing control commands that specify strings or
graphics to be printed, paper cut, etc. Preferably, this constructor follows the following
syntax: "ePOSBuilder( );". Fig: 43 provides sample code for the constructor of an ePOSPrint
Builder object.
[00157] The syntax for adding text alignment settings to the command buffer may
follow syntax: addTextAlign(align), where "align" specifies the type of alignment. Fig. 44
provides examples of types of alignment parameters. Fig. 45 provides the return value for
the ePOS-Print Builder object, and Fig. 46 illustrates exception error. Fig. 47 provides
sample code illustrating the use of text alignment.
[00158] The method to add a line feed space setting to the command buffer
preferably follows the syntax: addTextLineSpace(linespc)! Parameter "linespc" specifies
the line feed space (in dots), and preferably an integer in the range from 0 to 255. Fig. 48
provides sample code to set the line feed space to 30 dots.
[00159] The method to add a text rotation setting to the command buffer preferably
follows the following syntax: addTextRotate(rotate), where "rotate" is a Boolean that
specifies whether to rotate text. Fig. 49 illustrates Boolean values for the rotate parameter.
Fig. 50 provides sample code to set text rotation.
[00160] The method to add the printing of text to the command buffer preferably
follows the syntax: addText(data), where the parameter "data" is the character string to be
printed. Nonprintable characters, such as horizontal tab and line feed may use escape
sequences, as illustrated in Fig. 51. Fig. 52 provides sample code illustrating the use of
addText(data).
[00161] The method to add the language setting to the command buffer preferably
follows the syntax: addTextLang(lang), where parameter "lang" is a string that specifies
the target language. Fig. 53 provides examples of parameter "lang" to designate a target
language. Fig. 54 provides sample code illustrating the use of method addTextLang(lang).
[00162] The method to add the text font setting to the command buffer preferably
follows syntax: addTextFont(font), wherein parameter "font" is a string that specifies a
desired font. Fig. 55 illustrates sample values for the font parameter, a d Fig. 56 provides
sample code illustrating the use of the addTextFont(font) method.
[00163] The method to add the smoothing setting to the command buffer preferably
follows syntax: addTextSmooth(smooth), where parameter "smooth" is a Boolean that
specifies whether to enable smoothing. Fig. 57 illustrates possible values for parameter
"smooth", and Fig. 58 provides sample code illustrating the use of method
addTextSmooth(smooth).
[00164] The method to add the double-sized text setting to the command buffer
preferably follows syntax: addTextDouble(dw, dh), where dw is an optional Boolean
parameter that specifies the double-sized width and dh is an optional Boolean parameter
that specifies the double-sized height. Fig. 59 describes parameter values for dw, and Fig.
60 describes parameter values for dh. Fig. 6 1 provides sample code to set the text size to
double width and double height.
[00165] The method to add the text scale setting to the command buffer preferably
follows syntax: addTextSize(width, height), where parameter "width" is an optional
number parameter that specifies the horizontal scale of text and parameter "height" is an
optional number parameter specifies the vertical scale of text. Fig. 62 illustrates possible
values for parameter "width" and Fig. 63 illustrates possible values for parameter "height".
Fig. 64 shows sample code to set a horizontal scale of x 4 and a vertical scale of x 4.
_
[00166] The method to add the text style setting to the command buffer preferably
follows syntax: addTextStyle(reverse, ul, em, color), where "reverse" is an optional
Boolean parameter that specifies whether to inversion the black and white for text, "ul" is
an optional Boolean parameter that specifies an underline style, "em" is an optional
Boolean parameter that specifies a bold style, and "color" is an optional string parameter
that specifies the color. Fig., 65 shows possible values for parameter "reverse". Fig. 66
shows possible values for parameter "ul". Fig. 67 shows possible values for parameter
"em". Fig. 68 shows possible values for parameter "color". Fig. 69 provides sample code to
set the underline style.
[00167] The method to add the horizontal print start position of text to the
command buffer preferably follows syntax: addTextPosition(x), where "x" is a number
parameter that specifies the horizontal print start position (in dots) and is an integer in the
range from 0 to 65535. Fig. 70 shows sample code to set the print position at 120 dots from
the left end.
[00168] The method to add paper feeding in dots to the command buffer preferably
follows syntax: addFeedUnit(unit), where "unit" is a number parameter that specifies the
paper feed space (in dots) and is an integer in the range from 0 to 255. Fig. 7 1 shows
sample code to feed paper by 30 dots.
[00169] The method'to add paper feeding in lines to the command buffer preferably
follows syntax: addFeedLine(line), where "line" is an integer number parameter that
specifies the paper feed space (in lines) and in the range from 0 to 255. Fig. 72 shows
sample code to feed paper by 3 lines.
[00170] The method to add a line feed to the command buffer preferably follows
syntax: addFeed( ) . Fig. 73 shows sample code to start a new line after printing a character
string.
[00171] The addlmage method adds raster image printing to the command buffer,
and prints graphics rendered in HTML5 -Canvas. The method further converts the specified
range in a RGB A full-color image of HTML5-Canvas into raster image data according to
the settings of the halftone and brightness properties. It is assumed that one pixel in an
image equals to one printer dot, and when an image contains any transparent color, the
background color of the image is assumed to be white. Preferably it follows syntax:
addImage(context, x, y, width, height, color, mode), where "context" is context parameter
that specifies the 2D context of HTML5-Canvas, "x" is -an integer number in the range
from to 65535 and specifies the horizontal start position in the print area, "y" is an
integer number in the range from 0 to 65535 and specifies the vertical start position in the
print area, "width" is an integer number in the range from 0 to 65535 and specifies the
width of the print area, "height" is an integer number in the range from 0 to 65535 and
specifies height of the print area, "color" is an optional string parameter that specifies color
(Fig. 74 shows sample values for parameter "color" within the addlmage method.), and
"mode" is an optional string parameter that specifies the color mode (Fig. 75 shows sample
values for parameter "mode" within the addlmage method.). Fig. 76 provides sample code
to print an image 300 dots wide and 300 dots high in page mode.
[00172] The method to add NV logo printing to the command buffer preferably
follows syntax addLogo(keyl, key2). This method prints a logo that is already registered
in the NV memory of a printer. Parameter keyl is a number that specifies a first key code 1
of an NV logo and is preferably an integer in the range from 0 to 255. Parameter key2 is a
number that specifies a second key code 2 of an NV logo and is preferably an integer in the
range from 0 to 255. Fig. 77 shows sample code illustrating the use of the addLogo method.
[00173] The method to add barcode printing to the command buffer preferably
follows syntax: addBarcode(data, type, hri, font, width, height). Parameter "data" is string
that specifies the barcode data as a string. Parameter "type" is a string that specifies the
barcode type. Figs. 78 to 8 1 provide examples of barcode types. Parameter "hri" is an
optional string parameter that specifies the HRI position. Fig. 82 illustrates some possible
values for the hri parameter. Parameter "font" is an optional string that specifies the HRI
font. Parameter "width" is an optional integer number that specifies the width of each
module in dots and is preferably in the range from 2 to 6 . Parameter "height" is an optional
integer number that specifies the barcode height in dots and is preferable in the range from
1 to 255. Fig. 83 provides sample code illustrating how to print barcodes.
[00174] The method to add two-dimensional symbol printing to the command buffer
preferably follows syntax: addSymbol(data, type, level, widths height, size). Parameter
"data" is preferably a string that specifies two-dimensional (2D) symbol data as a character
string. Figs. 84 and 85 provide examples of 2D-Code type descriptions for parameter
"data" within the addSymbol method. Parameter "type" is string that specifies the twodimensional
symbol type. Fig. 86 provides sample values for parameter "type" within the
addSymbol method. Parameter "level" is a string that specifies the error correction level.
Fig. 87 provides sample values for parameter "level" within the addSymbol method. The
"width" parameter is an integer number in the range from 0 to 255 that specifies the
module width. The "height" parameter is an integer number in the range from 0 to 255 that
specifies the module height. The "size" parameter is an integer number in the range from 0
to 65535 that specifies the two-dimensional symbol maximum size. Fig. 88 provides
sample code to print two-dimensional symbols.
[00175] The method to add horizontal line printing to the command buffer to draw
horizontal lines preferably follows syntax addHLine(xl, x2, style), where parameter xl is
an integer number in the range from 0 to 65535 and specifies the start position of the
horizontal line (in dots), parameter x2 is an integer number in the range from 0 to 65535
and specifies the end position of the horizontal line (in dots), and parameter style is a string
that specifies the line type. Fig. 89 illustrates some style parameters for the addHline
method. Fig. 90 shows sample code to draw double horizontal lines at a position between
100 dots and 200 dots from the left end and at a position between 400 dots and 500 dots
from the left end.
[00176] The method to add the beginning of a vertical line to the command buffer
(i.e., to starts the drawing of vertical lines) follows syntax addVLineBegin(x, style), where
parameter x is an integer number in the range from 0 to 65535 and specifies the start
position of the vertical line (in dots), and parameter "style" is an optional string that
specifies the line type. Fig. 9 1 provides examples of parameter style for the
addVLineBegin method. Fig. 92 provides sample code to draw thin vertical lines at 100
dots and 200 dots from the left end.
[00177] The method to add the end of a vertical line to the command buffer (i.e., to
finish drawing vertical lines) follows syntax addVLineEnd(x, style), where parameter x is
an integer number in the range from 0 to 65535 and specifies the end position of the
vertical line (in dots), and parameter "style" is an optional string that specifies the type of
line one wants to finish drawing. Fig. 9 1 provides examples of parameter style for the
addVLineEnd method. Fig. 94 provides sample code to draw thin vertical lines at 100 dots
and 200 dots from the left end.
[00178] The method to add the switching to page mode to the command buffer (i.e.,
to start the page mode process) follows syntax addPageBeginQ. The method to add the
end of page mode to the command buffer (i.e., to end the page mode process) follows
syntax addPageEndO. Fig. 95 shows sample code to print characters "ABCDE" in page
mode.
[00179] Method addPageArea(x, y, width, height) adds the print area in page mode
to the command buffer to specify the print area in page mode (coordinates). After this API
function, a print data API function (such as the addText method) should be specified.
Parameter "x" is an integer in the range from 0 to 65535 and specifies the origin of the
horizontal axis (in dots), where 0 is the left end of the printer's printable area. Parameter
"y" is an integer in the range from 0 to 65535 and specifies the origin of the vertical axis
(in dots), where 0 is the position in which no paper feed has been performed. Parameter
"width" is an integer number from 0 to 65535 that specifies the width of the print area (in
dots). Fig. 96 shows sample code to specify the print area with the origin (100, 50), a width
of 200 dots, and a height of 30 dots and print the characters "ABCDE".
[00180] The method to add the page mode print direction setting to the command
buffer (i.e., to specify the print direction in page mode) follows syntax
addPageDirection(dir). This function may be omitted if rotation is not required. Parameter
"dir" is a string that specifies the print direction in page mode. Fig. 97 provides some
examples for parameter "dir" of method addPageDirection. Fig 98 provides sample code
to print characters "ABCDE" by rotating them 90 degrees clockwise.
[00181] The method to add the page mode print-position- set area to the command
buffer (i.e., to specify the print start position (coordinates) in the area specified by the
addPageArea method) has syntax addPagePosition(x, y). Parameter x is an integer number
from 0 to 65535 that specifies the horizontal print position (in dots). Parameter y is an
integer number from 0 to 65535 that specifies the vertical print position (in dots). Fig. 99
shows sample code to specify (50,30) for the print start position in the area specified by the
addPageArea method and print the characters "ABCDE". .
[00182] The method to add line drawing in page mode to the command buffer (i.e.,
draws a line in page mode) follows syntax addPageLine(xl, yl, x2, y2, style). Parameter
xl is an integer number from 0 to 65535 that specifies the horizontal start position of the
line (in dots). Parameter yl is an integer number from 0 to 65535 that specifies the vertical
start position of the line (in dots). Parameter x2 is an integer number from 0 to 65535 t a
specifies the horizontal end position of the line (in dots). Parameter y2 is an integer number
from 0 to 65535 that specifies the vertical end position of the line (in dots). Parameter
"style" is a string that specifies the line type. Fig. 100 provides examples of the "style"
parameter in method addPageLine. Fig. 101 provides sample code to draw a thin solid line
between start position (100, 0) and end position (500, 0).
[00183] The method to add a rectangle drawing in page mode to the command
buffer (i.e., to draw a rectangle in page mode) follows syntax addPageRectangle(xl, yl, x2,
y2, style). Parameter xl is an integer number from 0 to 65535 and specifies the horizontal
start position of the line (in dots). Parameter yl is an integer number from 0 to 65535 and
specifies the vertical start position of the line (in dots). Parameter x2 is an integer number
from 0 to 65535 and specifies the horizontal end position of the line (in dots). Parameter y2
is an integer number from 0 to 65535 and specifies the vertical end position of the line (in
dots). Parameter "style" is a string that specifies the line type. Fig. 102 provides examples
of the "style" parameter in method addPageRectangle. Fig. 103 shows sample code to draw
a rectangle with a thin double line, with the start position (100, 0) and the end position
(500, 200) a s its vertexes.
[00184] The method to add paper cut to the command buffer (i.e., to set/actuate)
paper cut) follows syntax addCut(type), where parameter "type" is a string that specifies
the paper cut type. Fig. 104 shows sample types for method addCut. Fig. 105 provides
sample code to perform a feed cut operation.
[00185] The method to add a drawer kick to the command buffer has syntax
addPulse(drawer, time). Parameter "drawer" is a string that specifies the drawer kick
connector. Fig. 106 shows examples of parameter "drawer" for method addCut. Parameter
"time" is an optional parameter string that specifies the ON time (i.e., duration) of the
drawer kick signal. Fig. 107 shows examples of parameter "time" for method addCut. Fig.
108 show sample code to send a 100msec pulse signal to pin "2" of a drawer kick
connector.
[00186] The method to add the turning ON of the buzzer to the command buffer (i.e.,
to set the buzzer) follows syntax addSound(pattern, repeat). Parameter "pattern" is an
optional string that specifies the buzzer pattern. Fig. 109 show examples of buzzer patterns.
Parameter "repeat" is an optional string specifies the number of repeats. Fig. 110 shows
examples of how to set parameter "repeat" in method addSound. Fig. I l l shows sample
code to repeat a sound pattern "A" three times.
[00187] The method to add commands to the command buffer (i.e., to send
ESC/POS commands) has syntax addCommand(data), where "data" is an optional string
that specifies ESC/POS command as a character string.
[00188] The method to obtain a print document generated by an ePOS-Print Builder
object has syntax toString(). Fig. 2 shows sample code illustrating the use of method to
StringO.
[00189] A halftone property is implemented by means of a halftone processing
method, whose object type is "string". Fig. 113 shows the specifying of the halftone
processing method to be applied to monochrome (two-tone) printing. The default value is
FLALFTONE DITHER. Fig. 114 shows sample code to set the halftone type as error
diffusion.
[00190] Brightness correction may be set by setting a gamma value. A gamma value
in the range 0.1 to 10.0 is specified (i.e., available) for the brightness correction value. Fig.
115 provides sample code to set brightness as 2.2.
[00191] Commands, which are usually added by methods of the ePOS-Print Builder
object, can be operated directly from this property for addition or deletion. Fig. 16
provides sample code to clear the command buffer and reset it to the initial state.
[00192] The constructor for an ePOS-Print object creates a new ePOS-Print object
and initializes it. The method to send a print document created using an ePOS-Print
Builder object to control the printer and monitor the transmission result or the
communication status has syntax ePOSPrint(address), where "address" is a optional string
that specifies the URL (i.e., network address) of the printer to which a print document is
sent. Fig. 117 provides sample code illustrating the use of ePOSPring(address).
[00193] The send method sends a print document created using an ePOS-Print
Builder object: It has syntax send(request), where "request" is a string that specifies print
document. Fig. 118 provides sample code illustrating the use of the send(request) method.
[00194] The open method enables status event operation. It sends the status of the
printer specified by the address property using an event, and updates the status at the
interval specified by an interval property. It has the syntax open(). Fig. 119 provides
sample code illustrating the use of the open() method.
[00195] The close() method disables status event operation. Fig. 120 provides
sample code illustrating the use of the close() method.
[00196] The address property is used to specify URL of the printer to be used for
printing. Fig. 121 provides an example of the use of the address property.
[00197] The enabled property is a Boolean value that retains the enabled/disabled
setting for status event operation. The enabled/disabled setting for status event operation is
retained using a logical value. This is read-only. The default value is false. Fig. 122
provides an example of using the enabled property.
[00198] The interval property specifies the interval of upgrading the status. The
interval of upgrading the status is specified in milliseconds. It has a default value of
3000ms (three seconds), and a minimum value of 1000ms (one second or longer). When
an invalid value is specified, it is assumed to be 3000 ms. Fig. 123 provides an example of
using the interval property.
[00199] The status property provides the status of a printer. This is the status last
obtained from the printer, and is read-only. Fig. 124 provides an example of using the
status property.
[00200] An onreceive event is a property that registers the callback function and
obtains a response message receipt event. It has syntax: Function(response). The
parameter of the callback function include: a response as a parameter, response message as
name and object as object type. Fig. 125 shows some properties of the response object. Fig.
126 shows value of success. Fig. 127 shows value of code. Fig. 128 shows value of status.
Fig. 129 shows sample code to create and send a print document, and to display the print
result in a message box.
[00201] The onerror event property registers the callback function and obtains a
communication error event. It has syntax: Function (error). Fig. 130 lists some properties
of the error object. Fig. 13 1 shows sample code to create and send a print document and to
display the HTTP status code in a message box when a communication error occurs.
[00202] The onstatuschange event registers a callback function to obtain a status
change event. It has syntax: Function (status). Fig. 132 provides an example of using the
onstatuschange property.
[00203] The ononline event registers a callback function to obtain an online event. It
has syntax: Function (). Fig. 133 provides an example of using the ononline property.
[00204] The onoffline event registers a callback function to obtain an offline event.
Its syntax is also Function (). Fig. 134 provides an example of using the onoffline property.
[00205] The onpoweroff event registers a callback function to obtain a non-response
event. Its syntax is also Function (). Fig. 135 provides an example of using the onpoweroff
event.
[00206] The oncoverok event registers a callback function to obtain a cover close
event. Its syntax is also Function (). Fig. 136 provides an example of using the oncoverok
event.
[00207] The oncoveropen event registers a callback function to obtain a cover open
event. Its syntax is also Function (). Fig. 137 provides an example of using the
oncoveropen event.
[00208] The onpaperok event registers a callback function to obtain a paper
remaining event. Its syntax is also Function (). Fig. 138 provides an example of using the
onpaperok event.
[00209] The onpapernearend event registers a callback function to obtain a paper
near end event. Its syntax is also Function (). Fig. 139 provides an example of using the
onpapernearend event.
[00210] The onpaperend event registers a callback function to obtain a paper end
event. Its syntax is also Function (). Fig. 140 provides an example of using the onpaperend
event.
[00211] The ondrawerclosed event registers a callback function to obtain a drawer
close event. Its syntax is also Function (). Fig. 141 provides an example of using the
ondrawerclosed event.
[00212] The ondraweropen event registers a callback function to obtain a drawer
open event. Its syntax is also Function (). Fig. 142 provides an example of using the
ondraweropen event.
[00213] The following a discussion of some ePOS-Print-Canvas API functions. Fig.
143 provides a list of some components of the ePOS-Print-Canvas API.
[00214] The ePOS-Print-Canvas API object prints a print image rendered in
HTML5-Canvas and monitors the print result or the communication status. A constructor
for an ePOS-Print Canvas API object is used to create a new ePOS-Print Canvas API
object and initializes it. The syntax is CanvasPrint(address), where "address" is an optional
string that specifies an address property (URL of printer to be used for printing). Fig. 144
is sample code illustrating the creation of a new ePOS-Print-Canvas API object.
[00215] The print method prints an image rendered in HTML5-Canvas. It converts a
specified range in an RGBA full-color image of HTML5-Canvas into a raster image data
according to the settings of the halftone and brightness properties. One pixel in an image
equals to one printer dot. When an image contains any transparent color, the background
color of the image is assumed to be white. The print method has syntax: print(canvas, cut,
mode). Parameter "canvas" specifies the HTML5-Canvas object to be printed. Parameter
"cut" is an optional Boolean that sets whether to cut paper. Fig. 145 shows examples of
parameter "cut". Parameter "mode" is an optional string that specifies the color mode. Fig.
146 shows examples of parameter "mode". Fig. 147 provides sample code to print
Canvas(TD='myCanvas').
[00216] The open method Enables status event operation. It sends the status of the
printer specified by the address property using an event, and updates the status at an
interval specified by an interval property. It has syntax openQ. Fig. 148 is sample code
illustrating the use of the open() method.
[00217] The close method disables status event operation. It has syntax: close().
Fig. 149 is sample code illustrating the use of the close() method.
[00218] The address property specifies the URL of the printer to be used for printing.
Fig. 150 is sample code illustrating the use of the address property.
[00219] The enabled property retains the enabled/disabled setting for status event
operation. It is a Boolean type, and the enabled/disabled setting for status event operation
is retained using the logical Boolean value. This is read-only, and the default value is false.
Fig. 151 is sample code illustrating the use of the enabled property.
[00220] The interval property specifies the interval of upgrading the status. The
interval of upgrading the status is specified in milliseconds. The default value is 3000ms
(three seconds), and it has a minimum value of 1000ms (one second or longer). When an
invalid value is specified, it is assumed to be 3000ms, by default. Fig. 152 is sample code
illustrating the use of the interval property.
[00221] The status property provides the status of the printer. This is the status last
obtained from the printer. It is read-only, and has a default value of 0. Fig. 153 is sample
code illustrating the use of the status property.
[00222] The halftone processing method specifies the halftone property applied to
monochrome (two-tone) printing. The default value is HALFTONE DITHER. Fig. 154
illustrates some halftone properties. Fig. 155 is sample code illustrating the use of the
halftone property.
[00223] The brightness property is set using a gamma value. More specifically, a
gamma value in the range 0.1 to 10.0 is specified as a brightness correction value. The
default value is 1.0. Fig. 156 is sample code illustrating the setting of the brightness
property.
[00224] The onreceive event is a property that registers the callback function and
obtains a response message receipt event. It has syntax: Function(response). The
parameter of the callback function include: a response as a parameter, response message as
name and object as object type. Fig. 157 shows some properties of the response object. Fig.
158 shows value of success. Fig. 159 shows value of code. Fig. 160 shows value of status.
Fig. 161 shows sample code to print Canvas(ID=myCanvas), and to display the print result
in a message box.
[00225] The onerror event property registers the callback function and obtains a
communication error event. It has syntax: Function (error). Fig. 162 lists some properties
of the error object. Fig. 163 shows sample code to print Canvas(ID=myCanvas), and to
display the HTTP status Code in a message box when a communication error occurs.
[00226] The onstatuschange event registers a callback function to obtain a status
change event. It has syntax: Function (status). Fig. 164 is sample code illustrating the use
of onstatuschange event.
[00227] The ononline event registers a callback function to obtain an online event. It
has syntax: Function (). Fig. 165 provides an example of using the ononline property.
[00228] The onoffline event registers a callback function to obtain an offline event.
Its syntax is also Function (). Fig. 166 provides an example of using the onoffline property.
[00229] The onpoweroff event registers a callback function to obtain a non-response
event. Its syntax is also Function (). Fig. 167 provides an example of using the onpoweroff
event.
[00230] The oncoverok event registers a callback function to obtain a cover close
event. Its syntax is also Function (). Fig. 168 provides an example of using the oncoverok
event
[00231] The oncoveropen event registers a callback function to obtain a cover open
event. Its syntax is also Function (). Fig. 169 provides an example of using the
oncoveropen event.
[00232] The onpaperok event registers a callback function to obtain -a paper
remaining event. Its syntax is also Function (). Fig. 170 provides an example of using the
onpaperok event.
[00233] The onpapernearend event registers a callback function to obtain a paper
near end event. Its syntax is also Function (). Fig. 171 provides an example of using the
onpapernearend event.
[00234] The onpaperend event registers a callback function to obtain a paper end
event. Its syntax is also Function (). Fig. 172 provides an example of using the onpaperend
event.
[00235] The ondrawerclosed event registers a callback function to obtain a drawer
close event. Its syntax is also Function (). Fig. 173 a provides an example of using the
ondrawerclosed event.
[00236] The ondraweropen event registers a callback function to obtain a drawer
open event. Its syntax is also Function (). Fig. 173b provides an example of using the
ondraweropen event.
[00237] Preferably, the present invention further incorporates an ePOS-Print editor.
The following discussion describes how to use an ePOS-Print editor in accord with the
present invention. This tool allows one to create an ePOS-Print API, and sample code at
will. The following ePOS-print editor may be used to develop web applications in accord
with the present invention.
[00238] Preferably, the present ePOS Print editor operates within a web browser
environment. It is preferred that the web browser support HTML5^Canvas in order to
make use of all available print API method/objects. It is therefore preferred that the web
browser is selected from among the following (or similar) web browsers: Windows
Internet Explorer 9 or later, Mozilla Firefox 13 or later, Google Chrome 19 or later, Apple
Safari 5 .1.7 or later, and iPad Safari in iOS 5.1 or later.
[00239] If desired, the ePOS Print editor is maintained in (i.e., stored and accessed
from) a server, or an intelligent module (as described above), or a TM intelligent printer.
For example to access the main page (i.e., "index.html", or home page) of present ePOS
Print editor on an IP network, one may enter in a web browser the editor's network address
such as: http://[(Web Server IP address), or (Intelligent module IP address), or (TM
intelligent printer IP address)]/editor/index.html . Thus, if one has access to an intelligent
module or TM intelligent printer, either can function to provide text editing (more
specifically ePOS print editing) to create a web page application with embedded print API,
as described above.
[00240] Using the ePOS Print editor, one can describe the functionality desired for a
customized ePOS-Print API or customized ePOS-Print-Canvas by using a graphics user
interface, i.e., GUI, to select the functions desired, and let the editor generate the necessary
script code automatically. The editor may also be used by using the GUI to "draw" or
depict in graphical form a stencil or layout of how a printout should look, and again the
editor may generate the necessary script code to achieve the look and function of the
desired result.
[00241] Fig. 174 provides a sample main page (i.e., index.html, or home page) for
an ePOS Print editor in accord with the present invention. Preferably, the ePOS Print
editor is accessed via web browser 161 by entering the IP address of the ePOS Print editor
195 in the address field 163 of web browser 161. The main page of the ePOS Print editor
includes multiple tabs 165a to 165f that categorize the editor's capabilities by function type.
For example, tab 165a selects "Edit" functions, which brings up a Main Edit area, or
window, 167. Tab 165b provides "Preview" functions to preview how a project one is
currently working one will execute. The API tab 165c may display model API code that
may be built upon to achieve a user's needs. Alternatively, the API tab may provide a
selection of multiple, pre-defined print APIs accommodating common user needs. Still
alternatively, "API" 165c may bring up a window displaying script code for a current
project. Tab 165d is labeled "XML" and may be used to view and edit XML print files.
For example, if one is previewing a project, XML tab 165d may bring an XML print
document of the current project. Still alternatively, one may import an existing XML print
document for further editing. Besides showing scripting code generated by the present
ePOS Print editor, in an alternate embodiment either of API tab 165c or XML tab 165d
may further permit a user to manually edit the code. The print tab 165e brings up print
options to print the current work, or to test the current work by generating a print-out of a
mock execution of the current code viewable on the screen or sent to a connected printer.
The Setting tab 165f permits one to enter needed settings for execution, such as the models
of target printers, the IP address of the intelligent module or TM intelligent printer, the
device, ID of a target printer, time out settings, and/or option choices such as choosing
whether or not to monitor a printer's status.
[00242] Main Edit area 167 provides a selection of different edit function choices
(i.e., selectable via function icons or software "buttons") that may be programmed into a
print API in accord with the present invention. These functions are further sub-categorized.
[00243] For example, a first sub-category 169 provides the most common operations
that most print document may use. This first sub-category is labeled "Common", and
includes functions such as "Align", "Linespc" and "Rotate". The Align function specifies a
desired alignment for text and/or graphics (such as left-align, center-align, right-align, and
customized-align). The Linespc function permits one to specify desired line spacing in dots
or in units of measure, such as inches and/or centimeters. The Rotate function specifies a
desired rotation orientation for text and/or graphics. The Rotate functions may be divided
into fixed choices, such as 90°, 180° or 270° or may be user specified within a range from
0° to 360°.
[00244] A second sub-category 171 provides text-related functions and is labeled
"Text". The Text sub-category includes functions such as "Lang", "Font", "Position",
"Smooth", "Size", "Double", "Style" and "Text". The Lang function serves to specify a
specific language for printouts. For example one may select from among Japanese,
English, Spanish, German, etc. The Font function specifies a specific font from a library of
installed font options. The Position function specifies how far from the left border (or right
border or top border or bottom border [if printing on fixed-sized sheets of paper]) text
printing should start. As it is known, text may take on a pixilated look depending on the
size of a specific font choice. The Smooth function removes this jagged pixilated look and
provides smooth edges to text. The Size function specifies a size for specific text. The
Double function provides a quick way of specifying that specific text that should be printed
in double size. The Style function specifies a specific text style, i.e., underline, bold, italics,
color-invert, etc The Text function specifies regions for printing specified text and/or
specifies the text to be printed.
[00245] The third sub-category 173 provides paper-feed-related functions and is
labeled "Paper Feed". The Paper-Feed sub-category includes functions such as "By Unit",
"By Line", and "LF". The "By Unit" function specifies an amount of paper feeding by unit
of measure, such as dots, inches, and/or centimeters. The "By Line" function specifies an
amount of paper feeding by number of lines (i.e., in per line increments). The "LF"
function provides a new line (i.e., increments by one line in a manner similar to the
carriage-return function typing).
[00246] The fourth sub-category 175 provides image related functions and is labeled
"Image". The Image sub-category includes functions such as "Image" and "NV Logo".
The "Image" function provides for the insertion of user-provided images, and may also
provide functions for a user to create (i.e., define) a new image using drawing software
tools including basic shapes, such a lines, circles, rectangles, etc. The "NV Logo" function
relies on addressable images already stored in a printer, and calls up a selected one of those
images by address, or local ID. That is, the address of NV Logo images may be an ID
code that identifies a specific stored image within a local (i.e., internal) memory space of
(preferably) non-volatile memory within a printer. Typically, NV Logo images are images
of company logos, but they are not restricted to logos alone.
[00247] The fifth sub-category 177 provides bar code related functions and is
labeled "Bar Code". The Bar Code sub-category includes functions such as "Barcode" and
"Symbol". The "Barcode" function encodes linear barcodes (of user-specified type). That
is, a user may provide information to be encoded, and select the "Barcode" function to
generate a linear barcode that encodes the provided information. The Barcode function
may further include options such as size and position of a defined linear barcode. The
"Symbol" function encodes matrix (i.e., 2-dimensional) barcodes of a specific type, such as
a QR Code. Again, the user may provide information (text and/or graphic) to be encoded,
and select the "Symbol" function to generate a matrix barcode that encodes the provided
information. The Symbol function may further include options such as size and position of
a defined matrix barcode.
[00248] The sixth sub-category 179 provides page-mode related functions and is
labeled "Page Mode". The Page Mode sub-category includes functions such as "Start",
"Area", "Direction", "Position", and "End". The "Start" function may specify the
beginning position of a page mode area, and the "End" function may specify the ending
position of the page mode area. The "Position" function may specify a position within a
printing area where the page mode printing area should be located. The "Area" function
may specify a specify area (i.e., 2-dimensional size) for the page mode area. Finally, the
"Direction" function may specify an orientation for the depicted contents of the page mode
area. For example, if the page mode contains text arranged horizontally, the "Direction"
function may be used to print the same text along a vertical direction.
[00249] A seventh sub-category 181 may group together all remaining functions not
included in the first through sixth sub-categories, and is labeled "Other". In the present
example, the "Other" sub-category includes functions such as "Cut", "Drawer", Buzzer,
and "Cmd". The "Cmd" function specifies commands to be sent to a printer. Assuming
that the printer is a POS printer having a paper cutter, drawer and buzzer, the "Cut"
command issues a command to cut the print medium (i.e., paper) on which the printer
prints, the drawer option inserts a command to kick open the printer's drawer (may
individually identify specific drawer latch connectors to be actuated), and the buzzer
defines a command for the printer to actuate its buzzer in a specific buzzer pattern for a
specified duration and a specified number of repeated buzzing operations.
[00250] Fig. 175 shows the Setting screen resulting from selection of the "Setting"
tab 165f of the ePOS Print editor 195 in accord with the present invention. The Setting
screen provides a printer- model field 183 to enter or select the model of a target printer.
Also provided is an GR -Address field 185 to enter the IP address of the intelligent module
or TM intelligent printer. Device-ID field 187 receives the device ID of the target printer,
which may be an ID name assigned to the target printer. In Print- Timeout field 189 one
may set a timeout (in milliseconds) for attempted print operations. Also provides a
selection .button 191 to choose whether or not to monitor a printer's status. Fig. 176
provides a table summarizing some of the options provided by the Setting screen.
[00251] Fig. 177 provides another, but smaller, view of the Edit screen of the ePOS
Print editor in accord with the present invention. The present Edit screen is similar to that
of Fig. 174 with the exception that Fig. 177 additionally shows an Edit Area 193. Main
Menu area 167 displays the available functions, as explained above. One may "click an
icon" (i.e., select a software button from Main Menu area 167) to add it to the bottom of
Edit Area 193. One may also drag (or move) an icon to insert it anywhere in Edit Area 193.
The location of the icon within Edit Area 193 specifies the location (i.e., the order) of the
relevant code within the final script code file. After placing' a function icon (or element),
one configures it as needed. For example, if the NV logo is added to Edit Area 167,.then it
is configured by entering the key code that identifies the image to be selected. It is to be
understood that one may have multiple instances of the same function icon within Edit
Area 193. Thus, Edit Area 193 displays the functions (i.e., elements) selected in the menu
area. At any time, these elements may be dragged up or down within Edit Area 193 to
change its order of execution. Each element is given an "X" button at its right-side, and any
element can be deleted using its "X'Vbutton. An import option 197, ePOS-Print Editor can
import XML data stored in the past. The Clear option 199 deletes the edited details within
Edit Area 193.
[00252] Selecting Preview tab 165b, as shown in Fig. 174 provides a preview image.
Fig. 178 shows a sample preview image of the ePOS Print editor in accord with the present
invention. This provides a preview 101 of a printed document.
[00253] If a printer is connected, then an actual printing may be made to test the
code by selecting Print tab 165e. Fig. 179 provides a sample view of the present ePOSPrint
editor with the Print tab selected. Print tab 165e may be used to view an XML print
document of a preview image, or may be used to import an XML print document. For
example one may open an existing XML print document using the Print tab 165e, and may
save the contents of the XML print document, such as by copying. The ePOS-Print XML
document is displayed in the Data to be sent (ePOS-Print XML) section. Selecting the
Send option sends data to a printer and performs printing. The Information section displays
the print status. Selecting the Clear option deletes the content in the Information box.
[00254] Fig. 180 shows an import screen in accord with the present invention. The
ePOS-Print XML print document to be imported is pasted and checked in the "Data to be
import (ePOS-Print XML)" section. Selecting the "Apply" option imports the ePOS-Print
XML print document. The information section displays any import/needed information.
The "Close" option closes the import screen.
[00255] In a preferred embodiment of present invention, selecting API tab 165c, as
shown in Fig. 174, provides ePOS-Print sample code. Fig. 181 provides a sample view of
the present ePOS-Print editor with the API tab selected. A user may make use of the
sample code by copying it into their own code file or Edit Area.
[00256] While the invention has been described in conjunction with several specific
embodiments, it is evident to those skilled in the art that many further alternatives,
modifications and variations will be apparent in light of the foregoing description. Thus,
the invention described herein is intended to embrace all such alternatives, modifications,
applications and variations as may fall within the spirit and scope of the appended claims.

CLAIMS
[Claim 1] A method for creating a document in a web application, sending the
document to a printer, and obtaining a status of the printer through a network, the web
application executed by a web browser, the method comprising steps of:
providing an intelligent module adapted to connect to the printer, the intelligent
module configured to be set a network address, to receive the document over the network,
and to send the document to the printer;
embedding an application program interface (i.e. API) in the web application, the
API including:
(i) an address property-element configured to designate the network
address of the intelligent module,
(ii) a status event-element configured to check one or more statuses of
the printer, and
(iii) an open method-element configured to enable the operation of the
status event-element;
setting the network address of the intelligent module into the address propertyelement;
using the open method-element to enable operation of the status event-element
and to receive a specified status of the printer.
[Claim 2] The method according to claim 1, wherein the API further includes a close
method-element configured to disable the operation of the status event-element, the
method for creating a document in a web application further comprising a step of using the
close method-element to disable the status event-element.
[Claim 3] The method according to claim 1, wherein the API includes an interval
property-element specifying a time interval for spacing the upgrading of the status of the
printer, the method for creating a document in a web application further comprising a step
of setting the time interval into the interval property-element.
[Claim 4] The method according to claim 1, wherein the API includes a status
property-element specifying the status last obtained from the printer.
[Claim 5] The method according to claim 1, further comprising a step of setting a
device identification of the printer, wherein the address property-element is further
configured to designate the device identification of the printer for which the checked status
is to be received. ,
[Claim 6] The method according to claim 1, wherein the web application is
maintained in the intelligent module, and the web browser accesses the web application
from the intelligent module.
[Claim 7] The method according to claim 1, wherein the web application is
maintained in a web server, and the web browser accesses the web application from the
web server.
[Claim 8] The method according to claim 1, wherein the one or more statuses include
a status indicating whether the printer is online or offline.
[Claim 9] The method according to claim 1, wherein the printer has a cover, and one
or more statuses include a status indicating whether the cover is open or closed.
[Claim 10] The method according to claim 1, wherein:
the API further includes:
a first method-element configured to add commands fo controlling the
printer into a command buffer, and creating the document according to commands in the
command buffer; and '
a second method-element configured to send the created document to the
intelligent module over the network;
the method for creating a document in a web application further including the
steps of:
creating the document by use of the first method-element embedded in the
web application;
sending the document, by use of the second method-element embedded in the web
application, to the intelligent module having the network address designated by the address
property-element; and
having the intelligent module send the received document to the printer.
[Claim 11] The method according to claim 10 further comprising a step of the printer
printing its received document on a paper medium in the printer.
[Claim 12] The method according to claim 11, wherein the one or more statuses of the
printer checked by the status event-element includes a status indicating whether a supply of
the paper medium is ended or nearly ended.
[Claim 13] The method according to claim 10, wherein:
the printer has a drawer; and
one of the commands for controlling the printer added to the command buffer is a
drawer-kick command for instructing the printer to kick open its drawer.
[Claim 14] The method according to claim 13, wherein the one or more statuses of the
printer include a status indicating whether the drawer is open or closed.
[Claim 15] A system for creating a document in a web application, sending the
document to a printer, and obtaining a status of the printer over a network, the web
application executed by a web browser, the system comprising:
an intelligent module adapted to connect to the printer, the intelligent module
configured to be set a network address;
a web server connected to the intelligent module through the network, the web
application maintained in the web server;
an application program interface (API) embedded in the web application; the API
including:
(i) an address property-element configured to designate the network
address of the intelligent module,
(ii) a status event-element configured to check one or more statuses of
the printer, and
(iii) an open method-element configured to enable the operation of the
status event-element;
wherein the status of the printer, designated by the status event-element, is sent
from the intelligent module, designated by the address property-element, to the web
browser after the open method-element enables the operation of the status event-element.
[Claim 16] The system according to claim 15, wherein:
the printer has a cover; and
the one or more statuses of the printer include a status indicating whether the
cover is open or closed.
[Claim 17] The system according to claim 15, wherein the API further includes:
(i) a first method-element configured to add commands for controlling the
printer into a command buffer, and for creating the document according to commands in
the command buffer, and
(ii) a second method-element configured to send the document to the intelligent
module over the network;
wherein the document is created by the first method-element and is sent by the
second method-element to the intelligent module having the network address designated by
the address property-element.
[Claim 18] The system according to claim 17, wherein a drawer is connected to the
printer, and wherein one of the commands for controlling the printer added into a
command buffer is a drawer-kick command for instructing the printer to kick open its
connected drawer.
[Claim 19] The system according to claim 17, wherein the one or more statuses of the
printer include a status indicating whether the drawer is open or closed.

Documents

Application Documents

# Name Date
1 3284-DELNP-2014.pdf 2014-04-25
2 SPECIFICATION.pdf 2014-04-28
3 FORM 5.pdf 2014-04-28
4 FORM 3.pdf 2014-04-28
5 DRAWINGS.pdf 2014-04-28
6 3284-delnp-2014-Form-3-(26-05-2014).pdf 2014-05-26
7 3284-delnp-2014-Correspondence-Others-(26-05-2014).pdf 2014-05-26
8 3284-delnp-2014-GPA-(13-06-2014).pdf 2014-06-13
9 3284-delnp-2014-Correspondence Others-(13-06-2014).pdf 2014-06-13
10 3284-delnp-2014-Correspondence-Others-(14-07-2014).pdf 2014-07-14
11 3284-delnp-2014-Correspondence-Others-(17-07-2014).pdf 2014-07-17
12 3284-DELNP-2014-FER.pdf 2019-03-27
13 3284-DELNP-2014-AbandonedLetter.pdf 2019-11-05

Search Strategy

1 search_26-03-2019.pdf