スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]NSDataとして取得したPDFデータをiBooksなどで開く

NSURLConnectionなどで、NSDataとして受け取ったPDFデータなどを他のビュアーで開かせるためには、 UIDocumentInteractionController を利用します。
このクラスは自動でファイルの開けそうなアプリを自分から探してきます。
何も開けるものが無い場合は Quick Look で開きます。(簡易ビューアのようなUIとして用意されております。)

また、今回はこの UIDocumentInteractionController によって開くためには一度ファイル形式にしてURLを指定する必要があります。
そのため、NSDataからファイルに変換を行うソースが最初に含まれております。

以下はソースです。

尚、あらかじめ UIDocumentInteractionControllerDelegate はインプリメンツしておいてください
//ちなみにiPadではアクションシートがでません
//この場合はバーボタンやただのボタンにたいして吹き出しを出す形になります
//ですので、バーボタン(印刷ボタン)からアクションが送られた前提で話が進みます。
-(void)PrintPDF:(UIBarButtonItem *)sender{
//data_url:(NSURL型) "http://..." から始まる、PDFデータのあるURL
//URLからデータを取得します。
NSData *pdfData = [[NSData alloc] initWithContentsOfURL:data_url];
//Documentsというフォルダを作り、 "myPDF.pdf" と言う名前でパスを作成する
NSString *resourceDocPath = [[NSString alloc] initWithString:[[[[NSBundle mainBundle] resourcePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Documents"]];
NSString *filePath = [resourceDocPath stringByAppendingPathComponent:@"myPDF.pdf"];
//作成したパスで、 NSData を保存する
[pdfData writeToFile:filePath atomically:YES];

//ここからは UIDocumentInteractionController を表示するための設定
NSURL *url = [NSURL fileURLWithPath:filePath];
UIDocumentInteractionController* diController = [UIDocumentInteractionController interactionControllerWithURL:url];
diController.delegate = self;
if ([diController presentOptionsMenuFromBarButtonItem:sender animated:YES]){
[diController retain];
}
}

//UIDocumentInteractionController のデリゲート
- (UIViewController*)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController*)controller {
return self; // プレビュー用に用いるビューコントローラ
}
- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller {
[controller autorelease];
}


参考URL先にも同じようなソースがありますが、最後の presentOptionsMenu... のところだけが少し違い、ターゲットが (UIBarButtonItem *)sender になっております。
iPadではこちらの方法が正しいと思われます。


参考URL:UIDocumentInteractionControllerを用いて別アプリケーションを開くメニューを表示する方法について
参考URL:iPhone: Download PDF and store locally?
参考URL:ファイルにNSDataの内容を書き出したい - writeToFile:atomically:
このエントリーをはてなブックマークに追加

tag : iOS PDF NSData NSURLConnection UIDocumentInteractionController iBooks 転送 開く 保存 印刷

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。