Один из подходов, который немного хакерский, но работает очень хорошо, - запустить две операции NSPrintOperation.
Мы используем это в коде печати нашего приложения, чтобы определить, выбрал ли пользователь обычный принтер или принтер чеков на панели печати. Приложение печатает совершенно разные документы для каждого типа принтера.
То есть в PyObjC непроверенный код:
def smartlyPrintView_(self, theViewToPrint):
# set up and run an initial NSPrintOperation to get printInfo
fakePrintOperation = NSPrintOperation.printOperationWithView_(theViewToPrint)
NSPrintOperation.setCurrentOperation_(fakePrintOperation)
if NSPrintPanel.printPanel().runModal() == True:
# get the printInfo so we can do stuff with it
printInfo = fakePrintOperation.printInfo()
# get rid of our fakePrintOperation
NSPrintOperation.currentOperation().cleanUpOperation()
# do stuff
# run a real NSPrintOperation without a printPanel
realPrintOperation = NSPrintOperation.printOperationWithView_printInfo_(theViewToPrint, printInfo)
realPrintOperation.setShowsPrintPanel_(False)
realPrintOperation.runOperation()
else:
NSPrintOperation.currentOperation().cleanUpOperation()
Рецепт, чтобы перевести это на Obj-C:
Добавьте некоторые объявления переменных, замените подчеркивания двоеточиями и чередуйте аргументы с предложениями метода. Смешайте в половине чашки муки и горсть точек с запятой. Варить на медленном огне тринадцать минут и подавать горячим. Удачи:)