0

我想用 C# 打印一个 XPS 文件。我将 XPS 文件作为字节流获取。我试图用课堂上AddJob提供的不同方法来实现这一点,但PrintQueue遇到了以下问题

  • AddJob(String)

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

  • AddJob(String, PrintTicket)

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

  • AddJob(String, String, Boolean)

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

  • AddJob(String, String, Boolean, PrintTicket)

需要物理文件位置

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

4

1 回答 1

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();
于 2013-04-12T04:47:43.763 回答