printer

package module
v0.0.0-...-9f70a12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 9, 2021 License: BSD-3-Clause Imports: 11 Imported by: 0

README

Windows printing.

`

func TestPrinter(t *testing.T) {
    name, err := Default()
    if err != nil {
    t.Fatalf("Default failed: %v", err)
    }

    p, err := Open(name)
    if err != nil {
        t.Fatalf("Open failed: %v", err)
    }
    defer p.Close()

    err = p.StartDocument("my document", "RAW")
    if err != nil {
        t.Fatalf("StartDocument failed: %v", err)
    }
    defer p.EndDocument()
    err = p.StartPage()
    if err != nil {
        t.Fatalf("StartPage failed: %v", err)
    }

    text := "£"
    encoder := charmap.CodePage437.NewEncoder()
    encoded, _ := encoder.String(text)

    p.Init()
    p.SetFontSize(2, 2)
    p.SetFont("B")
    p.SetAlign("center")
    p.WriteString("** CARD PAYMENT **\n")
    p.WriteString("------------------------\n")
    p.WriteString("GETMENULINK Ref: 1544\n")
    p.WriteString("ACEPTED (Auto)\n")
    p.WriteString("------------------------\n")
    p.FormfeedN(2)
    p.SetEmphasize(1)
    p.SetReverse(1)
    p.WriteString("YUM YUM THAI\n")
    p.SetReverse(0)
    p.WriteString("Pickup\n")
    p.SetEmphasize(0)
    p.Formfeed()

    p.SetFont("A")
    p.SetAlign("left")
    p.SetFontSize(1, 1)
    p.WriteString("Date            : 25.05.2021 17:51\n")
    p.WriteString("Server          : Pit\n")
    p.WriteString("Order           : 21/34953\n")
    p.WriteString("Dispatch Time   : 18:20\n")
    p.Formfeed()

    p.SetAlign("center")
    p.SetFont("B")
    p.SetFontSize(2, 2)
    p.SetEmphasize(1)
    p.WriteString("------------------------------\n")
    p.SetUnderline(1)
    p.WriteString("Pickup Details\n")
    p.Formfeed()
    p.SetUnderline(0)
    p.WriteString("Ibrahim COBANI\n")
    p.WriteString("(532 540 1194)\n")
    p.Formfeed()
    p.WriteString("------------------------------\n")
    p.WriteString("ORDER DETAILS\n")
    p.WriteString("------------------------------\n")
    p.SetEmphasize(0)
    p.SetFont("A")
    p.SetFontSize(1, 2)
    p.SetAlign("center")
    p.WriteString("***STARTED***\n")
    p.SetAlign("left")
    p.WriteString("1x3. SA-TAY KING PRAWN\n")
    p.Formfeed()
    p.SetAlign("center")
    p.WriteString("***MAIN***\n")
    p.SetAlign("left")
    p.WriteString("1x61. Jungle Curry with  Chicken\n")
    p.WriteString("1x130. Sauted Aubergine with chilli, Onion & Peppers (V) \n")
    p.WriteString("1x141. Steamed Rice\n")
    p.Formfeed()

    p.SetFont("B")
    p.SetFontSize(2, 2)
    p.SetEmphasize(1)
    p.SetAlign("right")
    p.WriteString("------------------------------\n")
    p.WriteString("Total (4 Items)\n")
    p.WriteString("Total : " + encoded + "29\n")
    p.SetAlign("left")

    p.Formfeed()
    p.Cut()

    p.SetFontSize(2, 2)
    p.SetFont("B")
    p.SetAlign("center")
    p.WriteString("** CARD PAYMENT **\n")
    p.WriteString("------------------------\n")
    p.WriteString("GETMENULINK Ref: 1544\n")
    p.WriteString("ACEPTED (Auto)\n")
    p.WriteString("------------------------\n")
    p.FormfeedN(2)
    p.SetEmphasize(1)
    p.SetReverse(1)
    p.WriteString("YUM YUM THAI\n")
    p.SetReverse(0)
    p.SetEmphasize(0)
    p.SetFont("A")
    p.SetFontSize(1, 1)
    p.WriteString("187 STOKE NEWINGTON HIGH STREET\n")
    p.WriteString("LONDON\n")
    p.WriteString("N16 OLH\n")
    p.WriteString("0207 254 6751\n")
    p.WriteString("www.yumyumthain16.co.uk\n")
    p.WriteString("317318415\n")
    p.WriteString("\n")

    p.Formfeed()

    p.SetAlign("left")
    p.WriteString("Date            : 25.05.2021 17:51\n")
    p.WriteString("Server          : Pit\n")
    p.WriteString("Order           : 21/34953\n")

    p.SetAlign("center")
    p.SetFont("B")
    p.SetFontSize(2, 2)
    p.SetEmphasize(1)
    p.WriteString("------------------------------\n")
    p.WriteString("Dispatch Time   : 18:20\n")

    p.WriteString("------------------------------\n")
    p.SetUnderline(1)
    p.WriteString("Pickup Details\n")
    p.Formfeed()
    p.SetUnderline(0)
    p.WriteString("Ibrahim COBANI\n")
    p.WriteString("(532 540 1194)\n")
    p.Formfeed()
    p.WriteString("------------------------------\n")
    p.WriteString("ORDER DETAILS\n")
    p.WriteString("------------------------------\n")
    p.SetEmphasize(0)
    p.SetFont("A")
    p.SetFontSize(1, 2)
    p.SetAlign("right")
    p.WriteString("1x3. SA-TAY KING PRAWN              " + encoded + "10.95\n")
    p.WriteString("1x61. Jungle Curry with Chicken     " + encoded + "8.95\n")
    p.WriteString("1x141. Steamed Rice                 " + encoded + "2.75\n")
    p.WriteString("1x130. Sauted Aubergine with..      " + encoded + "7.25\n")

    p.SetFont("B")
    p.SetFontSize(2, 2)
    p.SetEmphasize(1)

    p.WriteString("------------------------------\n")
    p.SetFont("A")
    p.SetFontSize(1, 1)
    p.SetEmphasize(1)
    p.WriteString("Sub Total (4 Items)     " + encoded + "29.90\n")
    p.WriteString("Total                   " + encoded + "29.90\n")
    p.WriteString("Paid : (Cards - dineNet)" + encoded + "29.90\n")
    p.Formfeed()
    p.SetAlign("center")
    p.SetFontSize(1, 2)
    p.SetEmphasize(0)
    p.WriteString("Signature _________________________________\n")
    p.Formfeed()
    p.SetEmphasize(1)
    p.WriteString("Thank you, Please call again\n")
    p.WriteString("Yum Yum Thai Restaurants Ltd.\n")

    p.Formfeed()
    p.Cut()

    err = p.EndPage()
    if err != nil {
        t.Fatalf("EndPage failed: %v", err)
    }

}

`

Documentation

Overview

Windows printing.

Index

Constants

View Source
const (
	PRINTER_ENUM_LOCAL       = 2
	PRINTER_ENUM_CONNECTIONS = 4

	PRINTER_DRIVER_XPS = 0x00000002
)
View Source
const (
	JOB_STATUS_PAUSED            = 0x00000001 // Job is paused
	JOB_STATUS_ERROR             = 0x00000002 // An error is associated with the job
	JOB_STATUS_DELETING          = 0x00000004 // Job is being deleted
	JOB_STATUS_SPOOLING          = 0x00000008 // Job is spooling
	JOB_STATUS_PRINTING          = 0x00000010 // Job is printing
	JOB_STATUS_OFFLINE           = 0x00000020 // Printer is offline
	JOB_STATUS_PAPEROUT          = 0x00000040 // Printer is out of paper
	JOB_STATUS_PRINTED           = 0x00000080 // Job has printed
	JOB_STATUS_DELETED           = 0x00000100 // Job has been deleted
	JOB_STATUS_BLOCKED_DEVQ      = 0x00000200 // Printer driver cannot print the job
	JOB_STATUS_USER_INTERVENTION = 0x00000400 // User action required
	JOB_STATUS_RESTART           = 0x00000800 // Job has been restarted
	JOB_STATUS_COMPLETE          = 0x00001000 // Job has been delivered to the printer
	JOB_STATUS_RETAINED          = 0x00002000 // Job has been retained in the print queue
	JOB_STATUS_RENDERING_LOCALLY = 0x00004000 // Job rendering locally on the client

	QRCodeErrorCorrectionLevelL uint8 = 48
	QRCodeErrorCorrectionLevelM uint8 = 49
	QRCodeErrorCorrectionLevelQ uint8 = 50
	QRCodeErrorCorrectionLevelH uint8 = 51
)
View Source
const (
	// ASCII DLE (DataLinkEscape)
	DLE byte = 0x10

	// ASCII EOT (EndOfTransmission)
	EOT byte = 0x04

	// ASCII GS (Group Separator)
	GS byte = 0x1D
)

Variables

This section is empty.

Functions

func ClosePrinter

func ClosePrinter(h syscall.Handle) (err error)

func Default

func Default() (string, error)

func EndDocPrinter

func EndDocPrinter(h syscall.Handle) (err error)

func EndPagePrinter

func EndPagePrinter(h syscall.Handle) (err error)

func EnumJobs

func EnumJobs(h syscall.Handle, firstJob uint32, noJobs uint32, level uint32, buf *byte, bufN uint32, bytesNeeded *uint32, jobsReturned *uint32) (err error)

func EnumPrinters

func EnumPrinters(flags uint32, name *uint16, level uint32, buf *byte, bufN uint32, needed *uint32, returned *uint32) (err error)

func GetDefaultPrinter

func GetDefaultPrinter(buf *uint16, bufN *uint32) (err error)

func GetPrinterDriver

func GetPrinterDriver(h syscall.Handle, env *uint16, level uint32, di *byte, n uint32, needed *uint32) (err error)

func OpenPrinter

func OpenPrinter(name *uint16, h *syscall.Handle, defaults uintptr) (err error)

func ReadNames

func ReadNames() ([]string, error)

ReadNames return printer names on the system

func StartDocPrinter

func StartDocPrinter(h syscall.Handle, level uint32, docinfo *DOC_INFO_1) (err error)

func StartPagePrinter

func StartPagePrinter(h syscall.Handle) (err error)

func WritePrinter

func WritePrinter(h syscall.Handle, buf *byte, bufN uint32, written *uint32) (err error)

Types

type DOC_INFO_1

type DOC_INFO_1 struct {
	DocName    *uint16
	OutputFile *uint16
	Datatype   *uint16
}

type DRIVER_INFO_8

type DRIVER_INFO_8 struct {
	Version                  uint32
	Name                     *uint16
	Environment              *uint16
	DriverPath               *uint16
	DataFile                 *uint16
	ConfigFile               *uint16
	HelpFile                 *uint16
	DependentFiles           *uint16
	MonitorName              *uint16
	DefaultDataType          *uint16
	PreviousNames            *uint16
	DriverDate               syscall.Filetime
	DriverVersion            uint64
	MfgName                  *uint16
	OEMUrl                   *uint16
	HardwareID               *uint16
	Provider                 *uint16
	PrintProcessor           *uint16
	VendorSetup              *uint16
	ColorProfiles            *uint16
	InfPath                  *uint16
	PrinterDriverAttributes  uint32
	CoreDriverDependencies   *uint16
	MinInboxDriverVerDate    syscall.Filetime
	MinInboxDriverVerVersion uint32
}

type DriverInfo

type DriverInfo struct {
	Name        string
	Environment string
	DriverPath  string
	Attributes  uint32
}

DriverInfo stores information about printer driver.

type JOB_INFO_1

type JOB_INFO_1 struct {
	JobID        uint32
	PrinterName  *uint16
	MachineName  *uint16
	UserName     *uint16
	Document     *uint16
	DataType     *uint16
	Status       *uint16
	StatusCode   uint32
	Priority     uint32
	Position     uint32
	TotalPages   uint32
	PagesPrinted uint32
	Submitted    syscall.Systemtime
}

type JobInfo

type JobInfo struct {
	JobID           uint32
	UserMachineName string
	UserName        string
	DocumentName    string
	DataType        string
	Status          string
	StatusCode      uint32
	Priority        uint32
	Position        uint32
	TotalPages      uint32
	PagesPrinted    uint32
	Submitted       time.Time
}

JobInfo stores information about a print job.

type PRINTER_INFO_5

type PRINTER_INFO_5 struct {
	PrinterName              *uint16
	PortName                 *uint16
	Attributes               uint32
	DeviceNotSelectedTimeout uint32
	TransmissionRetryTimeout uint32
}

type Printer

type Printer struct {
	Debug bool
	// contains filtered or unexported fields
}

func Open

func Open(name string) (*Printer, error)

func (*Printer) Barcode

func (p *Printer) Barcode(barcode string, format int)

Barcode sends a barcode to the printer.

func (*Printer) Cash

func (p *Printer) Cash()

send cash

func (*Printer) Close

func (p *Printer) Close() error

func (*Printer) Cut

func (p *Printer) Cut()

send cut

func (*Printer) CutPartial

func (p *Printer) CutPartial()

send cut minus one point (partial cut)

func (*Printer) DriverInfo

func (p *Printer) DriverInfo() (*DriverInfo, error)

DriverInfo returns information about printer p driver.

func (*Printer) End

func (p *Printer) End()

end output

func (*Printer) EndDocument

func (p *Printer) EndDocument() error

func (*Printer) EndPage

func (p *Printer) EndPage() error

func (*Printer) Feed

func (p *Printer) Feed(params map[string]string)

feed the printer

func (*Printer) FeedAndCut

func (p *Printer) FeedAndCut(params map[string]string)

feed and cut based on parameters

func (*Printer) Formfeed

func (p *Printer) Formfeed()

send formfeed

func (*Printer) FormfeedN

func (p *Printer) FormfeedN(n int)

send N formfeeds

func (*Printer) Image

func (p *Printer) Image(params map[string]string, data string)

write an image

func (*Printer) Init

func (p *Printer) Init()

init/reset printer settings

func (*Printer) Jobs

func (p *Printer) Jobs() ([]JobInfo, error)

Jobs returns information about all print jobs on this printer

func (*Printer) Linefeed

func (p *Printer) Linefeed()

send linefeed

func (*Printer) Pulse

func (p *Printer) Pulse()

pulse (open the drawer)

func (*Printer) SendEmphasize

func (p *Printer) SendEmphasize()

send emphasize / doublestrike

func (*Printer) SendFontSize

func (p *Printer) SendFontSize()

func (*Printer) SendMoveX

func (p *Printer) SendMoveX(x uint16)

send move x

func (*Printer) SendMoveY

func (p *Printer) SendMoveY(y uint16)

send move y

func (*Printer) SendReverse

func (p *Printer) SendReverse()

send reverse

func (*Printer) SendRotate

func (p *Printer) SendRotate()

send rotate

func (*Printer) SendSmooth

func (p *Printer) SendSmooth()

send smooth

func (*Printer) SendUnderline

func (p *Printer) SendUnderline()

send underline

func (*Printer) SendUpsidedown

func (p *Printer) SendUpsidedown()

send upsidedown

func (*Printer) SetAlign

func (p *Printer) SetAlign(align string)

set alignment

func (*Printer) SetEmphasize

func (p *Printer) SetEmphasize(u uint8)

set emphasize

func (*Printer) SetFont

func (p *Printer) SetFont(font string)

set font

func (*Printer) SetFontSize

func (p *Printer) SetFontSize(width, height uint8)

set font size

func (*Printer) SetLang

func (p *Printer) SetLang(lang string)

set language -- ESC R

func (*Printer) SetReverse

func (p *Printer) SetReverse(v uint8)

set reverse

func (*Printer) SetRotate

func (p *Printer) SetRotate(v uint8)

set rotate

func (*Printer) SetSmooth

func (p *Printer) SetSmooth(v uint8)

set smooth

func (*Printer) SetUnderline

func (p *Printer) SetUnderline(v uint8)

set underline

func (*Printer) SetUpsidedown

func (p *Printer) SetUpsidedown(v uint8)

set upsidedown

func (*Printer) StartDocument

func (p *Printer) StartDocument(name, datatype string) error

func (*Printer) StartPage

func (p *Printer) StartPage() error

func (*Printer) StartRawDocument

func (p *Printer) StartRawDocument(name string) error

StartRawDocument calls StartDocument and passes either "RAW" or "XPS_PASS" as a document type, depending if printer driver is XPS-based or not.

func (*Printer) Text

func (p *Printer) Text(params map[string]string, data string)

do a block of text

func (*Printer) Write

func (p *Printer) Write(b []byte) (int, error)

func (*Printer) WriteNode

func (p *Printer) WriteNode(name string, params map[string]string, data string)

write a "node" to the printer

func (*Printer) WriteString

func (p *Printer) WriteString(data string) (int, error)

write a string to the printer

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL