Winapi 通过Winspool打印

Winapi 通过Winspool打印,winapi,windows-8,go,print-spooler-api,Winapi,Windows 8,Go,Print Spooler Api,我正在尝试为网站设置一种打印服务,以便与之通信并将可打印文档发送到(pdf、html、excel)。我决定去 我创建了下面的简单程序。在某些PC上它可以工作(Windows 7),在其他PC上(Windows 8)它不工作(对)。当它不起作用时,作业在打印队列中可见不到一秒钟,然后消失。代码没有输出任何错误。我在Windows事件日志中找不到任何内容 我还尝试了C++中的一个RAWWORKER示例,我可以在网上找到,但显示了相同的行为。 有人知道我做错了什么吗( 您使用的数据类型是“RAW”,它

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

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

<>我还尝试了C++中的一个RAWWORKER示例,我可以在网上找到,但显示了相同的行为。

有人知道我做错了什么吗(

您使用的数据类型是“RAW”,它应该是“XPS\u PASS”

Windows 8(和Server 2012)使用基于XPS的驱动程序,因此不能使用原始标志

请阅读以下文章:

您使用的数据类型是“RAW”,它应该是“XPS\U PASS”

Windows 8(和Server 2012)使用基于XPS的驱动程序,因此不能使用原始标志

请阅读以下文章:

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)
    }
}