لود نشدن فایل pdf داخل وب ویو
سلام دوستان
من فایل pdf را از داخل پوشه asset به مسیر زیر کپی کردم :
getFilesDir() +"/sample.pdf"
یعنی در اینجا هیچ مشکلی نیست و دقیق مطمئن هستم فایل در اون مسیر وجود دارد.
اما متاسفانه داخل وب ویو که میخوام لود کنم فقط صفحه سفید هست و هیچ چیزی نمایش نمیده...به نظرتون مشکل کجاست؟!!
دستور اجرای فایل :
webview_pdf.loadUrl("file:///" +getFilesDir() +"/sample.pdf");
webview_pdf.getSettings().setBuiltInZoomControls(t rue) ;//show zoom buttons
webview_pdf.getSettings().setSupportZoom(true);
دستورات لایوت :
<WebView android:id="@+id/webview_pdf"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
نقل قول: لود نشدن فایل pdf داخل وب ویو
سلام
در ویجت WebView به صورت پیش فرض قابلیت بارگذاری و نمایش اسناد PDF رو از روی حافظه داخلی دستگاه های اندوریدی وجود نداره.
برای نمایش یک فایل PDF در برنامه های اندرویدی می بایست یکی از سه کار زیر رو انجام بدی:
- از یک کتابخانه شخص ثالث استفاده کنی
- با استفاده از کلاس Intent از یه برنامه نمایش اسناد PDF داخلی خود دستگاه های اندرویدی استفاده کنی
- از GoogleDoc در یک مرورگر وب استفاده کنی
مثالی از روش سوم
String myPdfUrl = "http://example.com/awesome.pdf";
String url = "http://docs.google.com/gview?embedded=true&url=" + myPdfUrl;
Log.i(TAG, "Opening PDF: " + url);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
این روش به هیچ وجه توصیه نمیشه چرا که این روش یک ایده بسیار مزخرف از لحاظ تجربه کاربریه و سرعت لود اسناد بسیار آهسته و بدون پاسخه.
مثالی از روش دوم
File appFolder = new File(Environment.getExternalStorageDirectory(), context.getBaseContext().getPackageName());
File file = new File(appFolder, fileName);
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
بهترین و مطمئن ترین روش، روش دوم هستش. چرا که امروزه در تمامی گوشی های اندرویدی بصورت پیش فرض برنامه مخصوص نمایش اسناد PDF نصب هست.
اما اگه به هر دلیلی مایلی که اسناد PDF رو در برنامه خودت باز و به نمایش دربیاری می تونی از روش اول استفاده کنی.
برای این کار هم رو راه وجود داره:
- راه اول اینه که اگه تو برنامه ات از API 21 به بالا استفاده می کنی می تونی از کلاس PDFRendered استفاده کنی. «فقط دقت داشته باش در صورتی که از این کلاس استفاده کنی برنامه ات در ورژن اندروید 5 به پایین کار نمی کنه»
- راه دوم اینه که می تونی از یک ویجت مخصوص نمایش اسناد PDF استفاده کنی که آدرس سایتش رو توی لینک زیر گذاشتم. می تونی نحوه دانلود و استفاده از اون رو مطالعه کنی.
android-pdfview
نقل قول: لود نشدن فایل pdf داخل وب ویو
سپاسگزارم از نظر شما در این باره
علاوه برا مواردی که مطرح کردید بنده میخواستم کتابخانه ای استفاده کنم که قابلیت جستجو داخل pdf هم داشته باشه...برای همین یکی از دوستان pdf js رو بهم پیشنهاد دادند.
https://github.com/mozilla/pdfjs-dist
با استفاده از این من تونستم داخل وب ویو لودش کنم و فایل pdf رو بدین صورت نمایش بدم :
String filename = getFilesDir() +"/sample.pdf";
WebSettings settings = webview_pdfjs.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setDomStorageEnabled(true);
settings.setAllowUniversalAccessFromFileURLs(true) ;
settings.setBuiltInZoomControls(true);
webview_pdfjs.setWebChromeClient(new WebChromeClient());
webview_pdfjs.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + filename);
بدین صورت که فایل های pdf js رو داخل پوشه asset ریخته بودم و فایل pdf را در مسیر مربوطه کپی کرده بودم.
داخل اون بسته موجود در گیت هاب کل فایل ها نیاز نیست اگر خواستید تست کنید از این لینک زیر فایل ها رو دانلود کنید و داخل پوشه asset کپی کنید.
http://s8.picofile.com/file/8332306226/pdfjs.rar.html
اما متاسفانه مشکلی که مطرح هست اینه که این روش هم فقط در اندروید های 19 به بالا به درستی pdf رو اجرا میکنه و اندروید های پایینتر کار نمیکند.
من هرچقدر تلاش کردم مشکل رو حل کنم متاسفانه نتونستم کاری کنم...
همچنین با جستجویی که کردم انگار چند سال پیش هم دوستانی با این مشکل روبرو بودند :
https://stackoverflow.com/questions/...level-below-19
که در پاسخ بهشون گفته شده ویرایش هایی داخل فایل pdf js انجام بدهند.
حالا جای بد ماجرا اینجاست که این دوستان از "pauldmps Android-pdf.js" استفاده کردند که قابلیت های خیلی کمتری هم انگارداره...اما من از ""mozilla pdfjs"" استفاده کردم ...که راه حلی برای حل مشکل در اندروید 17 و 18 پیدانکردم.
و نیازمند یاری شما دوستان برای حل این مشکل هستم:لبخندساده:
https://github.com/mozilla/pdf.js/releases
نقل قول: لود نشدن فایل pdf داخل وب ویو
از مثال روش دومی که ارسال کردم استفاده کن بدون زحمت و دردسره و توی اکثر فروم ها هم همین روش پیشنهاد شده.