Ich habe eine XPS-Datei. Wenn ich versuche, diese Datei direkt zu drucken, ich kann es ohne Fehler mit meinem Code unten:VB.Net Drucken XPS-Datei "Datei enthält beschädigte Daten" Fehler
Dim defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue
Dim xpsPrintJob As PrintSystemJobInfo = defaultPrintQueue.AddJob("test", "C:\Temp\test.xps", False)
jedoch Wenn ich diese Datei von einem Webdienst als Byte-Array erhalten und es als eine XPS-Datei speichern Ich kann es nicht drucken.
Mein Byte-Array-Codes speichern sind unter:
FS = New IO.FileStream("C:\Temp\test.xps", FileMode.Create)
FS.Write(arrayByte, 0, arrayByte.Length)
FS.Close()
oder dieser Code:
File.WriteAllBytes("c:\Temp\test.xps", arrayByte)
Wenn ich versuche, test.xps zu drucken, erhalte ich die Fehlermeldung:
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.
Kann ich mit diesem Problem umgehen? Hat jemand eine Idee?
Übrigens, es gibt keinen Webservice. Bitte beachten Sie meinen untenstehenden Code. Sie können diese beliebige XPS-Datei versuchen. Erstens assemme ich die Datei als Byte-Array Dann speichere ich das Byte-Array als XPS-Datei.
Erste XPS-Datei funktioniert, aber zweite funktioniert nicht
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)
Das ursprüngliche Problem könnte "Dim bByte (FS.Length) As Byte" gewesen sein, wenn es "Dim bByte (FS.Length - 1) As Byte" sein sollte. Arrays in VB werden mit ihrem letzten Index und nicht mit ihrer Größe deklariert. –