- A+
符
LPT2Path = ""
//LPT3共享打印机路径 700字符
LPT3Path = ""
)
//printAPI 打印机枚举
type printAPI int
const (
//Win32WinPrint win32 print
Win32WinPrint printAPI = 0
//Win32NetPrint win32 net print
Win32NetPrint = 1
//LPT1Print lpt1 print
LPT1Print = 2
//LPT2Print lpt2 print
LPT2Print printAPI = 3
//LPT3Print lpt3 print
LPT3Print printAPI = 4
)
// Print job info.
type PrintJob struct {
PrintName string
PageSize int
PageContent string
PrintAPI printAPI
//如果是网络打印机 则存入网络打印机名字
NetName string
//如果是LPT1 LPT2 LPT3 打印机 则存入路径
LPTName string
}
// NewPrintJob new Print job info.
// name: 打印名称
// content: 打印内容
// pageSize: 打印页面大小
// printAPI: 打印机API
// netName: 网络打印机名字
// lptName: LPT1 LPT2 LPT3路径
func NewPrintJob(name, content string, pageSize int, printAPI printAPI, netName, lptName string) PrintJob {
return PrintJob{
PrintName: name,
PageSize: pageSize,
PageContent: content,
PrintAPI: printAPI,
NetName: netName,
LPTName: lptName,
}
}
//Print 打印机
func (pj *PrintJob) Print() (err error) {
if pj.PrintAPI == Win32WinPrint {
err = pj.win32Print()
} else if pj.PrintAPI == Win32NetPrint {
err = pj.win32NetPrint()
} else if pj.PrintAPI == LPT1Print {
err = pj.lpt1Print()
} else if pj.PrintAPI == LPT2Print {
err = pj.lpt2Print()
} else if pj.PrintAPI == LPT3Print {
err = pj.lpt3Print()
}
return
}
//win32Print win32打印
func (pj *PrintJob) win32Print() (err error) {
// 打开windows自带的打印服务
pdevmode := syscall.GlobalLock(pj.PageSize)
hdc := win32.CreateDC(L"WINSPOOL", LPT1Name, nil, pdevmode)
// 打印
hFont := win32.CreateFontIndirect(&win32.LOGFONT{
Height: -MulDiv(12, win32.GetDeviceCaps(hdc, win32.LOGPIXELSY), 72),
FaceName: L"宋体",
})
win32.SelectObject(hdc, win32.HGDIOBJ(hFont))
win32.TextOut(hdc, 0, 0, LPT1Name, int32(len(LPT1Name)))
win32.EndPage(hdc)
// 关闭打印服务
win32.DeleteDC(hdc)
syscall.GlobalUnlock(pj.PageSize)
return
}
//win32NetPrint win32net打印
func (pj *PrintJob) win32NetPrint() (err error) {
// 打开网络打印服务
pdevmode := syscall.GlobalLock(pj.PageSize)
hdc := win32.CreateDC(L"WINSPOOL", utf16.Encode([]rune(pj.NetName)), nil, pdevmode)
// 打印
hFont := win32.CreateFontIndirect(&win32.LOGFONT{
Height: -MulDiv(12, win32.GetDeviceCaps(hdc, win32.LOGPIXELSY), 72),
FaceName: L"宋体",
})
win32.SelectObject(hdc, win32.HGDIOBJ(hFont))
win32.TextOut(hdc, 0, 0, utf16.Encode([]rune(pj.NetName)), int32(len(pj.NetName)))
win32.EndPage(hdc)
// 关闭打印服务
win32.DeleteDC(hdc)
syscall.GlobalUnlock(pj.PageSize)
return
}
//lpt1Print lpt1打印
func (pj *PrintJob) lpt1Print() (err error) {
// 打开windows自带的打印服务
pdevmode := syscall.GlobalLock(pj.PageSize)
hdc := win32.CreateDC(L"WINSPOOL", utf16.Encode
- 微信在线客服
- 这是我的微信扫一扫
-
- 我的微信公众号
- 扫一扫码上服务
-




