বিবরণ
অ্যাটাচ করা ডকুমেন্ট স্ক্যানার থেকে ছবি খুঁজে পেতে ও ফিরিয়ে আনতে chrome.documentScan API ব্যবহার করুন।
ডকুমেন্ট স্ক্যান API এমনভাবে ডিজাইন করা হয়েছে যাতে অ্যাপ ও এক্সটেনশন অ্যাটাচ করা ডকুমেন্ট স্ক্যানারে কাগজের ডকুমেন্টের কন্টেন্ট দেখতে পায়।
অনুমতি
documentScanউপলভ্যতা
ধারণা ও ব্যবহার
এই API-তে ডকুমেন্ট স্ক্যান করার দুটি উপায় আছে। আপনার ব্যবহারের ক্ষেত্রে যদি যেকোনও স্ক্যানার
কাজ করে এবং কনফিগারেশন নিয়ন্ত্রণ করার প্রয়োজন না হয়, তাহলে
scan() পদ্ধতি ব্যবহার করুন। আরও জটিল ব্যবহারের ক্ষেত্রে একাধিক পদ্ধতির সংমিশ্রণ প্রয়োজন,
যা শুধুমাত্র Chrome 124 এবং তার পরবর্তী ভার্সনে কাজ করে।
সহজ স্ক্যানিং
সহজ ব্যবহারের ক্ষেত্রে, অর্থাৎ যেগুলি যেকোনও স্ক্যানারের সাথে কাজ করতে পারে এবং কনফিগারেশনের নিয়ন্ত্রণের প্রয়োজন হয় না, scan() কল করুন। এই পদ্ধতিটি একটি
ScanOptions অবজেক্ট নেয় এবং একটি প্রমিস রিটার্ন করে যা একটি ScanResults
অবজেক্টের সাথে সমাধান করে। এই বিকল্পের ক্ষমতা স্ক্যানের সংখ্যা এবং MIME-এর প্রকারের মধ্যে সীমাবদ্ধ যা কলার গ্রহণ করবে। স্ক্যান করা ডকুমেন্ট URL হিসেবে ফেরত পাঠানো হয়
যাতে ইউজার ইন্টারফেসের জন্য <img> ট্যাগে দেখানো যায়।
জটিল স্ক্যানিং
এই বিভাগে যেমন বর্ণনা করা হয়েছে, জটিল স্ক্যান তিনটি পর্যায়ে সম্পূর্ণ করা হয়। এই আউটলাইন প্রতিটি মেথড আর্গুমেন্ট বা উত্তরে ফেরত আসা প্রতিটি প্রপার্টি বর্ণনা করে না। এটি শুধুমাত্র স্ক্যানার কোড লেখার জন্য আপনাকে একটি সাধারণ নির্দেশিকা দেওয়ার উদ্দেশ্যে তৈরি করা হয়েছে।
Discovery
getScannerList()নম্বরে কল করুন। উপলভ্য স্ক্যানারগুলি একটি প্রমিজে ফেরত দেওয়া হয় যাGetScannerListResponse-এর সাথে সমাধান করে।- রেসপন্স অবজেক্টে
ScannerInfoঅবজেক্টের একটি অ্যারে থাকে। - কোনও স্ক্যানার একাধিক প্রোটোকল বা কানেকশন পদ্ধতি সাপোর্ট করলে, অ্যারেতে সেই স্ক্যানারের জন্য একাধিক এন্ট্রি থাকতে পারে।
- রেসপন্স অবজেক্টে
ফেরত আসা অ্যারে থেকে একটি স্ক্যানার বেছে নিন এবং এর
scannerIdপ্রপার্টির ভ্যালু সেভ করুন।একই স্ক্যানারের একাধিক অবজেক্টের মধ্যে পার্থক্য করতে প্রতিটি
ScannerInfoঅবজেক্টের প্রপার্টি ব্যবহার করুন। একই স্ক্যানার থেকে পাওয়া অবজেক্টেরdeviceUuidপ্রপার্টির জন্য একই ভ্যালু থাকবে।ScannerInfo-এimageFormatsপ্রপার্টিও থাকে যাতে কাজ করে এমন ছবির ধরনের অ্যারে থাকে।
স্ক্যানার কনফিগারেশন
সেভ করা স্ক্যানার আইডি পাস করে
openScanner()-এ কল করুন। এটি একটি Promise রিটার্ন করে যাOpenScannerResponse-এর মাধ্যমে সমাধান করে। রেসপন্স অবজেক্টে এগুলি থাকে:একটি
scannerHandleপ্রপার্টি, যা আপনাকে সেভ করতে হবে।স্ক্যানার-নির্দিষ্ট প্রপার্টি সহ একটি বিকল্প প্রপার্টি, যা আপনাকে সেট করতে হবে। আরও তথ্যের জন্য স্ক্যানার বিকল্প ফিরিয়ে আনা দেখুন।
(ঐচ্ছিক) স্ক্যানার বিকল্পের জন্য ব্যবহারকারীর থেকে ভ্যালু প্রয়োজন হলে, ইউজার ইন্টারফেস তৈরি করুন। আপনাকে আগের ধাপে দেওয়া স্ক্যানার বিকল্প ব্যবহার করতে হবে এবং স্ক্যানারের দেওয়া বিকল্প গ্রুপ ফিরিয়ে আনতে হবে। আরও তথ্যের জন্য ইউজার ইন্টারফেস তৈরি করা দেখুন।
প্রোগ্রাম্যাটিক বা ব্যবহারকারীর দেওয়া ভ্যালু ব্যবহার করে
OptionSettingঅবজেক্টের একটি অ্যারে তৈরি করুন। আরও তথ্যের জন্য স্ক্যানার বিকল্প সেট করুন দেখুন।স্ক্যানারের জন্য বিকল্প সেট করতে
OptionSettingঅবজেক্টের অ্যারেsetOptions()-এ পাস করুন। এটি একটি Promise রিটার্ন করে যাSetOptionsResponse-এর মাধ্যমে সমাধান করা হয়। এই অবজেক্টে স্ক্যানার কনফিগারেশনের ১ নম্বর ধাপে পাওয়া স্ক্যানার বিকল্পের আপডেট করা ভার্সন থাকে।একটি বিকল্প পরিবর্তন করলে অন্য বিকল্পের সীমাবদ্ধতা পরিবর্তিত হতে পারে, তাই আপনাকে এইসব ধাপ একাধিকবার রিপিট করতে হতে পারে।
স্ক্যান করা হচ্ছে
StartScanOptionsঅবজেক্ট তৈরি করে সেটিstartScan()-এ পাস করুন। এটি একটি প্রমিস রিটার্ন করে যাStartScanResponse-এর মাধ্যমে সমাধান করে। এরjobপ্রপার্টি হল একটি হ্যান্ডেল যা আপনি স্ক্যান ডেটা পড়তে বা স্ক্যান বাতিল করতে ব্যবহার করবেন।readScanData()-এ জব হ্যান্ডেল পাস করুন। এটি একটি Promise প্রদান করে যাReadScanDataResponseঅবজেক্টের সাথে সমাধান করে। ডেটা সঠিকভাবে পড়া হলে, এরresultপ্রপার্টিSUCCESS-এর সমান হয় এবং এরdataপ্রপার্টিতে স্ক্যানের অংশ সহArrayBufferথাকে। মনে রাখবেন যেestimatedCompletion-এ এখনও পর্যন্ত ডেলিভার করা মোট ডেটার আনুমানিক শতাংশ রয়েছে।resultপ্রপার্টিEOF-এর সমান না হওয়া পর্যন্ত বা কোনও সমস্যা না হওয়া পর্যন্ত আগের ধাপটি আবার করুন।
স্ক্যান শেষ হয়ে গেলে, ৩ নম্বর ধাপে সেভ করা স্ক্যানার হ্যান্ডেল দিয়ে
closeScanner() কল করুন। এটি একটি Promise রিটার্ন করে যা
CloseScannerResponse-এর মাধ্যমে সমাধান করা হয়। জব তৈরি হওয়ার পরে যেকোনও সময় cancelScan() কল করলে
স্ক্যানিং শেষ হয়ে যাবে।
রেসপন্স অবজেক্ট
সব পদ্ধতি একটি Promise রিটার্ন করে যা কোনও ধরনের রেসপন্স অবজেক্টের মাধ্যমে সমাধান করে।
এগুলির বেশিরভাগেই একটি result প্রপার্টি থাকে যার মান
OperationResult-এর মেম্বার। result-এর ভ্যালু নির্দিষ্ট না হলে,
রেসপন্স অবজেক্টের কিছু প্রপার্টিতে ভ্যালু থাকবে না। এই
সম্পর্কগুলি প্রতিটি রেসপন্স অবজেক্টের রেফারেন্সে বর্ণনা করা হয়েছে।
যেমন, OpenScannerResponse.scannerHandle-এর ভ্যালু তখনই থাকবে যখন
OpenScannerResponse.result, SUCCESS-এর সমান হবে।
স্ক্যানার সংক্রান্ত বিকল্প
ডিভাইস অনুযায়ী স্ক্যানার বিকল্পে অনেক পার্থক্য থাকে। তাই, documentScan API-এর মধ্যে সরাসরি স্ক্যানার বিকল্প
দেখানো সম্ভব নয়। এটি এড়াতে,
OpenScannerResponse (openScanner() ব্যবহার করে
উদ্ধার করা হয়েছে) এবং
SetOptionsResponse (setOptions()-এর জন্য
রেসপন্স অবজেক্ট)-এ একটি options প্রপার্টি থাকে যা
স্ক্যানার-নির্দিষ্ট বিকল্প সহ একটি অবজেক্ট। প্রতিটি বিকল্প হল একটি কী-ভ্যালু ম্যাপিং
যেখানে কী হল ডিভাইস-নির্দিষ্ট বিকল্প এবং ভ্যালু হল
ScannerOption-এর একটি ইনস্ট্যান্স।
সাধারণত এই ধরনের স্ট্রাকচার দেখা যায়:
{
"key1": { scannerOptionInstance }
"key2": { scannerOptionInstance }
}
যেমন, এমন একটি স্ক্যানারের কথা ভাবুন যা "সোর্স" এবং "রেজোলিউশন" নামের বিকল্প দেখায়। ফেরত আসা options অবজেক্টের স্ট্রাকচারটি নিচের উদাহরণের মতো
দেখাবে। সহজভাবে দেখানোর জন্য, ScannerOption-এর আংশিক উত্তর
দেখানো হয়েছে।
{
"source": {
"name": "source",
"type": OptionType.STRING,
...
},
"resolution": {
"name": "resolution",
"type": OptionType.INT,
...
},
...
}
ইউজার ইন্টারফেস তৈরি করা
এই API ব্যবহার করার জন্য প্রয়োজন না হলেও, আপনি হয়ত চাইবেন যে ব্যবহারকারী কোনও নির্দিষ্ট বিকল্পের জন্য
ভ্যালু বেছে নিন। এর জন্য ইউজার ইন্টারফেস প্রয়োজন। আগের বিভাগে যেমন বর্ণনা করা হয়েছে, সেই অনুযায়ী অ্যাটাচ করা স্ক্যানারের বিকল্পগুলি ফিরিয়ে আনতে
OpenScannerResponse (openScanner()-এর মাধ্যমে খোলা)
ব্যবহার করুন।
কিছু স্ক্যানার ডিভাইস-নির্দিষ্ট উপায়ে বিকল্পগুলি গ্রুপ করে। এগুলি বিকল্পের আচরণকে প্রভাবিত করে না, তবে যেহেতু এই গ্রুপগুলি স্ক্যানারের প্রোডাক্ট ডকুমেন্টেশনে উল্লেখ করা হতে পারে, তাই এই ধরনের গ্রুপ ব্যবহারকারীকে দেখানো উচিত। আপনি getOptionGroups() নম্বরে কল করে এইসব
গ্রুপ ফিরিয়ে আনতে পারবেন। এটি একটি
Promise রিটার্ন করে যা
GetOptionGroupsResponse অবজেক্টের সাথে সমাধান করে। এর groups
প্রপার্টিতে স্ক্যানার-নির্দিষ্ট গ্রুপের অ্যারে আছে। এইসব গ্রুপের তথ্য ব্যবহার করে
OpenScannerResponse-এ দেখানোর জন্য
বিকল্পগুলি সাজান।
{
scannerHandle: "123456",
result: SUCCESS,
groups: [
{
title: "Standard",
members: [ "resolution", "mode", "source" ]
}
]
}
স্ক্যানার কনফিগারেশনে যেমন বলা হয়েছে, একটি বিকল্প পরিবর্তন করলে অন্য বিকল্পের সীমাবদ্ধতা
পরিবর্তিত হতে পারে। এই কারণেই
setOptionsResponse (
setOptions()-এর জন্য রেসপন্স অবজেক্ট)-এ আরেকটি options প্রপার্টি আছে। ইউজার ইন্টারফেস আপডেট করতে
এটি ব্যবহার করুন। তারপর সব বিকল্প সেট না হওয়া পর্যন্ত প্রয়োজনমতো
এই প্রসেসটি রিপিট করুন।
স্ক্যানার বিকল্প সেট করুন
setOptions()-এ
OptionSetting অবজেক্টের অ্যারে পাস করে স্ক্যানার বিকল্প সেট করুন। উদাহরণ হিসেবে, নিম্নলিখিত লেটার-সাইজের একটি পৃষ্ঠা স্ক্যান করুন বিভাগটি দেখুন।
উদাহরণ
ব্লব হিসেবে পৃষ্ঠা ফিরিয়ে আনুন
এই উদাহরণে দেখানো হয়েছে কীভাবে স্ক্যানার থেকে একটি পৃষ্ঠা ব্লব হিসেবে ফিরিয়ে আনা যায় এবং
OperationResult-এর ভ্যালু ব্যবহার করে startScan() ও readScanData()-এর ব্যবহার
দেখানো হয়েছে।
async function pageAsBlob(handle) {
let response = await browser.documentScan.startScan(
handle, {format: "image/jpeg"});
if (response.result != browser.documentScan.OperationResult.SUCCESS) {
return null;
}
const job = response.job;
let imgParts = [];
response = await browser.documentScan.readScanData(job);
while (response.result == browser.documentScan.OperationResult.SUCCESS) {
if (response.data && response.data.byteLength > 0) {
imgParts.push(response.data);
} else {
// Delay so hardware can make progress.
await new Promise(r => setTimeout(r, 100));
}
response = await browser.documentScan.readScanData(job);
}
if (response.result != browser.documentScan.OperationResult.EOF) {
return null;
}
if (response.data && response.data.byteLength > 0) {
imgParts.push(response.data);
}
return new Blob(imgParts, { type: "image/jpeg" });
}
একটি লেটার-সাইজ পৃষ্ঠা স্ক্যান করুন
এই উদাহরণে দেখানো হয়েছে কীভাবে স্ক্যানার বেছে নিতে, সেটির বিকল্প সেট করতে এবং সেটি খুলতে হয়। এটি
তারপরে একটি পৃষ্ঠার কন্টেন্ট রিট্রিভ করে এবং স্ক্যানার বন্ধ করে দেয়। এই প্রসেসটি
getScannerList(), openScanner(), setOptions() এবং
closeScanner() ব্যবহার করে দেখায়। মনে রাখবেন, আগের উদাহরণ থেকে pageAsBlob() ফাংশন কল করে
পৃষ্ঠার কন্টেন্ট ফিরিয়ে আনা হয়।
async function scan() {
let response = await browser.documentScan.getScannerList({ secure: true });
let scanner = await browser.documentScan.openScanner(
response.scanners[0].scannerId);
const handle = scanner.scannerHandle;
let options = [];
for (source of scanner.options["source"].constraint.list) {
if (source.includes("ADF")) {
options.push({
name: "source",
type: browser.documentScan.OptionType.STRING,
value: { value: source }
});
break;
}
}
options.push({
name: "tl-x",
type: browser.documentScan.OptionType.FIXED,
value: 0.0
});
options.push({
name: "br-x",
type: browser.documentScan.OptionType.FIXED,
value: 215.9 // 8.5" in mm
});
options.push({
name: "tl-y",
type: browser.documentScan.OptionType.FIXED,
value: 0.0
});
options.push({
name: "br-y",
type: browser.documentScan.OptionType.FIXED,
value: 279.4 // 11" in mm
});
response = await browser.documentScan.setOptions(handle, options);
let imgBlob = await pageAsBlob(handle);
if (imgBlob != null) {
// Insert imgBlob into DOM, save to disk, etc
}
await browser.documentScan.closeScanner(handle);
}
কনফিগারেশন দেখুন
অন্য কোথাও যেমন বলা হয়েছে, ব্যবহারকারীকে স্ক্যানারের কনফিগারেশন বিকল্প দেখাতে হলে
openScanner()-এ কল করার পরে স্ক্যানার বিকল্প ছাড়াও
getOptionGroups()-এ কল করতে হবে। এটি করা হয় যাতে ব্যবহারকারীদের প্রস্তুতকারকের দ্বারা নির্ধারিত গ্রুপে বিকল্পগুলি দেখানো যায়। এই উদাহরণে দেখানো হয়েছে কীভাবে এটি করতে হয়।
async function showConfig() {
let response = await browser.documentScan.getScannerList({ secure: true });
let scanner = await browser.documentScan.openScanner(
response.scanners[0].scannerId);
let groups = await browser.documentScan.getOptionGroups(scanner.scannerHandle);
for (const group of groups.groups) {
console.log("=== " + group.title + " ===");
for (const member of group.members) {
const option = scanner.options[member];
if (option.isActive) {
console.log(" " + option.name + " = " + option.value);
} else {
console.log(" " + option.name + " is inactive");
}
}
}
}
ধরন
CancelScanResponse
প্রপার্টি
-
কাজ
স্ট্রিং
cancelScan()-এ পাস করা একই জব হ্যান্ডেল প্রদান করে। -
ফলাফল
ব্যাকএন্ডের স্ক্যান বাতিল করার ফলাফল। ফলাফল
OperationResult.SUCCESSবাOperationResult.CANCELLEDহলে, স্ক্যান বাতিল করা হয়েছে এবং স্ক্যানার নতুন স্ক্যান শুরু করার জন্য রেডি। ফলাফলOperationResult.DEVICE_BUSYহলে, স্ক্যানার এখনও বাতিল করার অনুরোধ প্রসেস করছে; কলারকে কিছুক্ষণ অপেক্ষা করে আবার অনুরোধ করতে হবে। অন্যান্য ফলাফল সংক্রান্ত ভ্যালু স্থায়ী সমস্যা নির্দেশ করে যা আবার চেষ্টা করা উচিত নয়।
CloseScannerResponse
প্রপার্টি
-
ফলাফল
স্ক্যানার বন্ধ করার ফলাফল। এই ভ্যালু
SUCCESSনা হলেও, হ্যান্ডেলটি সঠিক হবে না এবং পরবর্তী কোনও অপারেশনের জন্য ব্যবহার করা যাবে না। -
scannerHandle
স্ট্রিং
closeScanner-এ পাস করা স্ক্যানার হ্যান্ডেলের মতোই।
Configurability
কোনও বিকল্প কীভাবে পরিবর্তন করা যায়।
Enum
"NOT_CONFIGURABLE"
বিকল্পটি শুধু পড়ার জন্য।
"SOFTWARE_CONFIGURABLE"
বিকল্পটি সফ্টওয়্যারে সেট করা যেতে পারে।
"HARDWARE_CONFIGURABLE"
স্ক্যানারে কোনও বোতাম টগল বা পুশ করার মাধ্যমে ব্যবহারকারী এই বিকল্প সেট করতে পারবেন।
ConnectionType
স্ক্যানারটি কম্পিউটারের সাথে কীভাবে কানেক্ট করা আছে তা দেখায়।
Enum
"UNSPECIFIED"
"USB"
"নেটওয়ার্ক"
ConstraintType
OptionConstraint দ্বারা উপস্থাপিত সীমাবদ্ধতার ডেটা টাইপ।
Enum
"INT_RANGE"
OptionType.INT মানের রেঞ্জের উপর সীমাবদ্ধতা। OptionConstraint-এর min, max এবং quant প্রপার্টি long হবে এবং এর list প্রপার্টি আনসেট করা হবে।
"FIXED_RANGE"
OptionType.FIXED ভ্যালুর রেঞ্জের উপর সীমাবদ্ধতা। OptionConstraint-এর min, max এবং quant প্রপার্টি double হবে এবং এর list প্রপার্টি আনসেট করা হবে।
"INT_LIST"
OptionType.INT ভ্যালুর নির্দিষ্ট তালিকার উপর সীমাবদ্ধতা। OptionConstraint.list প্রপার্টিতে long ভ্যালু থাকবে এবং অন্যান্য প্রপার্টি আনসেট করা হবে।
"FIXED_LIST"
OptionType.FIXED ভ্যালুর নির্দিষ্ট তালিকার উপর সীমাবদ্ধতা। OptionConstraint.list প্রপার্টিতে double ভ্যালু থাকবে এবং অন্যান্য প্রপার্টি আনসেট করা হবে।
"STRING_LIST"
OptionType.STRING ভ্যালুর নির্দিষ্ট তালিকার উপর সীমাবদ্ধতা। OptionConstraint.list প্রপার্টিতে DOMString ভ্যালু থাকবে এবং অন্যান্য প্রপার্টি আনসেট করা হবে।
DeviceFilter
প্রপার্টি
-
স্থানীয়
বুলিয়ান ঐচ্ছিক
শুধুমাত্র কম্পিউটারের সাথে সরাসরি অ্যাটাচ করা স্ক্যানার ফিরিয়ে দিন।
-
সুরক্ষিত
বুলিয়ান ঐচ্ছিক
শুধুমাত্র সেইসব স্ক্যানার ফেরত দিন যেগুলি USB বা TLS-এর মতো সুরক্ষিত ট্রান্সপোর্ট ব্যবহার করে।
GetOptionGroupsResponse
প্রপার্টি
-
গ্রুপ
OptionGroup[] ঐচ্ছিক
resultযদিSUCCESSহয়, তাহলে স্ক্যানার ড্রাইভারের দেওয়া ক্রম অনুযায়ী বিকল্প গ্রুপের তালিকা প্রদান করে। -
ফলাফল
বিকল্প গ্রুপ পাওয়ার ফলাফল। এটির ভ্যালু
SUCCESSহলে,groupsপ্রপার্টি পপুলেট করা হবে। -
scannerHandle
স্ট্রিং
getOptionGroups-এ পাস করা স্ক্যানার হ্যান্ডেলের মতোই।
GetScannerListResponse
প্রপার্টি
-
ফলাফল
গণনার ফলাফল। মনে রাখবেন, এটি কোনও সমস্যা নির্দেশ করলেও আংশিক ফলাফল ফেরত দেওয়া হতে পারে।
-
স্ক্যানারগুলি
প্রদান করা
DeviceFilter-এর সাথে মেলে এমন স্ক্যানারের একটি সম্ভাব্য-খালি তালিকা।
OpenScannerResponse
প্রপার্টি
-
বিকল্প
অবজেক্ট ঐচ্ছিক
resultযদিSUCCESSহয়, তাহলে একটি কী-ভ্যালু ম্যাপিং প্রদান করে যেখানে কী হল ডিভাইস-নির্দিষ্ট বিকল্প এবং ভ্যালু হলScannerOption-এর একটি ইনস্ট্যান্স। -
ফলাফল
স্ক্যানার খোলার ফলাফল। এটির ভ্যালু
SUCCESSহলে,scannerHandleওoptionsপ্রপার্টি পপুলেট করা হবে। -
scannerHandle
স্ট্রিং ঐচ্ছিক
resultযদিSUCCESSহয়, তাহলে স্ক্যানারের হ্যান্ডেল যা আরও অপারেশনের জন্য ব্যবহার করা যেতে পারে। -
scannerId
স্ট্রিং
স্ক্যানার আইডি
openScanner()-এ পাস করা হয়েছে।
OperationResult
একটি enum যা প্রতিটি অপারেশনের ফলাফল নির্দেশ করে।
Enum
"অজানা"
অজানা বা সাধারণ কোনও সমস্যা হয়েছে।
"SUCCESS"
অপারেশনটি সফল হয়েছে।
"কাজ করে না"
অপারেশনটি কাজ করে না।
"বাতিল করা হয়েছে"
অপারেশন বাতিল করা হয়েছে।
"DEVICE_BUSY"
ডিভাইস ব্যস্ত আছে।
"INVALID"
পদ্ধতিতে পাস করা ডেটা বা আর্গুমেন্ট সঠিক নয়।
"WRONG_TYPE"
প্রদত্ত ভ্যালুটি অন্তর্নিহিত বিকল্পের জন্য ভুল ডেটা টাইপ।
"EOF"
আর কোনও ডেটা উপলভ্য নেই।
"ADF_JAMMED"
ডকুমেন্ট ফিডার জ্যাম হয়ে গেছে।
"ADF_EMPTY"
ডকুমেন্ট ফিডার খালি আছে।
"COVER_OPEN"
ফ্ল্যাটবেড কভার খোলা আছে।
"IO_ERROR"
ডিভাইসের সাথে যোগাযোগ করার সময় কোনও সমস্যা হয়েছে।
"ACCESS_DENIED"
ডিভাইস যাচাই করতে হবে।
"NO_MEMORY"
অপারেশন সম্পূর্ণ করার জন্য Chromebook-এ পর্যাপ্ত মেমরি উপলভ্য নেই।
"পৌঁছানো যাচ্ছে না"
ডিভাইসে পৌঁছানো যাচ্ছে না।
"MISSING"
ডিভাইসটি ডিসকানেক্ট করা আছে।
"INTERNAL_ERROR"
কলিং অ্যাপ্লিকেশন ছাড়া অন্য কোথাও সমস্যা হয়েছে।
OptionConstraint
প্রপার্টি
-
তালিকা
string[] | number[] ঐচ্ছিক
-
সর্বাধিক
নম্বর ঐচ্ছিক
-
মিঃ
নম্বর ঐচ্ছিক
-
কোয়ান্ট
নম্বর ঐচ্ছিক
-
ধরন
OptionGroup
প্রপার্টি
-
সদস্যবৃন্দ
স্ট্রিং[]
ড্রাইভারের দেওয়া ক্রম অনুযায়ী বিকল্পের নামের অ্যারে।
-
শীর্ষক
স্ট্রিং
প্রিন্ট করা যাবে এমন শীর্ষক প্রদান করে, যেমন "জ্যামিতি বিকল্প"।
OptionSetting
প্রপার্টি
-
নাম
স্ট্রিং
সেট করার জন্য বিকল্পের নাম দেখায়।
-
ধরন
বিকল্পের ডেটার ধরন নির্দেশ করে। অনুরোধ করা ডেটার ধরন অবশ্যই অন্তর্নিহিত বিকল্পের আসল ডেটার ধরনের সাথে মিলতে হবে।
-
মান
স্ট্রিং | সংখ্যা | বুলিয়ান | সংখ্যা[] ঐচ্ছিক
সেট করার জন্য ভ্যালু দেখায়।
autoSettableচালু আছে এমন বিকল্পের জন্য অটোমেটিক সেটিংয়ের অনুরোধ করতে, সেট না করেই ছেড়ে দিন।value-এর জন্য দেওয়া ডেটা টাইপ অবশ্যইtype-এর সাথে মিলতে হবে।
OptionType
কোনও বিকল্পের ডেটার ধরন।
Enum
"অজানা"
বিকল্পের ডেটার ধরন অজানা। value প্রপার্টি আনসেট করা হবে।
"BOOL"
value প্রপার্টি truefalse-এর মধ্যে একটি হবে।
"INT"
একটি স্বাক্ষরিত ৩২-বিট পূর্ণসংখ্যা। value প্রপার্টি long বা long[] হবে, বিকল্পটি একাধিক ভ্যালু নেয় কিনা তার উপর নির্ভর করে।
"FIXED"
১/৬৫৫৩৫ রেজোলিউশন সহ -৩২৭৬৮-৩২৭৬৭.৯৯৯৯ রেঞ্জে ডবল। বিকল্পটি একাধিক মান গ্রহণ করে কিনা তার উপর নির্ভর করে value প্রপার্টি ডবল বা ডবল[] হবে। ডবল ভ্যালু যা সঠিকভাবে দেখানো যায় না, তা উপলভ্য রেঞ্জ ও প্রিসিশনে রাউন্ড করা হবে।
"STRING"
NUL ('\0') ছাড়া যেকোনও বাইটের সিকোয়েন্স। value প্রপার্টি DOMString হবে।
"BUTTON"
এই ধরনের বিকল্পের কোনও ভ্যালু নেই। পরিবর্তে, এই ধরনের বিকল্প সেট করলে স্ক্যানার ড্রাইভারের উপর বিকল্প-নির্দিষ্ট পার্শ্বপ্রতিক্রিয়া হয়। যেমন, ডিফল্ট ভ্যালু বেছে নেওয়ার জন্য বা অটোমেটিক ডকুমেন্ট ফিডারকে পরের শিটে যাওয়ার নির্দেশ দেওয়ার জন্য স্ক্যানার ড্রাইভার বোতামের মতো বিকল্প ব্যবহার করতে পারে।
"GROUP"
গ্রুপ করার বিকল্প। কোনও ভ্যালু নেই। এটি কম্প্যাটিবিলিটির জন্য অন্তর্ভুক্ত করা হয়েছে, তবে সাধারণত ScannerOption ভ্যালুতে রিটার্ন করা হবে না। getOptionGroups() ব্যবহার করে গ্রুপের তালিকা ও তার মেম্বারদের বিকল্প দেখুন।
Enum
"UNITLESS"
ভ্যালুটি হল ইউনিটলেস নম্বর। যেমন, এটি থ্রেশহোল্ড হতে পারে।
"PIXEL"
ভ্যালু হল পিক্সেলের সংখ্যা, যেমন, স্ক্যান ডাইমেনশন।
"BIT"
ভ্যালু হল বিটের সংখ্যা, যেমন, কালার ডেপথ।
"MM"
ভ্যালু মিলিমিটারে পরিমাপ করা হয়, যেমন, স্ক্যান ডাইমেনশন।
"DPI"
ভ্যালুটি প্রতি ইঞ্চিতে ডটের সংখ্যা হিসেবে পরিমাপ করা হয়, যেমন, রেজোলিউশন।
"PERCENT"
ভ্যালুটি শতাংশে প্রকাশ করা হয়, যেমন উজ্জ্বলতা।
"MICROSECOND"
ভ্যালুটি মাইক্রোসেকেন্ডে পরিমাপ করা হয়, যেমন, এক্সপোজার টাইম।
ReadScanDataResponse
প্রপার্টি
-
ডেটা
ArrayBuffer ঐচ্ছিক
resultযদিSUCCESSহয়, তাহলে স্ক্যান করা ইমেজ ডেটার পরবর্তী চাঙ্ক থাকে।resultযদিEOFহয়, তাহলে স্ক্যান করা ইমেজ ডেটার শেষ চাঙ্ক থাকে। -
estimatedCompletion
নম্বর ঐচ্ছিক
resultযদিSUCCESSহয়, তাহলে মোট স্ক্যান ডেটার কতটা এখনও পর্যন্ত ডেলিভার করা হয়েছে তার আনুমানিক হিসেব, ০ থেকে ১০০-এর রেঞ্জে। -
কাজ
স্ট্রিং
readScanData()-এ পাস করা জব হ্যান্ডেল প্রদান করে। -
ফলাফল
ডেটা পড়ার ফলাফল। এর ভ্যালু
SUCCESSহলে,data-এ পরবর্তী (সম্ভবত শূন্য-দৈর্ঘ্যের) ইমেজ ডেটার চাঙ্ক থাকে যা পড়ার জন্য প্রস্তুত। এর ভ্যালুEOFহলে,data-এ ছবির ডেটার শেষ চাঙ্ক থাকে।
ScannerInfo
প্রপার্টি
-
connectionType
স্ক্যানারটি কম্পিউটারের সাথে কীভাবে কানেক্ট করা আছে তা দেখায়।
-
deviceUuid
স্ট্রিং
একই ফিজিক্যাল ডিভাইসকে নির্দেশ করে এমন অন্যান্য
ScannerInfoএন্ট্রির সাথে ম্যাচ করার জন্য। -
imageFormats
স্ট্রিং[]
MIME ধরনের একটি অ্যারে যা ফেরত আসা স্ক্যানের জন্য অনুরোধ করা যেতে পারে।
-
প্রস্তুতকারক
স্ট্রিং
স্ক্যানার প্রস্তুতকারক।
-
মডেল
স্ট্রিং
স্ক্যানার মডেল উপলভ্য থাকলে সেটি বা সাধারণ বিবরণ।
-
নাম
স্ট্রিং
UI-তে দেখানোর জন্য স্ক্যানারের মানুষের-পঠনযোগ্য নাম।
-
protocolType
স্ট্রিং
স্ক্যানার অ্যাক্সেস করার জন্য ব্যবহৃত প্রোটোকল বা ড্রাইভারের মানুষের-পঠনযোগ্য বিবরণ, যেমন Mopria, WSD বা epsonds। কোনও ডিভাইস একাধিক প্রোটোকল সাপোর্ট করলে, ব্যবহারকারীকে প্রোটোকল বেছে নেওয়ার অনুমতি দেওয়ার জন্য এটি প্রাথমিকভাবে উপযোগী।
-
scannerId
স্ট্রিং
নির্দিষ্ট স্ক্যানারের আইডি।
-
সুরক্ষিত
বুলিয়ান
সত্য হলে, স্ক্যানার কানেকশনের ট্রান্সপোর্ট কোনও প্যাসিভ লিসেনার দ্বারা ইন্টারসেপ্ট করা যাবে না, যেমন TLS বা USB।
ScannerOption
প্রপার্টি
-
কনফিগার করার সুবিধা
বিকল্পটি পরিবর্তন করা যাবে কিনা এবং কীভাবে করা যাবে তা দেখায়।
-
সীমাবদ্ধতা
OptionConstraint ঐচ্ছিক
বর্তমান স্ক্যানার বিকল্পে
OptionConstraintনির্ধারণ করে। -
বর্ণনা
স্ট্রিং
বিকল্পের আরও বড় বিবরণ।
-
isActive
বুলিয়ান
বিকল্পটি অ্যাক্টিভ আছে এবং সেট বা ফিরিয়ে আনা যাবে কিনা তা দেখায়। 'ফলস' হিসেবে সেট করা থাকলে,
valueপ্রপার্টি সেট করা হবে না। -
isAdvanced
বুলিয়ান
এটি নির্দেশ করে যে UI-তে ডিফল্ট হিসেবে এই বিকল্প দেখানো উচিত নয়।
-
isAutoSettable
বুলিয়ান
স্ক্যানার ড্রাইভারের মাধ্যমে অটোমেটিক সেট করা যেতে পারে।
-
isDetectable
বুলিয়ান
সফ্টওয়্যার থেকে এই বিকল্পটি শনাক্ত করা যেতে পারে তা দেখায়।
-
isEmulated
বুলিয়ান
সত্য হলে স্ক্যানার ড্রাইভার দ্বারা এমুলেট করা হয়।
-
নাম
স্ট্রিং
ছোট হাতের ASCII অক্ষর, সংখ্যা ও ড্যাশ ব্যবহার করে বিকল্পের নাম। ডায়াক্রিটিক ব্যবহার করা যাবে না।
-
শীর্ষক
স্ট্রিং
প্রিন্ট করা যাবে এমন এক লাইনের শীর্ষক।
-
ধরন
valueপ্রপার্টিতে থাকা ডেটার ধরন, যা এই বিকল্প সেট করার জন্য প্রয়োজন। -
একক
এই বিকল্পের জন্য পরিমাপের ইউনিট।
-
মান
স্ট্রিং | সংখ্যা | বুলিয়ান | সংখ্যা[] ঐচ্ছিক
প্রাসঙ্গিক হলে, বিকল্পের বর্তমান ভ্যালু। মনে রাখবেন, এই প্রপার্টির ডেটার ধরন অবশ্যই
type-এ উল্লেখ করা ডেটার ধরনের সাথে মিলতে হবে।
ScanOptions
প্রপার্টি
-
maxImages
নম্বর ঐচ্ছিক
স্ক্যান করা ছবির অনুমোদিত সংখ্যা। ডিফল্ট হল ১।
-
mimeTypes
string[] ঐচ্ছিক
কলার যে MIME টাইপ গ্রহণ করেন।
ScanResults
প্রপার্টি
-
dataUrls
স্ট্রিং[]
ডেটা ইমেজ URL-এর একটি অ্যারে এমন একটি ফর্মে থাকে যা কোনও ইমেজ ট্যাগে "src" ভ্যালু হিসেবে পাস করা যেতে পারে।
-
mimeType
স্ট্রিং
dataUrls-এর MIME-এর প্রকার।
SetOptionResult
প্রপার্টি
-
নাম
স্ট্রিং
সেট করা বিকল্পের নাম দেখায়।
-
ফলাফল
বিকল্প সেট করার ফলাফল দেখায়।
SetOptionsResponse
প্রপার্টি
-
বিকল্প
অবজেক্ট ঐচ্ছিক
প্রদান করা সব বিকল্প সেট করার চেষ্টা করার পরে নতুন কনফিগারেশন সহ বিকল্পের নাম থেকে
ScannerOptionভ্যালুতে একটি আপডেট করা কী-ভ্যালু ম্যাপিং। এটির স্ট্রাকচারOpenScannerResponse-এরoptionsপ্রপার্টির মতোই।কিছু বিকল্প সঠিকভাবে সেট করা না গেলেও এই প্রপার্টি সেট করা হবে, তবে আপডেট করা কনফিগারেশন ফিরিয়ে আনা না গেলে (যেমন, স্ক্যান করার সময় স্ক্যানার ডিসকানেক্ট হয়ে গেলে) এটি আনসেট করা হবে।
-
টি ফলাফল
ফলাফলের একটি অ্যারে, প্রতিটি পাস-ইন
OptionSetting-এর জন্য একটি করে। -
scannerHandle
স্ট্রিং
setOptions()-এ পাস করা স্ক্যানার হ্যান্ডেল প্রদান করে।
StartScanOptions
প্রপার্টি
-
ফর্ম্যাট
স্ট্রিং
স্ক্যান করা ডেটা যে MIME টাইপে ফেরত দিতে হবে তা উল্লেখ করে।
-
maxReadSize
নম্বর ঐচ্ছিক
শূন্য নয় এমন ভ্যালু উল্লেখ করা হলে, একটি
readScanDataউত্তরে স্ক্যান করা বাইটের সর্বাধিক সীমা সেই ভ্যালুতে সীমাবদ্ধ করা হয়। অনুমোদিত সবচেয়ে ছোট ভ্যালু হল ৩২৭৬৮ (৩২ কেবি)। এই প্রপার্টি নির্দিষ্ট করা না থাকলে, ফেরত আসা চাঙ্কের সাইজ স্ক্যান করা সম্পূর্ণ ছবির মতো বড় হতে পারে।
StartScanResponse
প্রপার্টি
-
কাজ
স্ট্রিং ঐচ্ছিক
resultযদিSUCCESSহয়, তাহলে একটি হ্যান্ডেল প্রদান করে যা স্ক্যান ডেটা পড়তে বা কাজ বাতিল করতে ব্যবহার করা যেতে পারে। -
ফলাফল
স্ক্যান শুরু করার ফলাফল। এটির ভ্যালু
SUCCESSহলে,jobপ্রপার্টি পপুলেট করা হবে। -
scannerHandle
স্ট্রিং
startScan()-এ পাস করা একই স্ক্যানার হ্যান্ডেল প্রদান করে।
পদ্ধতি
cancelScan()
browser.documentScan.cancelScan(
job: string,
): Promise<CancelScanResponse>
শুরু করা স্ক্যান বাতিল করে এবং একটি Promise ফিরিয়ে দেয় যা CancelScanResponse অবজেক্টের মাধ্যমে সমাধান করে। কলব্যাক ব্যবহার করা হলে, অবজেক্টটি পরিবর্তে এতে পাস করা হয়।
প্যারামিটারগুলি
-
কাজ
স্ট্রিং
startScan-এ কল থেকে আগে ফেরত আসা অ্যাক্টিভ স্ক্যান জবের হ্যান্ডেল।
রিটার্ন
-
Promise<CancelScanResponse>
একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।
closeScanner()
browser.documentScan.closeScanner(
scannerHandle: string,
): Promise<CloseScannerResponse>
পাস করা হ্যান্ডেলের মাধ্যমে স্ক্যানার বন্ধ করে এবং একটি প্রমিস রিটার্ন করে যা CloseScannerResponse অবজেক্টের মাধ্যমে সমাধান করা হয়। কলব্যাক ব্যবহার করা হলে, অবজেক্টটি পরিবর্তে এতে পাস করা হয়। রেসপন্স সফল না হলেও, সরবরাহ করা হ্যান্ডেলটি অবৈধ হয়ে যায় এবং পরবর্তী অপারেশনের জন্য ব্যবহার করা উচিত নয়।
প্যারামিটারগুলি
-
scannerHandle
স্ট্রিং
openScanner-এ কল থেকে আগে ফেরত আসা খোলা স্ক্যানারের হ্যান্ডেল নির্দিষ্ট করে।
রিটার্ন
-
Promise<CloseScannerResponse>
একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।
getOptionGroups()
browser.documentScan.getOptionGroups(
scannerHandle: string,
): Promise<GetOptionGroupsResponse>
openScanner-এর আগে খোলা স্ক্যানার থেকে গ্রুপের নাম ও মেম্বারদের বিকল্প পায়। এই পদ্ধতি একটি Promise রিটার্ন করে যা GetOptionGroupsResponse অবজেক্টের মাধ্যমে সমাধান করা হয়। এই ফাংশনে কলব্যাক পাস করা হলে, পরিবর্তে রিটার্ন করা ডেটা এতে পাস করা হয়।
প্যারামিটারগুলি
-
scannerHandle
স্ট্রিং
openScanner-এ কল করার পরে খোলা স্ক্যানারের হ্যান্ডেল ফেরত এসেছে।
রিটার্ন
-
Promise<GetOptionGroupsResponse>
একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।
getScannerList()
browser.documentScan.getScannerList(
filter: DeviceFilter,
): Promise<GetScannerListResponse>
উপলভ্য স্ক্যানারের তালিকা পায় এবং একটি Promise রিটার্ন করে যা GetScannerListResponse অবজেক্টের মাধ্যমে সমাধান করে। এই ফাংশনে কলব্যাক পাস করা হলে, পরিবর্তে রিটার্ন করা ডেটা এতে পাস করা হয়।
প্যারামিটারগুলি
-
ফিল্টার করুন
একটি
DeviceFilterযা নির্দেশ করে যে কোন ধরনের স্ক্যানার ফেরত দেওয়া উচিত।
রিটার্ন
-
Promise<GetScannerListResponse>
একটি Promise রিটার্ন করে যা ফলাফল এবং স্ক্যানারের তালিকা সহ সমাধান করে।
openScanner()
browser.documentScan.openScanner(
scannerId: string,
): Promise<OpenScannerResponse>
এক্সক্লুসিভ অ্যাক্সেসের জন্য স্ক্যানার খোলে এবং একটি Promise রিটার্ন করে যা OpenScannerResponse অবজেক্টের মাধ্যমে সমাধান করে। এই ফাংশনে কলব্যাক পাস করা হলে, পরিবর্তে রিটার্ন করা ডেটা এতে পাস করা হয়।
প্যারামিটারগুলি
-
scannerId
স্ট্রিং
যে স্ক্যানার খোলা হবে সেটির আইডি। এই ভ্যালু হল
getScannerList-এ আগের কল থেকে পাওয়া একটি ভ্যালু।
রিটার্ন
-
Promise<OpenScannerResponse>
একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।
readScanData()
browser.documentScan.readScanData(
job: string,
): Promise<ReadScanDataResponse>
অ্যাক্টিভ জব হ্যান্ডেল থেকে উপলভ্য ইমেজ ডেটার পরবর্তী চাঙ্ক পড়ে এবং একটি Promise রিটার্ন করে যা ReadScanDataResponse অবজেক্টের মাধ্যমে সমাধান করা হয়। কলব্যাক ব্যবহার করা হলে, অবজেক্টটি পরিবর্তে এতে পাস করা হয়।
**মনে রাখবেন:**কোনও উত্তরের ফলাফল SUCCESS হলে এবং তাতে শূন্য-দৈর্ঘ্যের data মেম্বার থাকলে তা সঠিক বলে গণ্য করা হয়। এর অর্থ হল, স্ক্যানার এখনও কাজ করছে কিন্তু অতিরিক্ত ডেটা এখনও প্রস্তুত হয়নি। কলকারীকে কিছুক্ষণ অপেক্ষা করে আবার চেষ্টা করতে হবে।
স্ক্যান করার কাজ সম্পূর্ণ হলে, উত্তরে EOF-এর ফলাফল ভ্যালু থাকবে। এই উত্তরে শূন্য ছাড়া অন্য কোনও data মেম্বার থাকতে পারে।
প্যারামিটারগুলি
-
কাজ
স্ট্রিং
অ্যাক্টিভ জব হ্যান্ডেল আগে
startScanথেকে ফিরিয়ে দেওয়া হয়েছে।
রিটার্ন
-
Promise<ReadScanDataResponse>
একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।
scan()
browser.documentScan.scan(
options: ScanOptions,
): Promise<ScanResults>
ডকুমেন্ট স্ক্যান করে এবং একটি প্রমিস রিটার্ন করে যা ScanResults অবজেক্টের মাধ্যমে সমাধান করা হয়। এই ফাংশনে কলব্যাক পাস করা হলে, পরিবর্তে রিটার্ন করা ডেটা এতে পাস করা হয়।
প্যারামিটারগুলি
-
বিকল্প
স্ক্যান প্যারামিটার সহ অবজেক্ট।
রিটার্ন
-
Promise<ScanResults>
Chrome 96+ Chrome 148 থেকে browser.*স্ক্যান ফলাফলের সাথে সমাধান করে এমন একটি Promise রিটার্ন করে।
setOptions()
browser.documentScan.setOptions(
scannerHandle: string,
options: OptionSetting[],
): Promise<SetOptionsResponse>
নির্দিষ্ট স্ক্যানারে বিকল্প সেট করে এবং একটি Promise রিটার্ন করে যা পাস-ইন করা OptionSetting অবজেক্টের ক্রমে প্রতিটি মান সেট করার চেষ্টার ফলাফল সহ একটি SetOptionsResponse অবজেক্টের সাথে সমাধান করে। কলব্যাক ব্যবহার করা হলে, অবজেক্টটি পরিবর্তে এতে পাস করা হয়।
প্যারামিটারগুলি
-
scannerHandle
স্ট্রিং
স্ক্যানারের হ্যান্ডেল যাতে বিকল্প সেট করা যায়। এটি
openScanner-এ করা কল থেকে আগে ফেরত পাওয়া ভ্যালু হতে হবে। -
বিকল্প
স্ক্যানারে প্রয়োগ করার জন্য
OptionSettingটি অবজেক্টের তালিকা।
রিটার্ন
-
<SetOptionsResponse> প্রমিস করুন
একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।
startScan()
browser.documentScan.startScan(
scannerHandle: string,
options: StartScanOptions,
): Promise<StartScanResponse>
নির্দিষ্ট স্ক্যানারে স্ক্যান শুরু করে এবং একটি Promise রিটার্ন করে যা StartScanResponse-এর মাধ্যমে সমাধান করা হয়। কলব্যাক ব্যবহার করা হলে, অবজেক্টটি পরিবর্তে এতে পাস করা হয়। কলটি সফল হলে, উত্তরে একটি জব হ্যান্ডেল অন্তর্ভুক্ত থাকে যা স্ক্যান ডেটা পড়তে বা স্ক্যান বাতিল করতে পরবর্তী কলে ব্যবহার করা যেতে পারে।
প্যারামিটারগুলি
-
scannerHandle
স্ট্রিং
খোলা স্ক্যানারের হ্যান্ডেল। এটি
openScanner-এ করা কল থেকে আগে ফেরত পাওয়া ভ্যালু হতে হবে। -
বিকল্প
একটি
StartScanOptionsঅবজেক্ট যা স্ক্যানের জন্য ব্যবহার করা বিকল্পগুলি নির্দেশ করে।StartScanOptions.formatপ্রপার্টি অবশ্যই স্ক্যানারেরScannerInfo-এ ফেরত আসা এন্ট্রিগুলির একটির সাথে মিলতে হবে।
রিটার্ন
-
<StartScanResponse>প্রমিস
একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।