iOS6

2013-01-29, ios

iOSの印刷機能を使う(AirPrint)

混沌としたプリンタの世界にはなるべく足を踏み入れたくないのですが…。怖いもの見たさで調べてみました。iOSの印刷機能を使用するためにUIPrintInteractionControllerというクラスが提供されています。まず、現在の環境で印刷機能を使えるかどうか判定するのが、以下のメソッドです。

[UIPrintInteractionController isPrintingAvailable]

続いて、印刷の実行です。EPSON EP-805Aでは、「用紙のサイズが違います」というエラーが出たものの、プリンタ側で「現在の用紙に(無理矢理)印刷する」という選択をすることで一応の印刷は可能でした。以下のコードは、そのサンプルの「印刷」ボタンに結びつけたアクションの実装部分です。現時点(2013.01.29)でまだ発売されていない書籍のRough cutを参照してますので、一部省略して掲載しています。

UIPrintInteractionController *print =
  [UIPrintInteractionController sharedPrintController];

UIPrintInfo *printInfo = [UIPrintInfo printInfo];

UISimpleTextPrintFormatter *textFormatter =
  [[UISimpleTextPrintFormatter alloc] initWithText:[self.textView text]];

print.printInfo = printInfo;
print.printFormatter = textFormatter;

: (省略、諸々の設定)

void (^completionHandler)(UIPrintInteractionController *,BOOL, NSError *)
  = ^(UIPrintInteractionController *print,BOOL completed, NSError *error)
    {
        if (!completed && error)
        {
            NSLog(@"Error!");
        }
    };
[print presentAnimated:YES completionHandler:completionHandler];

恐らく「どんなプリンタでも対応」するコードを書くのは至難の技でしょうが、限られた環境下での使用に耐えるだけのものは作れそうな気がします。

参考URL

この記事は役に立ちましたか?