从字节流中打印XPS文件

时间:2013-04-12 04:00:28

标签: c# .net xps printqueue

我想用C#打印XPS文件。我将XPS文件作为字节流。我尝试使用AddJob类中提供的不同PrintQueue方法实现此目的,并遇到以下问题

  • AddJob(String)

这接受字节流并进行打印。但是这种方法会使文件假脱机很长时间,所以不能使用它。

  • AddJob(String, PrintTicket)

这需要XPS文件的物理文件位置。因为我的文件是一个字节流,所以不能使用这个

  • AddJob(String, String, Boolean)

此方法还需要物理文件位置

  • AddJob(String, String, Boolean, PrintTicket)

需要物理文件位置

因此如何从字节流中打印XPS文件。我不想为此使用任何第三方库

1 个答案:

答案 0 :(得分:1)

您是否尝试过以下重载:

AddJob () - 将一个新的(通用名称)打印作业(其内容为Byte数组)插入队列。

从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();