我有一个 xps 文件。当我尝试直接打印这个文件时,我可以用下面的代码做到这一点而不会出现任何错误:
Dim defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue
Dim xpsPrintJob As PrintSystemJobInfo = defaultPrintQueue.AddJob("test", "C:\Temp\test.xps", False)
但是,如果我从 Web 服务获取此文件作为字节数组并将其保存为 xps 文件,我将无法打印它。
我的保存字节数组代码如下:
FS = New IO.FileStream("C:\Temp\test.xps", FileMode.Create)
FS.Write(arrayByte, 0, arrayByte.Length)
FS.Close()
或此代码:
File.WriteAllBytes("c:\Temp\test.xps", arrayByte)
当我尝试打印 test.xps 时,出现错误:
System.Printing.dll 中出现“System.Printing.PrintJobException”类型的未处理异常
附加信息:创建打印作业信息时发生异常。检查内部异常以获取详细信息。
我可以处理这个问题吗?有人知道吗?
顺便说一句,不需要网络服务。请看我下面的代码。你可以试试这个任何xps文件。首先,我将文件分配为字节数组然后,我将字节数组保存为 xps 文件。
第一个 XPS 文件正常工作,但第二个不工作
Dim FS As FileStream
FS = File.Open("C:\Temp\test2.xps", FileMode.Open, FileAccess.Read)
Dim bByte(FS.Length) As Byte
FS.Read(bByte, 0, FS.Length)
FS.Close()
File.WriteAllBytes("c:\Temp\test2byte.xps", bByte)
Dim defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue
'This is working
Dim xpsPrintJob1 As PrintSystemJobInfo = defaultPrintQueue.AddJob("Test", "C:\Temp\test2.xps", False)
'This is not working
Dim xpsPrintJob2 As PrintSystemJobInfo = defaultPrintQueue.AddJob("Test", "C:\Temp\test2byte.xps", False)