Есть ли способ «тихой печати» с помощью ios AirPrint (например, без диалогового окна печати)? - PullRequest
0 голосов
/ 14 ноября 2011

Я знаком с функциями ios и AirPrint.Однако я хотел бы печатать на своем принтере, не видя диалоговое окно печати, и не могу найти правильные вызовы API.

Кто-нибудь еще сталкивался с этим?

Ответы [ 4 ]

1 голос
/ 04 ноября 2014

Начиная с iOS 8 вы можете печатать без отображения диалогового окна печати. Проверьте UIPrintInteractionController (печать непосредственно на принтер)

0 голосов
/ 11 сентября 2017

Я использую, как показано ниже, один раз придет вариант выбора принтера, и после него каждый раз будет происходить тихая печать

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

             }
         }];
    }

}

}

0 голосов
/ 16 сентября 2015
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)
}
0 голосов
/ 04 февраля 2012

Нет, это политика Apple, направленная на то, чтобы пользователь понимал происходящее.

...