2009-11-30 3 views
1

Я хочу напечатать конкретный NSView. Когда я это сделаю, я хочу добавить контент в заголовок страницы печати.Цель C Печать: как настроить содержимое заголовка?

например. Если NSView содержит изображение кошки, когда я нажимаю печать, отображается предварительный просмотр с изображением кошки. Я хочу, чтобы распечатка была изображением кошки с надписью «Cat» в заголовке, которую я не хочу видеть в исходном NSView.

Кроме того, если это возможно, можно ли также добавлять изображения?

Спасибо!

+2

Не путайте язык (Objective-C) с API (Cocoa). Последнее - то, что обрабатывает взгляды и печать, первый - это язык, на котором он был написан. :-) Retagged для ясности. –

+0

Спасибо за головы! – Michael

ответ

7

Вы можете переписать метод - (NSAttributedString *)pageHeader в вашем NSView подкласса. См. Документацию от Apple here.

Обратите внимание, что заголовки генерируются только в том случае, если пользовательские значения по умолчанию содержат ключ NSPrintHeaderAndFooter со значением ДА.

Что касается изображений, то их можно добавить в NSAttributedString, используя NSTextAttachment.

+0

Спасибо! Очень полезно – Michael

+0

Я переписал метод pageHeader с помощью специального подкласса PrintView. Это работает, но есть действительно раздражающее предупреждение: «Несовместимые объекты-типы C-типов» PrintView * ', ожидаемый' struct NSView * 'при передаче аргумента 1 из' printOperationWithView: printInfo: 'из отдельного объекта Objective-C распечатка прекрасна, и программа работает, но есть ли способ избавиться от сообщения? – Michael

+1

Похоже, что компилятор не знает, что ваш PrintView является подклассом NSView. Вы импортировали PrintView.h, где вы назвали печать метод? –

2

Если вы хотите нарисовать что-то по-другому на экране, чем на принтере, вы можете использовать метод isDrawingToScreen в методе drawRect :.

Например:

if (![[NSGraphicsContext currentContext] isDrawingToScreen]) { 
//draw printer headers and images 
} 
+0

Спасибо, мне просто нужен заголовок на данный момент, но мне может понадобиться использовать это в будущем! – Michael

+0

Как вы видите невидимую часть вида с помощью drawRect? – aneuryzm