通过Winspool打印

Leo*_*eon 1 winapi go windows-8 print-spooler-api

我正在尝试为网站设置一种打印服务,以便与(pdf,html,excel)进行通信并发送可打印的文档.我决定去.

我在下面创建了简单的程序.在某些电脑上,它可以在其他电脑上工作(Windows 7)(Windows 8)它不起作用(右).当它不起作用时,作业在打印队列中可见不到一秒钟然后消失.代码不输出任何错误.我在Windows事件日志中找不到任何内容.

我也在c ++中尝试了一个RawPrinter示例,我可以在网上找到但是显示了相同的行为.

有谁知道我做错了什么?:(

package main

import (
    "fmt"
    "code.google.com/p/brainman/printer"
)


func main() {
    defaultPrinterName, _ := printer.Default()
    fmt.Println(defaultPrinterName)
    p, err := printer.Open(defaultPrinterName)

    if err != nil {
        fmt.Println("Open failed: %v", err)
    }

    defer p.Close()

    err = p.StartDocument("my document", "RAW")

    if err != nil {
        fmt.Println("StartDocument failed: %v", err)
    }

    defer p.EndDocument()

    err = p.StartPage()

    if err != nil {
        fmt.Println("StartPage failed: %v", err)
    }

    str := "testing 123"
    mySlice := []byte(str)

    _, err = p.Write(mySlice)

    if err != nil {
        fmt.Println("Write failed: %v", err)
    }

    err = p.EndPage()

    if err != nil {
        fmt.Println("EndPage failed: %v", err)
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

您正在使用数据类型"RAW",它应该是"XPS_PASS".

Windows 8(和Server 2012)使用基于XPS的驱动程序,因此您无法使用RAW标志.

看看这些文章:http : //support.microsoft.com/kb/2779300 http://msdn.microsoft.com/en-us/library/windows/desktop/ff686812%28v=vs.85%29.aspx