小编典典

如何通过 Linux 中的 libcups 以编程方式获取当前打印机的名称?

all

我正在尝试使用 Linux 中的 libcups 库获取当前打印机的名称,但我找不到这样的方法。我只找到了如何获得完整的打印机列表,但如何找出要打印的打印机还不清楚。

#include <cups/cups.h>

QStringList getPrinters()
{    
   QStringList printerNames;
   cups_dest_t *dests;
   int num_dests = cupsGetDests(&dests);
   for (int pr = 0; pr < num_dests; ++pr) {
      QString printerName = QString::fromUtf8(dests[pr].name);
      printerNames.append(printerName);
   }
   cupsFreeDests(num_dests, dests);
   return printerNames;
}

阅读 131

收藏
2022-09-02

共1个答案

小编典典

一旦你有了一个有效的目的地 ( cups_dest_t),就可以通过以下方式检索信息:cupsGetOption

示例(来自https://openprinting.github.io/cups/doc/cupspm.html#basic-destination-information):

const char *model = cupsGetOption("printer-make-and-model",
                                  dest->num_options,
                                  dest->options);

要查找默认打印机,可以使用:

  • cupsGetDest(参数名称:默认目的地为 NULL)
  • cupsGetDests2(参数 http:连接到服务器或 CUPS_HTTP_DEFAULT)

其他建议是:

最后但并非最不重要的:


边注:

由于您使用的是 Qt,Qt 没有打印机支持吗?

例如

QPrinter::QPrinter(const QPrinterInfo &printer, QPrinter::PrinterMode mode = ScreenResolution);

(见https://doc.qt.io/qt-6/qprinter.html#QPrinter-1)

bool QPrinterInfo::isDefault() const;

(见https://doc.qt.io/qt-6/qprinterinfo.html#isDefault)

2022-09-02