0

我熟悉 ios 和 AirPrint 功能。但是,我想在没有看到打印对话框的情况下打印到我的打印机,并且找不到正确的 API 调用。

有人遇到过这种情况么?

4

4 回答 4

1

从 iOS 8 开始,您可以在不显示打印对话框的情况下进行打印。查看UIPrintInteractionController(直接打印到打印机)

于 2014-11-04T13:02:06.250 回答
0

我像下面这样使用,有一次会出现打印机选择选项,之后每次都会发生无声打印

- (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);
                          }
                      }];
                 }

             }
         }];
    }

}

}

于 2017-09-11T07:52:39.187 回答
0
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)
}
于 2015-09-16T19:56:25.430 回答
-1

不,Apple 的政策是以用户理解正在发生的事情的方式制作。

于 2012-02-04T16:48:41.987 回答