Я пытаюсь установить подачу бумаги в объекте NSPrintInfo
В настоящее время я получаю параметры подачи бумаги (теперь уже в лотках) из вызова IPP
ipp_t *request;
request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, printer_uri);
respose = cupsDoRequest(http, request, "/");
...
string trays = ippGetString(ippFindAttribute(response, "media-source-supported", IPP_TAG_KEYWORD), 0, NULL);
Это возвращает мне разделенную запятыми строку с лотками принтера, например: auto,top,manual,tray-1
Вопрос 1: Есть ли другой способ получить поддерживаемые лотки с данного принтера ? (Если текст локализован, было бы лучше)
После этого, чтобы установить подачу бумаги в объект NSPrintInfo, я попробовал:
Опция 1
NSPrintInfo *printInfo;
// Initialization of printInfo and others...
PMPrintSettingsSetValue([printInfo PMPrintSettings], kPMPrimaryPaperFeedKey, (__bridge CFTypeRef _Nullable)(@<TRAY INDEX>), false);
Проблема в том, что я не знаю, что такое индексный лоток. Я предположил связь между выводом IPP и массивом с 0 индексами (0=auto, 1=top, 2=manual, 3=tray-1)
, поэтому я поместил вывод IPP в упорядоченный массив, но он не работает.
Вариант 2
NSPrintInfo *printInfo;
// Initialization of printInfo and others...
[[printInfo printSettings]setObject:@"<TRAY NAME>", forKey:@"InputSlot"];
Проблема в том, что я не могу получить «правильную» строку в трее (см. Скриншот)

Как видите, нет никакой связи между выводом IPP, локализованным текстом (в диалоге принтера) и тем, что диалог принтера записывает в NSPrintInfo (эквивалент: top = Cassette = Upper)
( NOTE Я должен сделать это по коду, я не могу использовать ни одно диалоговое окно ОС)