7

トランザクションを終了したときにネットワーク プリンターでレシートを印刷する必要がある iPad/iPhone アプリケーションを開発しています。UIPrintInteractionController ポップオーバーを適切に表示し、[印刷] ボタンをクリックして、Printer Simulator で結果を表示できるという点で、airprint 機能をある程度機能させることができました。私のアプリケーションの要件により、ポップオーバーのステップをスキップして、トランザクションを閉じるときに領収書を自動的に印刷したいと考えています。言い換えれば、余分なボタンクリックを追加することなく、事前に指定されたネットワークプリンターに印刷ジョブを送信することは可能ですか? UIPrintInteractionController クラスを拡張する必要がありますか? もしそうなら、誰かがこのアプローチで運が良かったですか?

他の代替の推奨事項も同様に素晴らしいでしょう。

4

3 に答える 3

1

クラスを使用してこれを行う方法はありません。これUIPrintInteractionControllerは、ユーザーに標準の印刷オプションを提供するように設計されており、これを回避するアプリ ストアの安全な方法はありません。

于 2012-02-25T20:39:18.127 に答える
0

これを試して

  - (IBAction)Print:(id)sender {
    [self searchForPrinters];
   }
 - (void) searchForPrinters
  {

  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.

             [btnSettingsPrint setTitle:printerPicker.selectedPrinter.displayName forState:UIControlStateNormal];

             NSURL *printerURL = printerPicker.selectedPrinter.URL;

         }
     }];
}
 }

 -(void)printYourItem :(NSData*)data
 {
 if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1)
  {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    UIPrinter *currentPrinterObj = [UIPrinter printerWithURL:[NSURL URLWithString:[defaults stringForKey:@"YouKeys"]]];

    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);
             }
         }];
    }
}
}
于 2015-08-09T15:30:59.473 に答える