共享打印机路径

  • 共享打印机路径已关闭评论
  • A+
所属分类:远程维修
摘要

符LPT2Path=””//LPT3共享打印机路径700字符LPT3Path=””)//printAPI打印机枚举typeprintAPIintconst(//Win32WinPrintwin32printWin32Wi


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

  • 微信在线客服
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 扫一扫码上服务
  • weinxin