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

Posted

技术标签:

【中文标题】将 PrintQueue 对象从一台计算机发送到另一台计算机?【英文标题】:Send PrintQueue object from one computer to another? 【发布时间】:2015-08-11 01:02:36 【问题描述】:

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

        PrintQueue pq = LocalPrintServer.GetDefaultPrintQueue();
        PrintJobInfoCollection pjic = pq.GetPrintJobInfoCollection();
        foreach( var printjob in pjic)
        
            Console.WriteLine(printjob.Name);
        
        Console.ReadLine();

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

【问题讨论】:

【参考方案1】:

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

    将打印服务器设置为您想要的计算机 从打印服务器获取打印队列 迭代作业并将每个作业添加到该 PrintQueue

不幸的是,我找不到任何直接添加打印作业的方法,我找到的是 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。

【讨论】:

以上是关于将 PrintQueue 对象从一台计算机发送到另一台计算机?的主要内容,如果未能解决你的问题,请参考以下文章

如何将推送通知从一台 iPhone 设备发送到另一台设备? [关闭]

在 iOS 中将推送通知从一台设备发送到另一台设备

如何保护 JWT 令牌以避免将其从一台计算机共享到另一台计算机

如何将 Python/Anaconda 虚拟环境从一台计算机复制到另一台计算机?

如何检测我通过蓝牙连接从一台设备发送到另一台设备的消息

将核心数据数据库从一台设备传递/导出到另一台设备