গুগল ডক্স ব্যবহার করে পিডিএফ খোলার ব্যবহারকারীর অভিজ্ঞতার দিক থেকে একটি খারাপ ধারণা। এটি সত্যই ধীর এবং প্রতিক্রিয়াবিহীন।
21 এর পরে সমাধান
21 এপ্রি থেকে, আমাদের পিডিএফআরেন্ডার রয়েছে যা পিডিএফকে বিটম্যাপে রূপান্তর করতে সহায়তা করে। আমি এটি কখনও ব্যবহার করি নি তবে এটি যথেষ্ট সহজ বলে মনে হচ্ছে।
যে কোনও এপিআই স্তরের জন্য সমাধান
অন্যান্য সমাধান হ'ল পিডিএফ ডাউনলোড এবং এটি ডেডিকেটেড পিডিএফ অ্যাপ্লিকেশনটিতে ইন্টেন্টের মাধ্যমে পাস করা যা এটি প্রদর্শিত একটি ব্যাঙ্কার কাজ করবে। দ্রুত এবং চমৎকার ব্যবহারকারীর অভিজ্ঞতা, বিশেষত যদি এই অ্যাপ্লিকেশনটিতে এই বৈশিষ্ট্যটি কেন্দ্রীয় না হয়।
পিডিএফ ডাউনলোড এবং খুলতে এই কোডটি ব্যবহার করুন
public class PdfOpenHelper {
public static void openPdfFromUrl(final String pdfUrl, final Activity activity){
Observable.fromCallable(new Callable<File>() {
@Override
public File call() throws Exception {
try{
URL url = new URL(pdfUrl);
URLConnection connection = url.openConnection();
connection.connect();
// download the file
InputStream input = new BufferedInputStream(connection.getInputStream());
File dir = new File(activity.getFilesDir(), "/shared_pdf");
dir.mkdir();
File file = new File(dir, "temp.pdf");
OutputStream output = new FileOutputStream(file);
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
return file;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<File>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(File file) {
String authority = activity.getApplicationContext().getPackageName() + ".fileprovider";
Uri uriToFile = FileProvider.getUriForFile(activity, authority, file);
Intent shareIntent = new Intent(Intent.ACTION_VIEW);
shareIntent.setDataAndType(uriToFile, "application/pdf");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
if (shareIntent.resolveActivity(activity.getPackageManager()) != null) {
activity.startActivity(shareIntent);
}
}
});
}
}
ইন্টেন্ট কাজ করার জন্য, ফাইলটি খোলার জন্য আপনাকে গ্রহণকারী অ্যাপ্লিকেশনটির অনুমতি দেওয়ার জন্য একটি ফাইলপ্রোভিডার তৈরি করতে হবে।
আপনি এটি কীভাবে প্রয়োগ করেন তা এখানে: আপনার ম্যানিফেস্টে:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
পরিশেষে রিসোর্স ফোলারে একটি ফাইল_প্যাথ.এক্সএমএল ফাইল তৈরি করুন
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path name="shared_pdf" path="shared_pdf"/>
</paths>
আশা করি এটি সাহায্য করে =)