监控pdf文件的打印

时间:2015-10-20 09:18:12

标签: c# .net pdf printing monitoring

所以我必须创建一个打印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中的更改以及如何执行此操作。如果不可能,我该如何监控打印。

感谢。

0 个答案:

没有答案