iPhoneのアプリでPDFファイルを保存および表示する方法
-
22-07-2019 - |
質問
SQLiteでPDFファイルを保存しようとしています。 PDFファイルをblobとして保存することで可能になると思います。そして、問題はここから始まります。iPhoneアプリ内でそのファイルを表示する方法は? 私はそれがこのコードを使用して実行できることを知っています:-
@interface PDFViewController : UIViewController {
UIWebView *webView;
NSURL *pdfUrl;
}
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) NSURL *pdfUrl;
@end
@implementation PDFViewController
@synthesize webView, pdfUrl;
- (void)viewDidLoad {
[super viewDidLoad];
// Tells the webView to load pdfUrl
[webView loadRequest:[NSURLRequest requestWithURL:pdfUrl]];
}
しかし、 pdfUrl
の値はどうあるべきか、私は混乱しています...
また、DBから取得した場合、blob形式(methinks)になりますので、それを NSdata
オブジェクトに変換する方法はどうですか?
ありがとうございます。
解決
問題は、WebViewがURLの読み込みを行うため、http以外のリクエストなどを理解できないことです。それでも、アプリケーションはデータを提供しようとしています。だから基本的に、sqlliteデータベースからblobをデシリアライズし、(たとえば/ tmpに)ファイルに書き込み、NSWebViewからfile:/// URLを開くことができない限り、あなたは運が悪いオブジェクトがあなたにそれを可能にするとは思わない。
あなたは、[UIWebView loadData:MIMEType:textEncodingName:baseURL:]メソッドを呼び出すことができます。これにより、sqlliteデータベースからNSDataブロブを抽出し、MIMEタイプのapplication / pdf、ダミーテキストエンコーディング(UTF-8)およびベースURLを挿入すると、必要な処理が行われる可能性があります。しかし、少なくとも試してみたいと思うでしょう。
他のヒント
pdfUrlは、WebサイトからダウンロードしようとしているPDFのWebアドレスです。 (つまり、 http://website.com/mypdf.pdf )
NSDataのドキュメントをお読みください。sqliteを使用して引き出したものに基づいてNSDataオブジェクトを作成できるメソッドがあります。