0

我有一个 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)
4

1 回答 1

0

我已经解决了这个问题。

我更改了以下代码:

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

作为

Dim bByte() As Byte = File.ReadAllBytes("C:\Temp\test2.xps")

并且问题已经解决了。

于 2016-09-06T09:59:13.227 回答