2016-09-06 16 views
0

xpsファイルがあります。私はバイト配列としてWebサービスからこのファイルを取得し、XPSファイルとして保存する場合は、しかしVB.Net印刷のxpsファイル「ファイルに破損したデータが含まれています」エラー

Dim defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue 

Dim xpsPrintJob As PrintSystemJobInfo = defaultPrintQueue.AddJob("test", "C:\Temp\test.xps", False) 

:私はこのファイルを直接印刷するときは、私は私の下のコードでエラーなしでそれを行うことができます私はそれを印刷することはできません。

保存マイバイト配列コードは以下の通りです:

FS = New IO.FileStream("C:\Temp\test.xps", FileMode.Create) 
         FS.Write(arrayByte, 0, arrayByte.Length) 
         FS.Close() 

か、このコード:

An unhandled exception of type 'System.Printing.PrintJobException' occurred in System.Printing.dll

Additional information: An exception occurred while creating print job information. Check inner exception for details.

File.WriteAllBytes("c:\Temp\test.xps", arrayByte) 

私はtest.xpsを印刷しよう

は、私はエラーを取得しています

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) 

答えて

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

として、問題は解決されました:

は、私は以下のコードを変更しました。

+0

元の問題は、 'Dim bByte(FS.Length - 1)As Byte'にする必要がある場合、' Dim bByte(FS.Length)As Byte'でした。 VBの配列は、サイズではなく最後のインデックスで宣言されます。 –

関連する問題