0

コントロールを使用しUIWebViewており、横向きモードでのみ Web ページの URL を開いています。特定のイベントのこの URL では、PDF が開かれています。今回は、PDF が正しく開かれず (常に PDF ファイルの最初のページのみが表示されます)、出力ウィンドウに「flatedecode デコード エラー」が表示されます。

私のアプリケーションがその PDF を開くイベントをキャッチできるようにする方法はありますUIWebViewか?

または、Phonegap でこれを達成する方法はありますか?

4

2 に答える 2

0

PDFを開く特定のリンクがクリックされたかどうかを確認する方法だけが必要だと思いますか?

ビューコントローラーをウェブビューのデリゲートにしてください。次に、このメソッドを実装します

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

リンクのクリックで新しいページが読み込まれると、 navigationTypeUIWebViewNavigationTypeLinkClickedになります。

requestは、開かれている URL を通知し、URL が PDF の 1 つであるかどうかを聞くことができます。その場合は、必要に応じてメソッドで処理できます-ダウンロードして別のWebビューで開くか、サファリで開きます。

詳細はこちら

于 2013-03-06T11:27:40.670 に答える
-1

このコードを使用して、ドキュメント ディレクトリに PDF を保存できます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;
//You must check if this directory exist every time
if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir   == NO)
{
    [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}
NSString *filePath = [cachePath stringByAppendingPathComponent:@"QRScanner.pdf"];
//webView.request.URL contains current URL of UIWebView, don't forget to set outlet for it
NSData *pdfFile = [NSData dataWithContentsOfURL:webView.request.URL];
if(pdfFile)
{
    [AppDelegate obj_appDelegate].Alertview.hidden = YES;
    [[AppDelegate obj_appDelegate].activity stopAnimating];
}
[pdfFile writeToFile:filePath atomically:YES];
于 2013-03-06T11:06:39.713 に答える