Печать через Winspool

Я пытаюсь настроить своего рода сервис печати для веб-сайта, с которым можно общаться и отправлять печатные документы (pdf, html, excel). Я решил на Go.

Я создал простую программу ниже. На некоторых компьютерах это работает (Windows 7), на других (Windows 8) это не работает (верно). Если это не работает, задание отображается в очереди печати менее секунды и затем исчезает. Код не выводит никаких ошибок. Я не могу найти ничего в журнале событий Windows.

Я также попробовал пример RawPrinter в C++, который я мог найти в Интернете, но это показывает то же самое поведение.

Кто-нибудь знает, что я делаю не так?:(

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

1 ответ

Решение

Вы используете тип данных "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

Другие вопросы по тегам