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を印刷しよう
は、私はエラーを取得していますこの問題を処理できますか?誰もが考えていますか?
ところで、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)
元の問題は、 'Dim bByte(FS.Length - 1)As Byte'にする必要がある場合、' Dim bByte(FS.Length)As Byte'でした。 VBの配列は、サイズではなく最後のインデックスで宣言されます。 –