所以我必须创建一个打印PDF文件的控制台应用程序。由于我不能使用非自由库来打印PDF,我发现用于在.NET中打印PDF文件的大多数免费库使用类似于此的代码
func loadFileList(){
let defaults = NSUserDefaults.standardUserDefaults()
let login = defaults.valueForKey("login") as! String
let password = defaults.valueForKey("password") as! String
Alamofire.request(.GET, Links.apiUrl)
.authenticate(user: login, password: password)
.responseJSON { response in
let json = SwiftyJSON.JSON(response.result.value!)
for (_, value):(String, SwiftyJSON.JSON) in json {
let file: CacheFile! = CacheFile(filename: value["name"].string!, preview: value["preview"].string!, id: value["id"].string!)
print (file.filename)
dispatch_async(dispatch_get_main_queue(), {
self.fileList.append(file)
self.tableView.reloadData()
})
Alamofire.request(.GET, file.layoutURL)
.authenticate(user: login, password: password)
.responseJSON{ responseLayout in
let jsonLayout = SwiftyJSON.JSON(responseLayout.result.value!)
let layoutsArray = jsonLayout["layouts"]
for (_, layoutObj):(String, SwiftyJSON.JSON) in layoutsArray{
let alias = layoutObj["alias"].string!
let layoutFile: Layout! = Layout(name: layoutObj["name"].string!, alias: Int(alias))
print (layoutFile.name)
file.addLayout(layoutFile)
}
}
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
dispatch_async(dispatch_get_main_queue()) {
self.hideHUD()
}
}
}
我使用此代码开始打印过程。 我的问题是我需要在发生错误时监控打印。 我已经搜索了很多天,但我找不到任何适合我的东西,因为我无法使用WMI(打印机驱动程序不向假脱机程序报告其状态),我可以&#39 ; t使用PrintSystemJobInfo和PrintJobInfoCollection(我发现它适用于原生由.NET处理但不是PDF文件的文件),因此现在唯一可行的方法是使用PrintQueue管理打印。
现在我正在寻找使用它的正确方法,我现在正在做的是在PrintQueueStatus来自"无"时进入while循环。到"打印",并在状态进入"打印到"无"时离开循环,如下所示:
server.get('/signin', function(req, res, next) {
passport.authenticate('local-signin', function(err, user, reason) {
if (err) {
return res.sendStatus(500);
}
// login was successful if we have a user
if (user) {
// handle login success
return req.login(user, function(err) {
if (err) return res.sendStatus(500);
return res.send(user)
});
}
// otherwise we can determine why we failed
这不允许我轻松检查PrintQueueStatus的每个案例...... 我想过使用事件,但因为我是.NET的初学者,而且我不熟悉事件,也无法找到如何做到这一点。
所以问题主要在于,是否可以使用事件来监控PrintQueueStatus中的更改以及如何执行此操作。如果不可能,我该如何监控打印。
感谢。