2013-04-12 75 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();