Печать через 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