我正在研究客户端的潜在应用程序,并且我有一个问题,我无法找到答案。我想要做的是自动打印,而不显示UIPrintInteractionController
。我应该做的一个重要的点是这个不会是一个生产应用程序。我知道否则这可能会违反用户的隐私,仅在未经用户同意的情况下进行打印,但这又不会成为App Store上的公共应用程序。我发现的一个应用程序似乎能够做到这一点是Printer Pro
。系统会提示用户打印测试页,并在没有出现UIPrintInteractionController
的情况下打印页面 - 此应用程序在商店中,因此我假设有合法的方式来执行此操作。任何人都知道这是如何完成的?iOS打印不允许UIPrintInteractionController出现
回答
据我知道这是不可能的iOS7打印,而不必调用UIPrintInteractionController
和显示系统打印对话框。
但是,iOS8现在提供了直接打印到打印而不显示对话框的规定。其基本思想是,你获得UIPrinter
对象,并结合使用与UIPrintInteractionController
新- printToPrinter:completionHandler:
方法,而不显示对话框进行打印。
为您的打印机获取UIPrinter
对象可以通过几种方法完成。
最直接的方法是使用新的UIPrinterPickerController
。但是这会显示一个对话框,因此不能满足您的需求。
另一种方法是使用UIPrinter
方法 + printerWithURL:
通过其URL创建打印机。我不完全清楚如何获取此URL,但它可能包含在打印机的HTML管理页面中。我相信你可以使用Bonjour API以编程方式获得它。更多资讯:
Bonjour是一个服务发现API包括IPP打印机的发现,其是通过AirPrint的使用的协议。
至于打印机Pro的应用程序是如何能够没有iOS7一个对话框,以打印,我猜他们是在一个非常低的水平与打印机交互(例如原帖HTTP等)。
这工作得很好,貌似除了打印机共享杯(即在Ubuntu的)。例如,我无法通过printToPrinter打印到与ubuntu/CUPS共享的两台打印机:在我的应用程序中,但我的应用程序可以直接打印到我的两台佳能CP910打印机。同时,原生的Photos应用程序可以打印到我的2台由ubuntu/CUPS共享的打印机。所以没有一切工作与printToPrinter: – xaphod
更新:我找到了解决方法是同时存储的URL打印机和强大的参考UIPrinter为好。如果URL无法连接,请直接尝试UIPrinter。令人惊讶的是这个工程...看起来像一个iOS 8的错误,因为没有理由不能使用URL AFAIK – xaphod
按照以下步骤打印文档,而不提示..
首先搜索设备使用下面的代码...
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
[printPicker presentAnimated:YES completionHandler:
^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error) {
if (userDidSelect) {
//User selected the item in the UIPrinterPickerController and got the printer details.
[UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
// Here you will get the printer and printer details.ie,
// printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
NSURL *printerURL = printerPicker.selectedPrinter.URL;
NSLog(@"printerURL--->%@",printerURL.absoluteString);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[printerURL absoluteString] forKey:@"printURL"];
[defaults synchronize];
}
}];
}
并打印文档,而无需通过使用下面的代码提示。 ..
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
UIPrinter *currentPrinterObj = [UIPrinter printerWithURL:[NSURL URLWithString:[defaults stringForKey:[defaults stringForKey:@"printURL"]]]];
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
if(currentPrinterObj) {
[controller printToPrinter:currentPrinterObj completionHandler:^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if(completed) {
} else {
NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code);
}
}];
}
}
编辑帖子并缩进代码(代码按钮) –
- 1. 不使用UIPrintInteractionController打印
- 2. UIPrintInteractionController打印问题
- 3. UIPrintInteractionController错误没有airprint打印机发现
- 4. UIPrintInteractionController - 限制打印副本/获取打印副本数
- 5. $ .ajax():不允许出现null null
- 6. 双打印之前允许回应
- 7. 允许用户隐藏打印样式
- 8. 数字签名保护的PDF(打印不允许,签约允许)
- 9. 允许iOS中
- 10. UIPrintInteractionController不能打印到iPhone中的整个页面
- 11. IE 11将不会打印或允许从Web应用程序打印预览
- 12. 不允许现场验证
- 13. “打印不允许”在OSX应用程序
- 14. 输入字段将不允许打印一些操作员
- 15. 只有私人文件查看(下载,不允许打印)
- 16. 如何打印错误405方法不允许给用户
- 17. 打印对话框不出现
- 18. Datatables“打印”按钮不出现
- 19. 打印控制器不出现
- 20. 打印按钮不会出现在Firefox
- 21. C-窗口/打印不出现
- 22. midori允许脚本打开弹出框
- 23. 打印出现在Excel
- 24. 阵列允许不允许
- 25. 加密PDF文件使用的iText不允许的内容复印和打印
- 26. 即使已将java策略设置为允许打印,Applet仍无法打印
- 27. 使用AirPrint和UIPrintInteractionController的自定义打印选项
- 28. “当对象打开时不允许操作”VB6中出现错误
- 29. iOS约束不允许使用乘数
- 30. 的iOS重复记录不允许
曾经得到一个答案? –
不幸的是,没有。这里是一个相关链接http://stackoverflow.com/questions/5135781/ipad-iphone-printing-directly-to-a-network-printer-without-airprint-popover?rq=1 – coder