2013-04-12 117 views
0

我想用C#打印XPS文件。我將XPS文件作爲字節流獲取。我試圖在PrintQueue類提供了不同的AddJob方法來實現這一點,遇到以下問題從字節流中打印XPS文件

  • AddJob(String)

這將接受字節流,並做印刷。但是這種方法會讓文件長時間假脫機,所以不能使用它。

  • AddJob(String, PrintTicket)

這需要XPS文件的物理文件位置。因爲我的文件是一個字節流不能使用這一個

  • AddJob(String, String, Boolean)

這種方法還需要一個物理文件位置

  • AddJob(String, String, Boolean, PrintTicket)

需要一個物理文件位置

因此如何從字節流打印XPS文件。我不希望使用任何第三方庫本

回答

1

您曾嘗試以下過載:

AddJob() - 插入新(一般命名)打印作業,其內容是一個字節數組,進入隊列。

從MSDN獲得一些示例代碼是如下

// Create the printer server and print queue objects 
LocalPrintServer localPrintServer = new LocalPrintServer(); 
PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue(); 

// Call AddJob 
PrintSystemJobInfo myPrintJob = defaultPrintQueue.AddJob(); 

// Write a Byte buffer to the JobStream and close the stream 
Stream myStream = myPrintJob.JobStream; 
Byte[] myByteBuffer = UnicodeEncoding.Unicode.GetBytes("This is a test string for the print job stream."); 
myStream.Write(myByteBuffer, 0, myByteBuffer.Length); 
myStream.Close();