2016-09-06 8 views
0

"파일이 손상된 데이터가 포함 된"파일. 내가 바이트 배열과 같은 웹 서비스에서이 파일을 얻는 경우에, 그러나VB.Net 인쇄 XPS는 내가 XPS 파일이 오류

Dim defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue 

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

을하고 XPS 파일로 저장 : 나는이 파일을 직접 인쇄하려고 할 때, 나는 내 아래 코드를 오류없이 그것을 할 수 있습니다 인쇄 할 수 없습니다.

저장 내 바이트 배열 코드는 다음과 같습니다 :

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

이 문제를 해결할 수 있습니까? 누구든지 아이디어가 있습니까?


그런데 웹 서비스가 필요하지 않습니다. 아래 코드를 참조하십시오. 이 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

원래 문제가 있을지도 모른다'어둡게 bByte Byte'로 (FS.Length)는 그 '어둡게 bByte (FS.Length - 1)되어야 할 때 Byte'한다. VB의 배열은 크기가 아닌 마지막 인덱스로 선언됩니다. –