最初我使用自定义NSView创建了一个简单的程序。我画了一张照片(证书)并打印出来!美丽!一切都很棒!
然后我将自定义NSView移动到现有应用程序。我希望当用户点击打印时,它会打印此证书。很简单。我想我的控制器代码中可能有一个NSView指针。然后在初始化时我会填充指针。然后,当有人想要打印证书时,它会打印出来。问题是我的所有绘图代码都在“drawRect”方法中。不会调用此方法,因为此视图永远不会显示在窗口中。
我听说其他人只使用不可见的NSView对象进行打印。我需要做什么?我真的不想在屏幕上显示这个视图。
罗杰
答案 0 :(得分:2)
您不必提前创建视图,您可以在需要时创建视图。
如果您有基于文档的应用程序和要转储到打印机的视图,那么在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可可编程”。