2017-07-24 55 views
0

与此代码我可以打印PDF文件:nsprintoperation - 检查哪些用户已选择

let dictDocuments = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]) 
let completePath = dictDocuments.appendingPathComponent("test.pdf") 
let pdfDocument = PDFDocument(url: completePath!) 

let printInfoDict = NSMutableDictionary(dictionary: NSPrintInfo.shared().dictionary()) 
printInfoDict.setObject(NSPrintSpoolJob, forKey: NSPrintJobDisposition as NSCopying) 
let printInfo = NSPrintInfo(dictionary: printInfoDict as! [String : Any]) 
printInfo.isHorizontallyCentered = true 
printInfo.isVerticallyCentered = true 
printInfo.scalingFactor = 1.5 


let printOp = pdfDocument!.printOperation(for: printInfo, scalingMode: .pageScaleNone, autoRotate: true)! 
printOp.runModal(for: self.view.window!, delegate: self, didRun: nil, contextInfo: nil) 

我可以检查,用户在打印面板选择了哪个按钮? (取消或打印)

回答

0

documentation

的方法,由didRunSelector参数指定必须具有以下特征:

func printOperationDidRun(_ printOperation NSPrintOperation, success: Bool, contextInfo: UnsafeMutableRawPointer?) 

成功的值是true如果打印操作跑到无需取消或错误完成,否则返回false

如果您发送canSpawnSeparateThreadNSPrintOperation物体的true参数,然后在runOperationModalForWindow:delegate:didRunSelector:contextInfo:后续调用中指定的代表可在催生,非主线程传递消息。

+0

是的,我路上这个文件。但我不知道如何使用它:( – Ghost108

+0

而不是'... didRun:无...'传递'selector'' ... didRun:#selector(printOperationDidRun(_:success:contextInfo :))和 – vadian

+0

ah okay,谢谢。我试过'didRun:printOperation ...',但是“selector way”对我来说是新的 – Ghost108