VB.Net打印xps文件“文件包含损坏的数据”错误

时间:2016-09-06 08:22:23

标签: vb.net printing bytearray xpsdocument

我有一个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.PrintJobException”类型的未处理异常   发生在System.Printing.dll

中      

其他信息:创建打印作业时发生异常   信息。检查内部异常以获取详细信息。

Detailed view of the error is here

我可以处理这个问题吗?有人有任何想法吗?

顺便说一下,不需要Web服务。 请看下面的代码。 您可以尝试这个任何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)

1 个答案:

答案 0 :(得分: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")

问题已经解决了。