从 PDFView 打印时如何确定打印面板是否已成功关闭
How to find out if print panel was closed successfully when printing from a PDFView
我需要知道 PDFView
的 PDFDocument
是否已成功打印,以便之后做一些内务处理。
从 NSDocument
打印常规 NSView
时,我可以做
NSPrintOperation *op = [NSPrintOperation
printOperationWithView:myRegularPrintView
printInfo:self.printInfo];
[op setCanSpawnSeparateThread:NO]; // Because we want to clean up afterwards
[op setShowsPrintPanel:YES];
[self runModalPrintOperation:op
delegate:self
didRunSelector:@selector(documentDidRunModalPrintOperation:success:contextInfo:)
contextInfo:NULL];
在 documentDidRunModalPrintOperation
回调中我可以做内务处理。但是打印 PDFView
的内容只有在我调用
时才能正常工作
[myPDFView printWithInfo:[NSPrintInfo sharedPrintInfo] autoRotate:YES];
所以我看不出 运行 带有回调函数的打印操作,该函数将在打印面板关闭时调用。
自 macOS 10.7 以来,PDFDocument
中有一个函数,其中 returns 一个 NSPrintOperation
,因此可以简单地执行
NSPrintOperation *op = [myPDFView.document printOperationForPrintInfo:self.printInfo scalingMode:kPDFPrintPageScaleToFit autoRotate:YES];
然后像正常 NSView
一样继续并在调用 runModalPrintOperation
时添加回调。
我需要知道 PDFView
的 PDFDocument
是否已成功打印,以便之后做一些内务处理。
从 NSDocument
打印常规 NSView
时,我可以做
NSPrintOperation *op = [NSPrintOperation
printOperationWithView:myRegularPrintView
printInfo:self.printInfo];
[op setCanSpawnSeparateThread:NO]; // Because we want to clean up afterwards
[op setShowsPrintPanel:YES];
[self runModalPrintOperation:op
delegate:self
didRunSelector:@selector(documentDidRunModalPrintOperation:success:contextInfo:)
contextInfo:NULL];
在 documentDidRunModalPrintOperation
回调中我可以做内务处理。但是打印 PDFView
的内容只有在我调用
[myPDFView printWithInfo:[NSPrintInfo sharedPrintInfo] autoRotate:YES];
所以我看不出 运行 带有回调函数的打印操作,该函数将在打印面板关闭时调用。
自 macOS 10.7 以来,PDFDocument
中有一个函数,其中 returns 一个 NSPrintOperation
,因此可以简单地执行
NSPrintOperation *op = [myPDFView.document printOperationForPrintInfo:self.printInfo scalingMode:kPDFPrintPageScaleToFit autoRotate:YES];
然后像正常 NSView
一样继续并在调用 runModalPrintOperation
时添加回调。