Техническое примечание TN2248

Используя какао и ядро, распечатывающее вместе

Иллюстрирует, как использовать базовые объекты печати вместе с Какао.

Введение
Изменение настроек печати
Программируемый бумажный выбор
История версии документа

Введение

Какао обеспечивает существенную реализацию по умолчанию печати, удовлетворяющей большинство потребностей. Когда Вы хотите настроить вещи, к которым нельзя непосредственно получить доступ от объектов печати Какао, можно вызвать через к Базовой функциональности Печати по мере необходимости. Это примечание иллюстрирует, как использовать Ядро, Распечатывающее APIs вместе с Какао. Как примеры, это демонстрирует, как получить доступ и изменить общие настройки печати, и как программно изменить формат бумаги, в то время как хранение Какао printInfo объект синхронизировалось с Вашими изменениями.

Изменение настроек печати

Этот фрагмент кода иллюстрирует, как получить настройки печати из объекта printInfo, изменить их, и затем уведомить Какао, что были изменены настройки. Код показывает изменение числа копий и сопоставления включения, но тех же работ метода для других настроек печати.

Перечисление 1  , Изменяющее настройки печати с Базовой Печатью.

/*
        This is a short code snippet to demonstrate how to modify 
        print settings information that is stored in an NSPrintInfo.

        This code performs no error handling for simplicity of presentation in a sample.

        The Cocoa methods used here are available only on Mac OS X 10.5 and later.
*/

        // Obtain the printInfo you want to modify.
        // This code assumes the variable myPrintInfo holds
        // an object of class NSPrintInfo.
        // Where myPrintInfo comes from is up to your application.

        // Get the PMPrintSettings object from the printInfo.
        PMPrintSettings settings = [myPrintInfo PMPrintSettings];

        // Modify/Set the settings of interest.
        // This code sets the number of copies requested to 10.
        (void)PMSetCopies(settings, 10, false);

        // Turn on collation so that the copies are collated.
        (void)PMSetCollate(settings, true);

        // Tell Cocoa that the print settings have been changed. This allows
        // Cocoa to perform necessary housekeeping.
        [myPrintInfo updateFromPMPrintSettings];

Программируемый бумажный выбор

Этот фрагмент кода иллюстрирует, как заменить одно из низкоуровневого Ядра Распечатывающие объекты, хранившие в NSPrintInfo с пользовательским объектом, который Вы получаете или создаете, в этом случае объект, настраивающий формат страниц.

Перечисление 2  , Заменяющее объект PageFormat.

/*
        This is a short code snippet to demonstrate how to replace
        the PMPageFormat stored in an NSPrintInfo with one you obtain
        or create. 

        The purpose of this code is to demonstrate how to completely replace
        one of the low level CorePrinting objects stored in an NSPrintInfo
        with one you obtain or create. Programmatic paper selection as
        demonstrated here may be appropriate for an application that is performing
        automated printing of data.
        This code performs no error handling for simplicity of presentation in a sample. 
        The Cocoa methods used here are available only on Mac OS X 10.5 and later.

        Here are the steps this code takes:

        1) Obtain a PMPaper object from those available for the currently selected printer. To do this:
                1a) Obtain the currently selected printer.
                1b) Get an array of the pre-defined papers for that printer.
                1c) Choose a paper from that list that meets your criteria.
        2) Make that paper the current paper for your Cocoa print job. To do this:
                2a) Create a PMPageFormat from the chosen paper.
                2b) Copy that page format into the page format stored in the NSPrintInfo you want to modify.
                2c) Tell Cocoa you have made a change to the PageFormat in the NSPrintInfo.

*/

        // Obtain the printInfo you want to modify.
        // This code assumes the variable myPrintInfo holds
        // an object of class NSPrintInfo.
        // Where myPrintInfo comes from is up to your application.

        // Get the PMPrintSession from the printInfo.
        PMPrintSession session = [myPrintInfo PMPrintSession];

        PMPrinter currentPrinter = NULL;
        // Get the current printer from the session.
        (void)PMSessionGetCurrentPrinter(session, &currentPrinter);

        // Get the array of pre-defined PMPapers this printer supports.
        CFArrayRef paperList = NULL;
        (void)PMPrinterGetPaperList(currentPrinter, &paperList);

        // Pick a paper from the list, using the appropriate criteria for your application.
        // This code simply chooses the first paper in the list. More likely you would use
        // information from your data (perhaps obtained from a database) to determine
        // which paper in the paperList best meets the current need.
        // Of course randomly choosing from the list is NOT appropriate criteria but
        // is done for purposes of simplifying this sample.
        PMPaper theChosenPaper = (PMPaper)[(NSArray *)paperList objectAtIndex: 0];

        // Create a PMPageFormat from that paper.
        PMPageFormat theChosenPageFormat = NULL;
        (void)PMCreatePageFormatWithPMPaper(&theChosenPageFormat, theChosenPaper);

        // Get the PMPageFormat contained in the printInfo.
        PMPageFormat originalFormat = [myPrintInfo PMPageFormat];

        // Copy over the original format with the new format you want to use.
        (void)PMCopyPageFormat(theChosenPageFormat, originalFormat);

        // Tell Cocoa you that changed the page format. This allows Cocoa
        // to perform the necessary housekeeping.
        [myPrintInfo updateFromPMPageFormat];

        // Release the PMPageFormat this code created.
        PMRelease(theChosenPageFormat);


История версии документа


ДатаПримечания
27.05.2009

Новый документ, описывающий, как изменить настройки печати и позволить программируемый бумажный выбор.