7

クライアント向けの潜在的なアプリを調査していますが、答えが見つからない質問がありました。私がやりたいのは、UIPrintInteractionControllerget を表示せずに自動的に印刷することです。重要な点は、これは本番アプリではないということです。そうしないと、ユーザーの同意なしに印刷するだけでユーザーのプライバシーが侵害される可能性があることはわかっていますが、これも App Store での公開アプリにはなりません。これができると思われるアプリを見つけたのはPrinter Pro. ユーザーはテストページを印刷するように求められ、ページは表示されずに印刷されます.UIPrintInteractionControllerこのアプリはストアにあるので、合法的な方法があると思います. これがどのように行われるか知っている人はいますか?

4

2 に答える 2

3

次の手順に従って、プロンプトを表示せずにドキュメントを印刷します。

以下のコードを使用してデバイスを最初に検索...

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.

                NSURL *printerURL = printerPicker.selectedPrinter.URL;

                NSLog(@"printerURL--->%@",printerURL.absoluteString);

                NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
                [defaults setObject:[printerURL absoluteString] forKey:@"printURL"];
                [defaults synchronize];
            }
    }];
}

そして、以下のコードを使用してプロンプトを表示せずにドキュメントを印刷します...

if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

   UIPrinter *currentPrinterObj = [UIPrinter printerWithURL:[NSURL URLWithString:[defaults stringForKey:[defaults stringForKey:@"printURL"]]]];

   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);
            }
        }];
    }
}
于 2016-11-15T12:55:53.880 に答える