【发布时间】:2011-04-23 11:45:12
【问题描述】:
我有这样的打印功能:
- (void)sendToPrinter:(int)code {
NSPrintInfo *printInfo;
NSPrintInfo *sharedInfo;
NSPrintOperation *printOp;
NSMutableDictionary *printInfoDict;
NSMutableDictionary *sharedDict;
sharedInfo = [NSPrintInfo sharedPrintInfo];
sharedDict = [sharedInfo dictionary];
printInfoDict = [NSMutableDictionary dictionaryWithDictionary:
sharedDict];
[printInfoDict setObject:NSPrintSpoolJob
forKey:NSPrintJobDisposition];
printInfo = [[NSPrintInfo alloc] initWithDictionary: printInfoDict];
[printInfo setHorizontalPagination: NSAutoPagination];
[printInfo setVerticalPagination: NSAutoPagination];
[printInfo setVerticallyCentered:NO];
[printInfo setLeftMargin:10];
[printInfo setRightMargin:10];
[printInfo setTopMargin:10];
[printInfo setBottomMargin:10];
[printInfo setScalingFactor:1.1];
printOp = [NSPrintOperation printOperationWithView:sheet
printInfo:printInfo];
[printOp setShowsPrintPanel:YES];
[printOp runOperation];
}
这会打印一个名为 sheet 的页面预览表示,它是一个NSBox。这工作正常。
有时我有更多的信息可以放在一个页面上,所以我有“下一页”按钮,通过重新加载 sheet 与相关数据。这很好用。
现在,如果我想打印适合 2 或 3 页而不是 1 页的信息,我希望能够在打印之前手动输入 NSPrintInfo 或 NSPrintOperation 其他页面,而不是分页.比如:
printOp = [NSPrintOperation printOperationWithView:sheet
printInfo:printInfo];
[self nextPage];
printOp = [NSPrintOperation printOperationWithView:sheet
printInfo:printInfo];
[self nextPage];
printOp = [NSPrintOperation printOperationWithView:sheet
printInfo:printInfo];
// run this in loop until all the pages are accounted for
[printOp setShowsPrintPanel:YES];
[printOp runOperation];
有什么解决办法吗?提前致谢。
【问题讨论】:
-
我正在阅读有关使用 PDFView 或 Quartz 的建议。这可能是我走的一条路线,但考虑到我正在打印一个 NSBox,这似乎是 OTT,并且通过一种快速方法,可以将整个 NSBox 更改为每个后续页面。我只想让打印操作接受与 page2、page3 等相同的 NSBox,并快速调用将 NSBox 更改为相关页面的方法。
-
还可以看看这个教程:cocoadevcentral.com/articles/000074.php 它确实帮助我解决了打印问题。
标签: objective-c xcode macos nsprintoperation