Определение, способен ли принтер к выводу цвета.
Q: Как я определяю, может ли текущий принтер распечатать в цвете?
A: Как я определяю, может ли текущий принтер распечатать в цвете?
Не возможно окончательно определить, может ли принтер распечатать в цвете. Можно определить, объявляет ли PPD связанный принтер как способный цвет, но PPD не требуется, чтобы объявлять это. Альтернативно принтер может быть способен к цвету, но помещенный в полутоновый режим пользователем. Наконец, не обычно возможно определить, может ли нецветной принтер произвести полутоновый вывод.
Можно определить, полагает ли PPD, что принтер способен к цвету путем поиска *ключевое слово ColorDevice в файле PPD принтера. Расширения Диалогового окна принтера (PDEs) могут получить соответствующий PPD для текущего принтера при помощи -ppdFile метод обратного вызова возражает, что им дают, когда инициализировано. Фильтры CUPS могут получить путь к файлу PPD для текущего принтера от PPD переменная окружения.
Перечисление 1 ниже шоу, как сделать это с точки зрения приложения.
При использовании цветной поддержки, чтобы влиять, как представить печатный вывод, необходимо всегда предоставлять метод пользователю для переопределения начального выбора.
Перечисление 1 , Определяющее, объявляет ли PPD ColorDevice
bool isPrinterColor(PMPrinter printer)
{
bool isColor = true;
CFURLRef ppdURL = NULL;
OSStatus err = PMPrinterCopyDescriptionURL(printer, kPMPPDDescriptionType, &ppdURL);
if((err == noErr) && (ppdURL != NULL))
{
char ppdPath[MAXPATHLEN];
if(CFURLGetFileSystemRepresentation(ppdURL, true, (UInt8*)ppdPath, sizeof(ppdPath)))
{
ppd_file_t *ppd = ppdOpenFile(ppdPath);
if(ppd != NULL)
{
ppd_attr_t *attr = ppdFindAttr(ppd, "ColorDevice", NULL);
if((attr != NULL) && (attr->value != NULL))
{
isColor = ppd->color_device;
}
ppdClose(ppd);
}
}
CFRelease(ppdURL);
}
return isColor;
} |
Приложения какао должны использовать NSPrintInfo PMPrintSession метод для получения PMPrintSession затем вызовите PMSessionGetCurrentPrinter получить ссылку PMPrinter, необходимую для isPrinterColor выше.
История версии документа
| Дата | Примечания |
|---|---|
| 24.09.2009 | Новый документ, описывающий эвристику, которую можно использовать, чтобы определить, поддерживает ли принтер вывод цвета. |