2012-07-23 55 views
13

ローカル(SDカード)のPDFファイルをWebViewで開きたいとします。AndroidのWebViewでローカルPDFファイルを開く方法は?

私はすでにこの試みた:

webview = (WebView) findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.getSettings().setPluginsEnabled(true); 
webview.getSettings().setAllowFileAccess(true); 
File file = new File(Environment.getExternalStorageDirectory() + "/test.pdf"); 

final Uri uri = Uri.fromFile(file); 

webview.loadUrl(uri.toString()); 

をしかし、それはまだそれを開いていないので、私はWebViewの中でPDFを開くことができる方法を知ってみましょうか?

+0

このwebview.loadUrlを試してみてください(「http://docs.google.com/gview?embedded=true&url=http://myurl.com/demo.pdf:あなたは右のツールバーを好きではない場合"); – Sameer

+0

解決策を見つけましたか? –

答えて

3

できません。テントを使用して、Acrobat Readerのような外部ビューアアプリケーションでPDFを開くことができます。

try 
{ 
Intent intentUrl = new Intent(Intent.ACTION_VIEW); 
intentUrl.setDataAndType(uri, "application/pdf"); 
intentUrl.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
mActivity.startActivity(intentUrl); 
} 
catch (ActivityNotFoundException e) 
{ 
Toast.makeText(mActivity, "No PDF Viewer Installed", Toast.LENGTH_LONG).show(); 
} 
+0

@ CSmith.thanks for reply..but私はpdfアプリケーションではないwebviewで開こうと思っています。 –

4

@Sameerは、上記のあなたのコメントに答えたとして、WebViewの中でPDFを閲覧するための唯一の解決策は、どのGoogleドキュメントのオンラインビューアーを介して行われあなたのアプリに読み込み可能なバージョンをレンダリングして返します。

は以前ここに

+1

あなたのデバイス上にローカルに配置されたpdfのためにこれは機能しますか? –

+0

@androidsanta nop、それはウェブからロードされていた。 –

+0

リモートPDFでのみ動作します。@ girishce26のようなローカルファイルを開く場合は、CSmithのソリューションまたはこの外部プラグインを使用する必要があります。https://github.com/JoanZapata/android-pdfview – tryp

0

のWebViewが.pdfファイルを開くことができません述べました。最も人気のある解決策(Googleドキュメントの「url + WebViewのあなたのURL」)は、Googleドキュメントの写真によって変換されたことを示しています。 しかし、URLから.pdfを開く簡単な方法はまだありません。

11

私は知っています、この質問は古いです。

しかし、私はMozillaからpdf.jsを利用するXamarinのアプローチが本当に好きです。これは古いAndroidバージョンで動作しますが、特別なPDFビューアアプリは必要ありません。のアプリビュー階層のを簡単に表示できます。

このためのGit: https://mozilla.github.io/pdf.js/

(標準ズームなど)

追加のデフォルトのオプション: https://github.com/mozilla/pdf.js/wiki/Viewer-options

ちょうどあなたの資産のディレクトリにpdfjsファイルを追加します。

enter image description here

とコールそれは次のようになります:

// Assuming you got your pdf file: 
File file = new File(Environment.getExternalStorageDirectory() + "/test.pdf"); 

webview = (WebView) findViewById(R.id.webview); 
WebSettings settings = webview.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setAllowFileAccessFromFileURLs(true); 
settings.setAllowUniversalAccessFromFileURLs(true); 
settings.setBuiltInZoomControls(true); 
webview.setWebChromeClient(new WebChromeClient()); 
webview.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + file.getAbsolutePath() + "#zoom=page-width"); 

クールなもの:機能/コントロールの量を減らしたい場合。 Assets/pdfjs/web/viewer.htmlファイルに移動し、特定のコントロールを非表示にします。 With

style="display: none;" 

たとえば、

<div id="toolbarViewerRight" style="display: none;">...</div> 
+0

恐ろしい答え:) –

+0

Androidプロジェクト資産フォルダ内にpdfファイルを置くことはできますかopnened? – CGR

+0

@CGRまた、スクリプトのために利用できるファイルの参照が必要なので、ファイルを最初にassetsフォルダからローカルにコピーする必要があります。https://stackoverflow.com/a/38504987 – Lepidopteron

関連する問題