說明
使用 chrome.documentScan API 探索及擷取連接的文件掃描器中的圖片。
文件掃描 API 的設計宗旨,是讓應用程式和擴充功能查看連接的文件掃描器上的紙本文件內容。
權限
documentScan可用性
概念與用途
這個 API 支援兩種掃描文件的方式。如果您的用途適用於任何掃描器,且不需要控管設定,請使用 scan() 方法。較複雜的應用情境需要結合多種方法,
但只有 Chrome 124 以上版本支援。
輕鬆掃描
如果是簡單的用途,也就是可搭配任何掃描器使用,且不需要控管設定,請呼叫 scan()。這個方法會採用 ScanOptions 物件,並傳回 Promise,該 Promise 會以 ScanResults 物件解析。這項選項的功能僅限於掃描次數,以及呼叫端接受的 MIME 類型。掃描結果會以網址形式傳回,以便在使用者介面的 <img> 標記中顯示。
複雜掃描
如本節所述,複雜掃描作業會分三個階段完成。這個大綱並未說明每個方法引數,或回應中傳回的每個屬性。這份指南僅提供掃描器程式碼的撰寫方式。
探索
呼叫
getScannerList()。可用的掃描器會以 Promise 形式傳回,並以GetScannerListResponse解決。- 回應物件包含
ScannerInfo物件的陣列。 - 如果掃描器支援多種通訊協定或連線方法,陣列可能會包含單一掃描器的多個項目。
- 回應物件包含
從傳回的陣列中選取掃描器,並儲存其
scannerId屬性的值。使用個別
ScannerInfo物件的屬性,區分同一掃描器的多個物件。來自相同掃描器的物件,其deviceUuid屬性值會相同。ScannerInfo也包含imageFormats屬性,其中含有支援的圖片類型陣列。
掃描器設定
呼叫
openScanner(),並傳入已儲存的掃描器 ID。 這會傳回 Promise,並以OpenScannerResponse解析。回應物件包含:scannerHandle屬性,您必須儲存。包含掃描器專屬屬性的選項屬性,您需要設定這項屬性。詳情請參閱「Retrieve scanner options」。
(選用) 如果需要使用者提供掃描器選項的值,請建構使用者介面。您需要上一個步驟提供的掃描器選項,並擷取掃描器提供的選項群組。詳情請參閱「建構使用者介面」。
使用程式輔助或使用者提供的值,建構
OptionSetting物件陣列。詳情請參閱「設定掃描器選項」。將
OptionSetting物件陣列傳遞至setOptions(),即可設定掃描器選項。這個方法會傳回 Promise,並以SetOptionsResponse解析。這個物件包含掃描器選項的更新版本,這些選項是在掃描器設定的步驟 1 中擷取。由於變更一個選項可能會改變另一個選項的限制,您可能需要重複這些步驟多次。
掃描
建構
StartScanOptions物件,並傳遞至startScan()。這會傳回 Promise,並以StartScanResponse解析。其job屬性是您用來讀取掃描資料或取消掃描的控制代碼。將工作控制代碼傳遞至
readScanData()。這個方法會傳回 Promise,並以ReadScanDataResponse物件解析。如果資料讀取成功,其result屬性會等於SUCCESS,且data屬性會包含ArrayBuffer,其中含有部分掃描內容。請注意,estimatedCompletion包含目前為止已傳送資料的預估百分比。重複上一個步驟,直到
result屬性等於EOF或發生錯誤為止。
掃描結束時,請呼叫 closeScanner(),並儲存步驟 3 中的掃描器控制代碼。這個方法會傳回 Promise,並以 CloseScannerResponse 解析。工作建立後,隨時呼叫 cancelScan() 都會結束掃描。
回應物件
所有方法都會傳回 Promise,並以某種回應物件解析。其中大多數都包含 result 屬性,其值為 OperationResult 的成員。除非 result 的值為特定值,否則回應物件的部分屬性不會包含值。這些關係會在每個回應物件的參照中說明。
舉例來說,只有在 OpenScannerResponse.result 等於 SUCCESS 時,OpenScannerResponse.scannerHandle 才會有值。
掃描器選項
掃描器選項會因裝置而異。因此,無法直接在 documentScan API 中反映掃描器選項。為解決這個問題,OpenScannerResponse (使用 openScanner() 擷取) 和 SetOptionsResponse (setOptions() 的回應物件) 包含 options 屬性,這個屬性是包含掃描器專屬選項的物件。每個選項都是鍵值對應,其中鍵是裝置專屬選項,值則是 ScannerOption 的例項。
結構通常如下所示:
{
"key1": { scannerOptionInstance }
"key2": { scannerOptionInstance }
}
舉例來說,假設掃描器會傳回名為「source」和「resolution」的選項。傳回的 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 屬性。使用這個方法更新使用者介面。然後視需要重複執行上述步驟,直到所有選項都設定完成為止。
設定掃描器選項
如要設定掃描器選項,請將 OptionSetting 物件陣列傳遞至 setOptions()。如需範例,請參閱下方的「掃描一頁 Letter 尺寸的紙張」一節。
範例
以 Blob 形式擷取頁面
這個範例說明如何從掃描器擷取頁面做為 Blob,並示範如何使用 startScan() 和 readScanData() (使用 OperationResult 的值)。
async function pageAsBlob(handle) {
let response = await chrome.documentScan.startScan(
handle, {format: "image/jpeg"});
if (response.result != chrome.documentScan.OperationResult.SUCCESS) {
return null;
}
const job = response.job;
let imgParts = [];
response = await chrome.documentScan.readScanData(job);
while (response.result == chrome.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 chrome.documentScan.readScanData(job);
}
if (response.result != chrome.documentScan.OperationResult.EOF) {
return null;
}
if (response.data && response.data.byteLength > 0) {
imgParts.push(response.data);
}
return new Blob(imgParts, { type: "image/jpeg" });
}
掃描一頁 Letter 尺寸的頁面
這個範例說明如何選取掃描器、設定掃描器選項,以及開啟掃描器。然後擷取單一頁面的內容,並關閉掃描器。這個程序示範如何使用 getScannerList()、openScanner()、setOptions() 和 closeScanner()。請注意,網頁內容是透過呼叫前一個範例中的 pageAsBlob() 函式擷取。
async function scan() {
let response = await chrome.documentScan.getScannerList({ secure: true });
let scanner = await chrome.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: chrome.documentScan.OptionType.STRING,
value: { value: source }
});
break;
}
}
options.push({
name: "tl-x",
type: chrome.documentScan.OptionType.FIXED,
value: 0.0
});
options.push({
name: "br-x",
type: chrome.documentScan.OptionType.FIXED,
value: 215.9 // 8.5" in mm
});
options.push({
name: "tl-y",
type: chrome.documentScan.OptionType.FIXED,
value: 0.0
});
options.push({
name: "br-y",
type: chrome.documentScan.OptionType.FIXED,
value: 279.4 // 11" in mm
});
response = await chrome.documentScan.setOptions(handle, options);
let imgBlob = await pageAsBlob(handle);
if (imgBlob != null) {
// Insert imgBlob into DOM, save to disk, etc
}
await chrome.documentScan.closeScanner(handle);
}
顯示設定
如其他地方所述,如要向使用者顯示掃描器的設定選項,除了呼叫 openScanner() 傳回的掃描器選項外,還需要呼叫 getOptionGroups()。這樣一來,使用者就能在製造商定義的群組中看到選項。這個範例說明如何執行這項操作。
async function showConfig() {
let response = await chrome.documentScan.getScannerList({ secure: true });
let scanner = await chrome.documentScan.openScanner(
response.scanners[0].scannerId);
let groups = await chrome.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
如何變更選項。
列舉
「NOT_CONFIGURABLE」
這個選項為唯讀。
「SOFTWARE_CONFIGURABLE」
這個選項可在軟體中設定。
「HARDWARE_CONFIGURABLE」
使用者可以切換或按下掃描器上的按鈕來設定這個選項。
ConnectionType
指出掃描器與電腦的連線方式。
列舉
「UNSPECIFIED」
「USB」
「NETWORK」
列舉
「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
屬性
-
local
布林值 選填
請只退回直接連接電腦的掃描器。
-
安全
布林值 選填
只傳回使用安全傳輸方式的掃描器,例如 USB 或 TLS。
GetOptionGroupsResponse
屬性
-
群組
OptionGroup[] 選用
如果
result為SUCCESS,則會依掃描器驅動程式提供的順序,列出選項群組。 -
取得選項群組的結果。如果這個值為
SUCCESS,系統會填入groups屬性。 -
scannerHandle
字串
與傳遞至
getOptionGroups的掃描器控制代碼相同。
GetScannerListResponse
屬性
-
列舉結果。請注意,即使這表示發生錯誤,系統仍可能會傳回部分結果。
-
掃描器
符合所提供
DeviceFilter的掃描器清單 (可能為空白)。
OpenScannerResponse
屬性
-
選項
object 選填
如果
result為SUCCESS,則提供鍵/值對應,其中鍵為裝置專屬選項,值為ScannerOption的例項。 -
開啟掃描器的結果。如果這個值為
SUCCESS,系統會填入scannerHandle和options屬性。 -
scannerHandle
字串 選填
如果
result是SUCCESS,則為掃描器的控制代碼,可用於後續作業。 -
scannerId
字串
傳遞至
openScanner()的掃描器 ID。
OperationResult
列舉,指出各項作業的結果。
列舉
「UNKNOWN」
發生不明或一般錯誤。
「SUCCESS」
作業成功。
「UNSUPPORTED」
這項操作不支援。
「CANCELLED」
作業已取消。
「DEVICE_BUSY」
裝置忙碌中。
「INVALID」
傳遞至方法的資料或引數無效。
「WRONG_TYPE」
提供的值與基礎選項的資料類型不符。
「EOF」
沒有更多資料。
「ADF_JAMMED」
文件送紙器發生卡紙。
「ADF_EMPTY」
文件送紙器為空。
「COVER_OPEN」
平板掃描器蓋子開啟。
「IO_ERROR」
與裝置通訊時發生錯誤。
「ACCESS_DENIED」
裝置需要驗證。
「NO_MEMORY」
Chromebook 記憶體不足,無法完成作業。
「UNREACHABLE」
無法連上裝置。
「MISSING」
裝置已中斷連線。
「INTERNAL_ERROR」
呼叫應用程式以外的地方發生錯誤。
OptionConstraint
屬性
-
list
string[] | number[] 選用
-
max
號碼 選填
-
分鐘
號碼 選填
-
quant
號碼 選填
OptionGroup
屬性
-
成員
string[]
驅動程式提供的選項名稱陣列。
-
title
字串
提供可列印的標題,例如「幾何選項」。
OptionSetting
屬性
-
名稱
字串
指出要設定的選項名稱。
-
類型
指出選項的資料類型。要求的資料類型必須與基礎選項的實際資料類型相符。
-
值
字串 | 數字 | 布林值 | 數字陣列 選用
指出要設定的值。如要為已啟用
autoSettable的選項要求自動設定,請將此欄位設為未設定。為value提供的資料類型必須與type相符。
OptionType
選項的資料類型。
列舉
「UNKNOWN」
選項的資料類型不明。value 屬性將取消設定。
「BOOL」value true 屬性將為「false」。
「INT」
帶正負號的 32 位元整數。value 屬性會是 long 或 long[],視選項是否採用多個值而定。
「FIXED」
範圍為 -32768 到 32767.9999 的雙精度浮點數,解析度為 1/65535。視選項是否採用多個值而定,value 屬性會是 double 或 double[]。無法精確表示的 Double 值會四捨五入至可用範圍和精確度。
「STRING」
任何位元組序列,但 NUL (「\0」) 除外。value 屬性會是 DOMString。
「BUTTON」
這類選項沒有值。不過,設定這類選項會在掃描器驅動程式中產生選項專屬的副作用。舉例來說,掃描器驅動程式可以使用按鈕類型的選項,提供選取預設值的方法,或是告知自動送紙器送出下一張紙。
「GROUP」
分組選項。不具現金價值。這項屬性是為了相容性而納入,但通常不會在 ScannerOption 值中傳回。使用 getOptionGroups() 擷取群組清單及其成員選項。
列舉
「UNITLESS」
值為無單位數字。例如門檻。
「PIXEL」
值為像素數,例如掃描尺寸。
「BIT」
值為位元數,例如色彩深度。
「MM」
值以毫米為單位,例如掃描尺寸。
「DPI」
值以每英吋點數為單位,例如解析度。
「PERCENT」
值為百分比,例如亮度。
「MICROSECOND」
值以微秒為單位,例如曝光時間。
ReadScanDataResponse
屬性
-
資料
ArrayBuffer 選填
如果
result為SUCCESS,則包含下一個掃描的圖片資料區塊。如果result為EOF,則包含掃描的影像資料最後區塊。 -
estimatedCompletion
號碼 選填
如果
result為SUCCESS,則為目前已傳送的掃描資料總量估計值,範圍為 0 到 100。 -
工作
字串
提供傳遞至
readScanData()的工作控制代碼。 -
讀取資料的結果。如果值為
SUCCESS,則data包含可供讀取的下一個 (可能為零長度) 圖像資料區塊。如果值為EOF,則data包含最後一組圖片資料。
ScannerInfo
屬性
-
connectionType
指出掃描器與電腦的連線方式。
-
deviceUuid
字串
與指向相同實體裝置的其他
ScannerInfo項目比對。 -
imageFormats
string[]
可要求傳回掃描結果的 MIME 類型陣列。
-
製造商
字串
掃描器製造商。
-
模型
字串
掃描器型號 (如有) 或一般說明。
-
名稱
字串
掃描器在 UI 中顯示的名稱,方便使用者辨識。
-
protocolType
字串
用於存取掃描器的通訊協定或驅動程式說明,例如 Mopria、WSD 或 epsonds。如果裝置支援多種通訊協定,這項功能主要可讓使用者選擇通訊協定。
-
scannerId
字串
特定掃描器的 ID。
-
安全
布林值
如果為 true,被動監聽器 (例如 TLS 或 USB) 就無法攔截掃描器連線的傳輸內容。
ScannerOption
屬性
-
可設定性
指出是否可以變更選項,以及變更方式。
-
限制
定義目前掃描器選項的
OptionConstraint。 -
說明
字串
選項的詳細說明。
-
isActive
布林值
表示選項處於有效狀態,可以設定或擷取。如果設為 False,系統就不會設定
value屬性。 -
isAdvanced
布林值
表示 UI 預設不應顯示這個選項。
-
isAutoSettable
布林值
可由掃描器驅動程式自動設定。
-
isDetectable
布林值
表示可透過軟體偵測這個選項。
-
isEmulated
布林值
如果為 true,則由掃描器驅動程式模擬。
-
名稱
字串
選項名稱使用小寫 ASCII 字母、數字和破折號。不可使用變音符號。
-
title
字串
可列印的單行標題。
-
類型
value屬性中包含的資料類型,設定這個選項時需要用到。 -
單位
這個選項的測量單位。
-
值
字串 | 數字 | 布林值 | 數字陣列 選用
選項的目前值 (如適用)。請注意,這項屬性的資料類型必須與
type中指定的資料類型相符。
ScanOptions
屬性
-
maxImages
號碼 選填
允許掃描的圖片數量。預設值為 1。
-
mimeTypes
字串陣列 選用
呼叫端接受的 MIME 類型。
ScanResults
屬性
-
dataUrls
string[]
資料圖片網址陣列,格式可做為圖片標記的「src」值傳遞。
-
mimeType
字串
dataUrls的 MIME 類型。
SetOptionResult
屬性
-
名稱
字串
指出已設定的選項名稱。
-
指出設定選項的結果。
SetOptionsResponse
屬性
-
選項
object 選填
更新選項名稱與
ScannerOption值之間的對應關係,其中包含嘗試設定所有提供的選項後的新設定。這與OpenScannerResponse中的options屬性結構相同。即使部分選項未成功設定,系統仍會設定這項屬性,但如果擷取更新後的設定失敗 (例如掃描器在掃描期間中斷連線),系統就會取消設定這項屬性。
-
結果
結果陣列,每個傳入的
OptionSetting各有一個結果。 -
scannerHandle
字串
提供傳遞至
setOptions()的掃描器控制代碼。
StartScanOptions
屬性
-
format
字串
指定要以哪種 MIME 類型傳回掃描資料。
-
maxReadSize
號碼 選填
如果指定非零值,則單一
readScanData回應中傳回的掃描位元組數上限會設為該值。允許的最小值為 32768 (32 KB)。如果未指定這項屬性,傳回的區塊大小可能與整個掃描圖片一樣大。
StartScanResponse
屬性
-
工作
字串 選填
如果
result為SUCCESS,則提供可用於讀取掃描資料或取消工作的控制代碼。 -
開始掃描的結果。如果這個值為
SUCCESS,系統會填入job屬性。 -
scannerHandle
字串
提供傳遞至
startScan()的掃描器控制代碼。
方法
cancelScan()
chrome.documentScan.cancelScan(
job: string,
): Promise<CancelScanResponse>
取消已啟動的掃描作業,並傳回 Promise,該 Promise 會以 CancelScanResponse 物件解析。如果使用回呼,則會將物件傳遞至回呼。
參數
-
工作
字串
先前從
startScan呼叫傳回的有效掃描作業控制代碼。
傳回
-
Promise<CancelScanResponse>
closeScanner()
chrome.documentScan.closeScanner(
scannerHandle: string,
): Promise<CloseScannerResponse>
使用傳入的控制代碼關閉掃描器,並傳回 Promise,該 Promise 會以 CloseScannerResponse 物件解析。如果使用回呼,則會將物件傳遞至回呼。即使回應未成功,提供的控制代碼也會失效,不應再用於後續作業。
參數
-
scannerHandle
字串
指定先前從
openScanner呼叫傳回的開啟掃描器控制代碼。
傳回
-
Promise<CloseScannerResponse>
getOptionGroups()
chrome.documentScan.getOptionGroups(
scannerHandle: string,
): Promise<GetOptionGroupsResponse>
從先前由 openScanner 開啟的掃描器取得群組名稱和成員選項。這個方法會傳回 Promise,並以 GetOptionGroupsResponse 物件解析。如果回呼傳遞至這個函式,系統會改為將傳回的資料傳遞至回呼。
參數
-
scannerHandle
字串
從呼叫
openScanner傳回的開啟掃描器控制代碼。
傳回
-
Promise<GetOptionGroupsResponse>
getScannerList()
chrome.documentScan.getScannerList(
filter: DeviceFilter,
): Promise<GetScannerListResponse>
取得可用掃描器的清單,並傳回以 GetScannerListResponse 物件解析的 Promise。如果回呼傳遞至這個函式,系統會改為將傳回的資料傳遞至回呼。
參數
-
篩選
DeviceFilter:指出應傳回哪些類型的掃描器。
傳回
-
Promise<GetScannerListResponse>
openScanner()
chrome.documentScan.openScanner(
scannerId: string,
): Promise<OpenScannerResponse>
開啟專屬存取權的掃描器,並傳回以 OpenScannerResponse 物件解析的 Promise。如果回呼傳遞至這個函式,系統會改為將傳回的資料傳遞至回呼。
參數
-
scannerId
字串
要開啟的掃描器 ID。這個值是先前呼叫
getScannerList時傳回的值。
傳回
-
Promise<OpenScannerResponse>
readScanData()
chrome.documentScan.readScanData(
job: string,
): Promise<ReadScanDataResponse>
從有效的工作控制代碼讀取下一個可用的圖片資料區塊,並傳回以 ReadScanDataResponse 物件解析的 Promise。如果使用回呼,則會將物件傳遞至回呼。
**注意:**回應結果可以是 SUCCESS,且 data 成員長度為零。這表示掃描器仍在運作,但尚未準備好額外資料。通話者應稍待片刻,然後再試一次。
掃描工作完成後,回應的結果值會是 EOF。這項回應可能包含最終的非零 data 成員。
參數
-
工作
字串
先前從
startScan傳回的有效工作控制代碼。
傳回
-
Promise<ReadScanDataResponse>
scan()
chrome.documentScan.scan(
options: ScanOptions,
): Promise<ScanResults>
執行文件掃描,並傳回以 ScanResults 物件解析的 Promise。如果回呼傳遞至這個函式,傳回的資料會改為傳遞至回呼。
參數
-
選項
包含掃描參數的物件。
傳回
-
Promise<ScanResults>
Chrome 96 以上版本
setOptions()
chrome.documentScan.setOptions(
scannerHandle: string,
options: OptionSetting[],
): Promise<SetOptionsResponse>
在指定的掃描器上設定選項,並傳回 Promise,該 Promise 會使用 SetOptionsResponse 物件解析,其中包含嘗試依傳入的 OptionSetting 物件順序設定每個值的結果。如果使用回呼,則會將物件傳遞至回呼。
參數
-
scannerHandle
字串
掃描器的控制代碼,用於設定選項。這個值應是先前呼叫
openScanner時傳回的值。 -
選項
要套用至掃描器的
OptionSetting物件清單。
傳回
-
Promise<SetOptionsResponse>
startScan()
chrome.documentScan.startScan(
scannerHandle: string,
options: StartScanOptions,
): Promise<StartScanResponse>
在指定掃描器上啟動掃描作業,並傳回以 StartScanResponse 解析的 Promise。如果使用回呼,則會將物件傳遞至回呼。如果呼叫成功,回應會包含作業控制代碼,可用於後續呼叫,以讀取掃描資料或取消掃描。
參數
-
scannerHandle
字串
開啟掃描器的控點。這個值應是先前呼叫
openScanner時傳回的值。 -
StartScanOptions物件,指出掃描要使用的選項。StartScanOptions.format屬性必須與掃描器ScannerInfo中傳回的其中一個項目相符。
傳回
-
Promise<StartScanResponse>