2012-07-23 22 views
13

मैं एक वेबव्यू में स्थानीय (एसडी कार्ड) पीडीएफ फाइल खोलना चाहता हूं।Android में WebView में स्थानीय पीडीएफ फ़ाइल कैसे खोलें?

मैं पहले से ही इस की कोशिश की:

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 में एक पीडीएफ खोल सकते हैं?

+0

इस webview.loadUrl प्रयास करें ("http://docs.google.com/gview?embedded=true&url=http://myurl.com/demo.pdf: तुम सही उपकरण पट्टी पसंद नहीं है "); – Sameer

+0

क्या आपको कोई समाधान मिला? –

उत्तर

3

आप नहीं कर सकते। एक आशय का उपयोग करके आप एक्रोबैट रीडर की तरह एक बाहरी दर्शक आवेदन में पीडीएफ खोल सकते हैं: गूगल डॉक्स 'ऑनलाइन दर्शक के माध्यम से

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 उत्तर के लिए .. लेकिन मैं वेबदृश्य में पीडीएफ आवेदन में नहीं खोलना चाहता हूं .. –

4

@Sameer जैसा कि ऊपर अपनी टिप्पणी में कहा, वेबव्यू में पीडीएफ देखने का एकमात्र समाधान है जो प्रस्तुत करेगा और आपके ऐप में एक पठनीय संस्करण वापस भेज देगा।

पहले यहाँ

+1

क्या यह आपके डिवाइस पर स्थानीय रूप से स्थित पीडीएफ के लिए काम करता है .. ?? –

+0

@androidsanta nop, इसे वेब से लोड किया जाना था। –

+0

यह केवल रिमोट पीडीएफ के साथ काम करता है।यदि आप @ girishce26 जैसी स्थानीय फ़ाइल खोलना चाहते हैं, तो आपको सीएसमिथ के समाधान या इस बाहरी प्लगइन का उपयोग करना होगा https://github.com/JoanZapata/android-pdfview – tryp

0

WebView चर्चा की .pdf फ़ाइल नहीं खोल सकता। सबसे लोकप्रिय समाधान (Google डॉक्स 'url + WebView में आपका यूआरएल) बस आपको Google डॉक्स चित्रों द्वारा रूपांतरित करता है। हालांकि यूआरएल से .pdf खोलने के लिए अभी भी कोई आसान तरीका नहीं है।

11

मुझे पता है, यह सवाल पुराना है।

लेकिन मुझे मोज़िला से pdf.js का उपयोग करने के लिए वास्तव में Xamarin के दृष्टिकोण पसंद हैं। यह पुराने एंड्रॉइड संस्करणों पर काम करता है, इसके लिए आपको एक विशेष पीडीएफ व्यूअर ऐप की आवश्यकता नहीं है और आप अपने ऐप्स दृश्य पदानुक्रम के के अंदर आसानी से एक पीडीएफ प्रदर्शित कर सकते हैं।

इस के लिए 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"); 

कूल चीज: यदि आप कार्यक्षमताओं/नियंत्रणों की मात्रा को कम करना चाहते हैं। संपत्ति/pdfjs/web/viewer.html फ़ाइल पर जाएं और छिपे हुए कुछ नियंत्रणों को चिह्नित करें।

style="display: none;" 

E.g.

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

बहुत बढ़िया उत्तर :) –

+0

एंड्रॉइड प्रोजेक्ट संपत्ति फ़ोल्डर के अंदर पीडीएफ हो सकता है opnened? – CGR

+0

@ सीजीआर आपको एक फ़ाइल के संदर्भ की आवश्यकता होगी, जिसे स्क्रिप्ट के लिए भी उपलब्ध होना आवश्यक है, इसलिए शायद आपको स्थानीय रूप से संपत्ति फ़ोल्डर से फ़ाइल की प्रतिलिपि बनाना होगा: https://stackoverflow.com/a/38504987 – Lepidopteron

संबंधित मुद्दे