2

我有一个使用杯子进行打印的 linux 应用程序,但我注意到如果我打印然后立即退出我的应用程序,我的打印输出永远不会出现。所以我假设我的应用程序必须等待它在退出之前真正从打印机中出来,所以有谁知道如何判断它何时完成打印?

我正在使用 libcups 打印我的应用程序生成的 postscript 文件。所以我使用命令打印文件,然后返回到我的应用程序。所以我的应用程序认为该文档在我猜它还没有到达打印机队列时已经进入打印机队列。因此,与其让我的所有用户都必须在屏幕上查看系统托盘中的打印机图标,我宁愿有一个代码解决方案,所以如果他们在它真正被发送之前尝试退出,我可以提醒他们这个事实. 此外,我生成的文件是一个临时文件,所以很高兴知道它何时完成,以便我可以删除它。

4

4 回答 4

1

一旦您的 CUPS Web 界面 (localhost:631) 或其他可以查看 CUPS 所见内容的内容显示您 CUPS 收到了工作,您就可以退出应用程序。

于 2008-09-17T11:34:03.790 回答
1

lpr使用&之类的打印假脱机服务怎么样lpq

于 2008-10-10T11:24:21.330 回答
1

您当然不需要等到纸张从打印机中取出。但是,您需要等到 cupsd 在其假脱机区域(通常是/var/spool/cups/)中完全接收到您的临时文件。

如果您在命令行上打印(使用 CUPSlplpr命令之一),如果 shell 提示返回(该命令甚至会报告已发送作业的 CUPS 作业 ID)并且退出代码 ( $?) 为 0。

您没有指明您正在使用 libcups 的哪个部分以及哪个函数调用来实现您想要的。如果我必须这样做,我会使用 IPP 函数cupsSendRequest然后cupsGetResponse知道结果。

于 2010-06-11T11:18:05.967 回答
0

当您退出时,您的应用程序可能尚未完成打印。如果您使用 evince 打印 PDF 或其他文档,这是一个已知错误 - 没有视觉确认打印操作正在进行中。如果已提交打印作业,系统托盘中将出现一个打印机图标,直到实际打印完成。您可以单击系统托盘中的打印机图标,查看当前正在运行和待处理的作业。

于 2008-09-16T20:42:16.993 回答