我想用C#打印XPS文件。我将XPS文件作为字节流。我尝试使用AddJob
类中提供的不同PrintQueue
方法实现此目的,并遇到以下问题
AddJob(String)
这接受字节流并进行打印。但是这种方法会使文件假脱机很长时间,所以不能使用它。
AddJob(String, PrintTicket)
这需要XPS文件的物理文件位置。因为我的文件是一个字节流,所以不能使用这个
AddJob(String, String, Boolean)
此方法还需要物理文件位置
AddJob(String, String, Boolean, PrintTicket)
需要物理文件位置
因此如何从字节流中打印XPS文件。我不想为此使用任何第三方库
答案 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();