Необходимо напечатать пользовательский заголовок, используя obj-c
Я создаю NSView, и он хорошо печатается с этим фрагментом кода:
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
[printInfo setHorizontalPagination:NSFitPagination];
[printInfo setHorizontallyCentered:YES];
[printInfo setVerticallyCentered:YES];
NSPrintOperation *operation = [NSPrintOperation printOperationWithView:printView printInfo:printInfo];
NSPrintPanel *printerPanel = operation.printPanel;
printerPanel.options = NSPrintPanelShowsPaperSize | NSPrintPanelShowsPageRange | NSPrintPanelShowsOrientation | NSPrintPanelShowsPageSetupAccessory | NSPrintPanelShowsPreview;
[operation runOperationModalForWindow:window delegate:nil
didRunSelector:nil contextInfo:nil];
У меня также есть этот код в applicationDidFinishLaunching
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@YES forKey:NSPrintHeaderAndFooter];
Теперь, если я попытаюсь переопределить эти методы
- (void)drawPageBorderWithSize:(NSSize)pageSize
- (NSAttributedString *)pageHeader
Их даже не вызывают. Кто-нибудь знает почему?
2 ответа
Чтобы переопределить методы NSView, вы должны сначала создать подкласс для файла, а затем поместить переопределенные методы в новый пользовательский класс. Создайте экземпляр и используйте свой подкласс вместо NSView и не забывайте совершать супер-вызовы в переопределенных методах, чтобы все работало как положено. Не должно быть ничего другого, если у вас уже есть подкласс, вы можете опубликовать его, и я могу посмотреть.
На самом деле я сделал это: для многострочного ярлыка, который у меня есть в.xib, я добавил собственный класс в инспекторе
тогда у меня есть файлы.h & .m - это работает для текста, но не для изображений
NSTextFieldForPrint.h:
#import <Cocoa/Cocoa.h>
@interface NSTextFieldForPrint : NSTextField
@end
NSTextFieldForPrint.m
#import "NSTextFieldForPrint.h"
@implementation NSTextFieldForPrint
- (NSAttributedString *)pageHeader
{
NSLog(@"Am i called?");
NSAttributedString *theHeader = nil;
NSString *myImagePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"header.jpg"];
NSImage *pic = [[NSImage alloc] initWithContentsOfFile:myImagePath];
NSTextAttachmentCell *attachmentCell = [[NSTextAttachmentCell alloc] initImageCell:pic];
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
[attachment setAttachmentCell: attachmentCell ];
theHeader = [NSAttributedString attributedStringWithAttachment: attachment];
return theHeader;
//return [[NSAttributedString alloc] initWithString:@"adsfasdf"];
}
@end