将PrintQueue对象从一台计算机发送到另一台计算机?

时间:2015-08-11 01:02:36

标签: java c# printing network-programming

所以我有以下代码来访问本地打印机及其在C#中的当前作业:

forEach()

我想要做的是将此PrintQueue对象发送到另一台连接到打印机的计算机,并将此队列中的作业添加到该队列的作业中。基本上,这个想法是通过网络远程打印。我有一些Java的网络编程经验,但还不足以很好地转换成C#。所以我想知道是否有人可以为我分解。 (我知道有很多方法可以配置Windows / Mac OS来从远程打印机进行打印,但这个应用程序对我来说是一种学习体验)。谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道这是否有效,因为我还没有测试过,但想法是:

  1. 将PrintServer设置为您想要的计算机
  2. 从PrintServer
  3. 获取PrintQueue
  4. 迭代作业并将每个作业添加到PrintQueue
  5. 不幸的是,我找不到任何直接添加打印作业的方法,我发现的是PrintQueue.AddJob()方法,它接受一些参数,如作业名称,文档路径等。

    // Step 1: Set the PrintServer to the computer you want
    PrintServer printServer = new PrintServer("\\ANOTHER-COMPUTER-NAME");
    
    // Step 2: Get the PrintQueue from the PrintServer
    PrintQueue printQueue = printServer.GetPrintQueue("That Printer Name on Another Computer");
    
    // Step 3: Iterate over jobs and add each job to that PrintQueue
    foreach (var printjob in pjic)
    {
        printQueue.AddJob(printjob.Name, "document path here", true, pq.DefaultPrintTicket.Clone());
    }
    
    // and then do, like passing the printQueue to the PrintDialog
    PrintDialog printDialog = new PrintDialog();
    printDialog.PrintQueue = printQueue;
    

    要获取文档路径,可以参考此answer