我熟悉 ios 和 AirPrint 功能。但是,我想在没有看到打印对话框的情况下打印到我的打印机,并且找不到正确的 API 调用。
有人遇到过这种情况么?
从 iOS 8 开始,您可以在不显示打印对话框的情况下进行打印。查看UIPrintInteractionController(直接打印到打印机)
我像下面这样使用,有一次会出现打印机选择选项,之后每次都会发生无声打印
- (void)printCard:(UIImage*)printImage{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSURL *printURL = [NSURL URLWithString:[defaults stringForKey:@"printURLLink"]];
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
{
if(printURL)
{
UIPrinter *printer = [UIPrinter printerWithURL:printURL];
[UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printer];
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
controller.printingItem = printImage;
if(printer)
{
[controller printToPrinter:printer 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);
}
}];
}
}
else
{
UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
[printPicker presentFromRect:printCardBtn.frame inView:self.view animated:YES completionHandler:
^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error)
{
if (userDidSelect)
{
[UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
NSURL *printerURL = printerPicker.selectedPrinter.URL;
NSLog(@"printerURL--->%@",printerURL.absoluteString);
[defaults setObject:[printerURL absoluteString] forKey:@"printURLLink"];
[defaults synchronize];
UIPrinter *printer = [UIPrinter printerWithURL:printerURL];
[UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printer];
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
controller.printingItem = printImage;
if(printer)
{
[controller printToPrinter:printer 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);
}
}];
}
}
}];
}
}
}
class func printEvent(view : UIView , image: UIImage){
let printController = UIPrintInteractionController.sharedPrintController()!
let printInfo = UIPrintInfo(dictionary:nil)!
printInfo.outputType = UIPrintInfoOutputType.General
printInfo.jobName = "print Job"
printController.printInfo = printInfo
printController.printingItem = image
let url = NSURL(string: "http://192.168.10.173:631/ipp/print")
let printerObj = UIPrinter(URL: url!)
printController.printToPrinter(printerObj, completionHandler: nil)
}
不,Apple 的政策是以用户理解正在发生的事情的方式制作。