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