Rob*_*inC 6 printing ios xamarin
场景:引导模式锁定的应用程序接受一些用户输入(名称等)并将它们打印出来.用户无法选择打印机.
我计划的解决方案是保存打印机的URL,我有以下形式:
ipp://<hostname>.local.:5001/<printername>
Run Code Online (Sandbox Code Playgroud)
要从此存储的字符串构建UIPrinter对象:
var printerURL = NSUrl.FromString(SettingsService.OptPrinterUrl);
var printer = UIPrinter.FromUrl(printerURL);
Run Code Online (Sandbox Code Playgroud)
然后我打电话给:
printer.ContactPrinter((available) => {
if (available) {
//
}
});
Run Code Online (Sandbox Code Playgroud)
要么
var printInterface = UIPrintInteractionController.SharedPrintController;
printInterface.PrintToPrinter(printer, (handler, completed, error) =>
{
if (!completed && error != null) {
UIAlertView alert = new UIAlertView("Guest Check-In App", "Print Error", null, "Ok", null);
alert.Show();
}
});
Run Code Online (Sandbox Code Playgroud)
没有积极的结果.
但是,当使用从UIPrinterPickerController返回的UIPrinter对象时(如下所示),它都可以工作.
var printerPicker = UIPrinterPickerController.FromPrinter(null);
printerPicker.PresentFromRect(new CGRect(0,0,100,100),this.View,true, delegate(UIPrinterPickerController handler, bool completed, NSError error) {
printer = printerPicker.SelectedPrinter;
});
Run Code Online (Sandbox Code Playgroud)
我甚至尝试从PrinterPicker获取UIPrinter对象,并尝试使用从PrinterPicker获取的UIPrinter对象中的url使用UIPrinter.FromUrl构建新的UIPrinter.
我只能创建一个工作的UIPrinter对象而不直接使用UIPrinterPickerController中的那个,如下所示:
var printerPicker = UIPrinterPickerController.FromPrinter(null);
printerPicker.PresentFromRect(new CGRect(0,0,100,100),this.View,true, delegate(UIPrinterPickerController handler, bool completed, NSError error) {
printerPickerPrinter = printerPicker.SelectedPrinter;
});
var printer = (UIPrinter)UIPrinter.FromObject(printerPickerPrinter);
Run Code Online (Sandbox Code Playgroud)
总结我需要的是一种"记住"打印机的方法,并使用该打印机在xamarin构建的iOS应用程序中自动打印.
这是一个 iOS 错误。我向 Apple Bug Reporter (47180997) 报告,他们给了我一个蹩脚的答复:
\n\n\nLinux 上的共享打印机无法使用此 contactPrinter 方法。它要求打印机属性成功返回。即使其他部分出现故障,我们通常仍然会发送打印作业。
\n为了使这些方法正常工作,服务器必须是经过许可且正确实施的 AirPrint 服务器。某处运行的 CUPS 还不够\xe2\x80\x99。
\n
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |