从 PDFView 打印时如何确定打印面板是否已成功关闭

How to find out if print panel was closed successfully when printing from a PDFView

我需要知道 PDFViewPDFDocument 是否已成功打印,以便之后做一些内务处理。 从 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 时添加回调。