6

私のiOSアプリには、単純なNSStringのAirPrintingに使用されている次のコードがあります。

#pragma mark - Print
-(IBAction)print:(id)sender {

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    pic.delegate = self;

    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = @"Message";
    pic.printInfo = printInfo;

    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]initWithText:self.Message.text];
    textFormatter.startPage = 0;
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
    textFormatter.maximumContentWidth = 6 * 72.0;
    pic.printFormatter = textFormatter;
    pic.showsPageRange = YES;

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
        if (!completed && error) {
            NSLog(@"Printing could not complete because of error: %@", error);
        }
    };
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler];
    } else {
        [pic presentAnimated:YES completionHandler:completionHandler];
    }
}

プロジェクトを(テストするために)実行すると、UIPrintInteractionControllerで[印刷]をタップしたときに出力デバッガウィンドウに表示されるエラーは次のとおりです。

Simulated\032InkJet\032@\032USER\032NAME\032iMac._ipp._tcp.local.: startJob: Unable to connect to printd: Connection refused

PrintSimulatorを使用しているiOS5.1Simulatorでこのエラーが発生します。なぜこのエラーが発生するのですか?プリントシミュレーターの使い方と関係がある気がします。

助けていただければ幸いです。補足として、BarButtonItemではなくiPadの通常のUIButtonからUIPrintInteractionコントローラーを表示する方法を知っている人はいますか?

編集:iOS 6.0以降で共有シートを使用すると、AirPrintが自動的にセットアップされることに注意してください。

4

3 に答える 3

11

私はまったく同じ問題を抱えていましたが、基本的にミンスミートの答えで問題が解決しました。しかし、私は最初にいくつかのフープを飛び越えなければなりませんでした。最終的には、ある種のファイルパーミッションの問題でした。

私は次のことを行いました(管理者アクセスが必要です):

  1. ターミナルを開き、フォルダ/ private / var /tmp/に移動します

  2. 'whoami'と入力すると、正確なユーザー名が表示されます。

  3. ユーザー名が「dogtest」であるとしましょう。'sudo chown dogtest:adminprinted'と入力します。基本的に、自分が何をしているかを確認するように求める警告が表示されます。

  4. 管理者パスワードを入力し、Enterキーを押します。

  5. これで、印刷されたファイルの所有権があり、それを使ってやりたいことができます。'mv printd printd-ren'と入力して、ファイルの名前を別の名前に変更します。

  6. iOSSimlulatorとPrinterSimulatorを開きます。

  7. iOSシミュレーターでSafariを開き、任意のWebページに移動します。

  8. 中央下の[共有]ボタンをタップして、[印刷]を選択します。

  9. プロンプトに従って、印刷を完了します。プリンタシミュレータのログウィンドウに、さらに多くのアクティビティが表示されるはずです。この時点で、印刷されたファイルはアカウントのアクセス許可で再作成されます(これは良いことです)。

  10. iOSSimlulatorとPrinterSimulatorの両方を終了します。

  11. シミュレーターでiOSアプリを再実行してから、プリンターシミュレーターを再度開きます。

  12. これで、アプリからAir Printをシミュレートできるようになり、プリントアウトがプレビューでPDFとして開きます。

これで問題が解決するか、少なくとも正しい方向に向けられることを願っています。幸運を。

于 2012-08-04T02:39:52.827 に答える
3

削除してみてください

/ private / var / tmp / printd

于 2012-04-15T16:32:06.660 に答える
2

プリンターシミュレーターが機能しなくなり、エラーがまったく発生しませんでした。私はさまざまなシミュレーターを試し、それらをリセットし、コンピューターを再起動し、上記のように印刷されたものを強制終了しました。

結局、私にとってそれを修正したのは、ネットワーク接続を変更することでした。当時、私は、wifiとイーサネットケーブル(thunderbolt経由)をMacBookに接続していました。wifiとイーサネットの両方が同じネットワークに接続されていました。イーサネットケーブルを外すと、すぐに再び機能し始めました。

Appleに感謝します、どこで20分を取り戻すことができますか:)

于 2015-06-14T22:03:57.410 に答える