Печать невидимого NSView - PullRequest
3 голосов
/ 13 марта 2010

Изначально я создал простую программу с настраиваемым NSView. Я нарисовал картинку (сертификат) и распечатал ее! прекрасный! Все работало отлично!

Затем я перенес свой собственный NSView в существующее приложение. Я надеялся, что когда пользователь нажмет на печать, он напечатает этот сертификат. Достаточно просто. Я подумал, что может иметь указатель NSView в моем коде контроллера. Тогда при инициализации я бы заполнил указатель. Затем, когда кто-то хотел напечатать сертификат, он распечатал. Проблема в том, что весь мой код рисования находится в методе «drawRect». Этот метод не вызывается, потому что это представление никогда не отображается в окне.

Я слышал, что другие используют невидимые объекты NSView только для печати. Что мне нужно сделать? Я действительно не хочу показывать это представление на экране.

Rodger

1 Ответ

2 голосов
/ 13 марта 2010

Вам не нужно создавать вид заранее, вы можете создать его при необходимости.

Если у вас есть приложение на основе документов и представление, которое вы хотите выгрузить на принтер, то в нашем MyDocument (или как вы его называете) расширении NSDocument вы бы реализовали:

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
                                           error:(NSError **)e

Вид затем использует стандартный drawRect: для рисования.

Пример, здесь PeopleView просто рисует table данных о людях, здесь требуется NSDictonary людей employees здесь:

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
                                           error:(NSError **)e
{
    PeopleView * view = [[PeopleView alloc] initWithPeople:employees];
    NSPrintInfo * printInfo = [self printInfo];
    NSPrintOperation * printOp
        = [NSPrintOperation printOperationWithView:view
                                         printInfo:printInfo];
    [view release];
    return printOp;
}

Более подробную информацию вы можете найти в главе 27, «Печать», в Hillegass «Программирование какао для Mac OS X».

...