পিডিএফ-এ সরাসরি মোবাইল স্ক্যান করা আপনার নথির কর্মপ্রবাহে বিপ্লব ঘটাতে পারে। স্বয়ংক্রিয় পৃষ্ঠা সনাক্তকরণ, আরও ভাল আলোর জন্য অন্তর্নির্মিত ফ্ল্যাশ, সুনির্দিষ্ট রঙ পরিচালনা এবং পেশাদার-গ্রেডের PDF তৈরির জন্য তৈরি ক্যামেরা সেটিংসের মতো বৈশিষ্ট্যগুলির সাথে সজ্জিত, আপনি আপনার স্মার্টফোনে মাত্র কয়েকটি ট্যাপের মাধ্যমে অসাধারণ ফলাফল অর্জন করতে পারেন, অত্যাধুনিকতার জন্য ধন্যবাদ। প্রযুক্তি.
নিম্নোক্ত নির্দেশিকা রূপরেখা দেয় কিভাবে আপনি Foxit-এর Android PDF SDK-এর শক্তিকে কাজে লাগিয়ে শক্তিশালী স্ক্যানিং ক্ষমতা সহ একটি অ্যাপ দ্রুত বিকাশ করতে পারেন। আপনি একাধিক ফটো ক্যাপচার করছেন বা আপনার গ্যালারি থেকে ছবি নির্বাচন করছেন না কেন, একটি পিডিএফ তৈরি করা একক ক্লিকের মতোই সহজ৷ এই প্রকল্পটি আপনাকে আপনার বিদ্যমান ওয়ার্কফ্লোতে স্ক্যানিংকে নির্বিঘ্নে সংহত করার ক্ষমতা দেয়, এটিকে আপনার মোবাইল অ্যাপ্লিকেশনে একটি মূল্যবান সংযোজন করে তোলে।
উপাদান টগল বা ব্যবহারকারী ইন্টারফেস পুনরায় ডিজাইন করার প্রয়োজন ছাড়াই আপনার নিজের ব্যবসা বা অ্যাপ্লিকেশন ব্র্যান্ডিং অনায়াসে অন্তর্ভুক্ত করার স্বাধীনতা রয়েছে৷ এটি একটি ডেডিকেটেড মোবাইল স্ক্যানিং বোতাম সহ একটি ফাঁকা পিডিএফ ভিউয়ার প্রদান করে, যা আপনার অনন্য অ্যাপ তৈরির ভিত্তি হিসেবে কাজ করে।
অ্যান্ড্রয়েড ডিভাইসের প্রয়োজনীয়তা:
Android 4.4 (API 19) বা উচ্চতর
32/64-বিট ARM (armeabi-v7a/arm64-v8a) বা 32/64-বিট Intel x86 CPU
অ্যান্ড্রয়েড স্টুডিও 3.2 বা নতুন (অ্যান্ড্রয়েডএক্স সমর্থন করে)
আমাদের ডেমোর জন্য রানটাইম পরিবেশ:
• অ্যান্ড্রয়েড স্টুডিও 3.2
• JDK 1.8
• গ্রেডল সংস্করণ 4.6
গ্রেডল বিল্ড টুল 3.2
দ্রষ্টব্য: সংস্করণ 8.2 দিয়ে শুরু করে, Android এর জন্য Foxit PDF SDK শুধুমাত্র AndroidX সমর্থন করবে, এবং Android সমর্থন লাইব্রেরিতে আর পরিষেবা দেবে না।
Android Studio চালু করুন এবং androidrdk/samples/viewer_ctrl_demo প্রকল্পটি খুলুন।
নিচের মতো গ্রেডল ফাইলে (view_ctrl_demo/app/build.gradle) স্ক্যানিং নির্ভরতা লাইব্রেরি যোগ করুন:
implementation(name:'FoxitPDFScan-UI', ext:'aar') implementation(name:'FoxitMobileScanningRDK', ext:'aar') implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
স্ক্যান ফাংশন কল করার আগে, আপনাকে স্টোরেজ অনুমতি এবং ছবি তোলার অনুমতি নিতে হবে। স্ক্যান ফাংশন কল করার আগে ক্যামেরা এবং ফটো অ্যালবাম ব্যবহারের অনুমতি না পাওয়া গেলে, অ্যাপটি সঠিকভাবে চলবে না। অনুমতি সেট করতে নীচের পদক্ষেপগুলি অনুসরণ করুন৷
নিচের কোডটি ব্যবহার করে AndroidManifest ফাইলে অনুমতি-সম্পর্কিত ঘোষণা যোগ করুন:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RUN_INSTRUMENTATION"/> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.CAMERA" />
তারপর MainActivity.java এ নিম্নলিখিত অনুমতি অনুরোধ কোড যোগ করুন:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { int permission = ContextCompat.checkSelfPermission(this.getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_EXTERNAL_STORAGE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //Application permission is successful } else { UIToast.getInstance(getApplicationContext()).show(getString(R.string.fx_permission_denied)); finish(); } }
এখন, স্ক্যান ফাংশন সম্পর্কিত কোড যোগ করা যাক:
স্ক্যান ফাংশন কল করতে UI এ একটি বোতাম যোগ করুন।
প্রথমে, ক্যামেরা বোতাম আইকন যোগ করতে কিছু কোড লিখুন। আপনি বোতামটির জন্য বিন্যাস, অবস্থান এবং চিত্র সংস্থান সংজ্ঞায়িত করবেন। প্রকল্পটি লোড হওয়ার সাথে সাথে বোতামটি প্রদর্শিত হবে তা নিশ্চিত করতে এই কোডটি MainActivity ফাইলের onCreate পদ্ধতিতে যোগ করা হয়েছে। এটি পরে যোগ করতে ভুলবেন না:
protected void onCreate(Bundle savedInstanceState) { (...) // Make sure to add this block of code after all the already existing // view_ctrl_demo onCreate code is loaded mRootView=uiExtensionsManager.getContentView(); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); mIvScan = new ImageView(this); mIvScan.setImageResource(R.drawable.fx_floatbutton_scan); layoutParams.bottomMargin = 80; layoutParams.rightMargin = 50; layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); mIvScan.setLayoutParams(layoutParams); mRootView.addView(mIvScan); setContentView(mRootView); initScan(); }
এখন, অ্যাপটির স্ক্যানিং বৈশিষ্ট্যের ভিত্তি স্থাপন করা যাক। উপরের onCreate পদ্ধতিতে কোডের শেষ লাইন হল initScan(), যা আমরা প্রজেক্টের জন্য প্রাসঙ্গিক ক্লাস শুরু করতে ব্যবহার করব।
নীচের কোডটি দেখায় যে আপনি কীভাবে Foxit-এর প্রধান PDF স্ক্যান ক্লাস (PDFScanManager) থেকে একটি বস্তুকে ইনস্ট্যান্ট করবেন, তারপর স্ক্যানার এবং কম্প্রেশন বৈশিষ্ট্যগুলি শুরু করতে সেই ক্লাসটি ব্যবহার করুন। আপনি একবার ক্যামেরা বোতামে ক্লিক করলে চূড়ান্ত পদ্ধতিটি স্ক্যান কার্যকারিতা প্রদর্শন করে।
PDFScanManager pdfScanManager = PDFScanManager.instance() if (!PDFScanManager.isInitializeScanner()) { long framework1 = 0; long framework2 = 0; PDFScanManager.initializeScanner(App.inst().getAppActivity().getApplication(), framework1, framework2); } if (!PDFScanManager.isInitializeCompression()) { long compression1 = 0; long compression2 = 0; PDFScanManager.initializeCompression(App.inst().getAppActivity().getApplication(), compression1, compression2); } if (PDFScanManager.isInitializeScanner() && PDFScanManager.isInitializeCompression()) { //Loaded Successfully pdfScanManager.showUI(activity.this); }
ইনিশিয়ালাইজেশন কোডটি নিচের মত করে initScan পদ্ধতিতে যোগ করা হয়। এই পদ্ধতিটি MainActivity ক্লাসে যোগ করা হবে এবং প্রকল্প লোড হওয়ার সাথে সাথে কল করা হবে। এটি নিশ্চিত করে যে আপনার প্রকল্পে সমস্ত স্ক্যানিং লাইব্রেরি এবং কার্যকারিতা উপলব্ধ থাকবে।
নিম্নলিখিত আমদানি এবং ভেরিয়েবল প্রকল্পের জন্য প্রয়োজনীয়:
import com.foxit.pdfscan.PDFScanManager; private ImageView mIvScan; private ViewGroup mRootView; private void initScan(){ final PDFScanManager pdfScanManager = PDFScanManager.instance(); mIvScan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!PDFScanManager.isInitializeScanner()) { long framework1 = 0; long framework2 = 0; PDFScanManager.initializeScanner(getApplication(), framework1, framework2); } if (!PDFScanManager.isInitializeCompression()) { long compression1 = 0; long compression2 = 0; PDFScanManager.initializeCompression(getApplication(), compression1, compression2); } if (PDFScanManager.isInitializeScanner() && PDFScanManager.isInitializeCompression()) { pdfScanManager.showUI((Activity) mContext); } else { UIToast.getInstance(getApplicationContext()) .show(AppResource.getString(getApplicationContext(), R.string.rv_invalid_license)); } } }); }
এখন যেহেতু আমরা লাইব্রেরি শুরু করেছি এবং ভিত্তি সেট করা হয়েছে, আমরা দুটি মৌলিক কলব্যাক ইন্টারফেস লিখব যা নথিটি স্ক্যান করার পরে সংরক্ষণ করতে ব্যবহার করা হবে: প্রথমটি, ScanPDFDoneCallBack, যা সম্পূর্ণ কাস্টম, এবং দ্বিতীয়টি হল IPDFScanManagerListener, যা SDK-এ উপলভ্য। নীচে উভয় দেখুন:
public interface ScanPDFDoneCallBack { /** Success, and no error occurs */ int e_ErrSuccess = 0; /** Failed, any unknown error occurs. */ int e_ErrUnknown = 1; /** * After saving PDF successfully, return to the saving path * * @param errorCode if the scanned file is successfully saved as a pdf document, the errorCode is {@link #e_ErrSuccess}, otherwise is {@link #e_ErrUnknown} * @param savePath the document file path. */ void doneCallBack(int errorCode, String savePath); } public interface IPDFScanManagerListener { /** * Success, and no error occurs */ int e_ErrSuccess = 0; /** * Failed, any unknown error occurs. */ int e_ErrUnknown = 1; /** * Called when if the scanned file is successfully saved as a pdf document. * * @param errorCode if the scanned file is successfully saved as a pdf document, the errorCode is {@link #e_ErrSuccess}, otherwise is {@link #e_ErrUnknown} * @param path the document file path. */ void onDocumentAdded(int errorCode, String path); }
দুটি ইন্টারফেসের মধ্যে পার্থক্য হল যদি ScanPDFDoneCallBack-এর মনিটরিং সেট করা থাকে, আপনি যখন নীচের চিত্রের নীচের ডানদিকের কোণায় 'সম্পন্ন' বোতামটি ক্লিক করেন, এটি সরাসরি নথিটিকে ডিফল্ট পথে সংরক্ষণ করবে এবং স্ক্যানিং ইন্টারফেস থেকে প্রস্থান করবে এবং savePath প্যারামিটারের মাধ্যমে ডিফল্ট সেভ পাথে ফিরে যান।
যদি ScanPDFDoneCallBack সেট করা না থাকে, আপনি যখন নিচের চিত্রের নিচের ডানদিকের কোণায় 'সম্পন্ন' বোতামে ক্লিক করবেন, তখন সংরক্ষণ ডিরেক্টরি নির্বাচন করার জন্য একটি ইন্টারফেস পপ আপ হবে। ব্যবহারকারী নির্দিষ্ট ডিরেক্টরি নির্বাচন করে, এবং নথিটি ব্যবহারকারীর দ্বারা নির্বাচিত ডিরেক্টরিতে সংরক্ষণ করা হবে।
https://developers.foxit.com/dk_utwp/2021/10/android-mobile-scanning-tool-pdf-sdk-app.mp4
এখন, আপনাকে অবশ্যই ইন্টারফেসগুলিকে MainActivity.java এ যোগ করে বাস্তবায়ন করতে হবে।
pdfScanManager.setDoneCallBack(new ScanPDFDoneCallBack() { @Override public void doneCallBack(int errorCode, final String savePath) { if (errorCode == e_ErrSuccess) { //The document was saved successfully } } }); PDFScanManager.registerManagerListener(new IPDFScanManagerListener() { @Override public void onDocumentAdded(int errorCode, String path) { if (errorCode == e_ErrSuccess) { //The document was saved successfully } } });
আপনি pdfscan ক্লাসের আরও ইন্টারফেস বাস্তবায়ন করতে চাইলে, অনুগ্রহ করে foxitpdfsdk_8_1_android/docs-এ API রেফারেন্স নথিগুলি দেখুন।
সম্পন্ন! স্ক্যান কার্যকারিতা সফলভাবে আপনার অ্যাপ্লিকেশন যোগ করা হয়েছে. অ্যাপটি চালান, আপনি আগে তৈরি করা স্ক্যান বোতামটি ক্লিক করুন এবং আপনার স্ক্যানিং অভিজ্ঞতা শুরু করুন।
আমরা আপনার প্রকল্পে সম্পূর্ণ PDF লাইব্রেরি কার্যকারিতা যোগ করতে এবং একটি মূল API-এ সমস্ত প্ল্যাটফর্ম এবং পরিবেশ জুড়ে বিকাশ করতে আপনার সাথে কাজ করি। এখানে ক্লিক করে আজ 30 দিনের বিনামূল্যের ট্রায়াল নিন।
এছাড়াও এখানে প্রকাশিত.