chrome.documentScan

說明

使用 chrome.documentScan API 即可從附加的文件掃描器探索及擷取圖片。

Document Scan API 經過精心設計,可讓應用程式和擴充功能透過附加的文件掃描器查看紙本文件的內容。

權限

documentScan

適用國家/地區

Chrome 44 以上版本 僅限 ChromeOS
方便之後新增的 API 成員查看。

概念和用法

這個 API 支援兩種掃描文件的方法。如果您的用途可與任何掃描器搭配使用,且不需要設定控制權,請使用 scan() 方法。較複雜的用途需要組合方法,而只有 Chrome 124 以上版本才支援這項功能。

簡易掃描

如果是簡單的用途,也就是可以使用任何掃描器,且不需要控制的設定,請呼叫 scan()。這個方法會使用 ScanOptions 物件,並傳回透過 ScanResults 物件解析的 Promise。這個選項的功能僅限於掃描次數,以及呼叫端接受的 MIME 類型。掃描會傳回網址,以顯示在使用者介面的 <img> 標記中。

複雜掃描

如本節所述,複雜掃描作業會在三個階段完成。本大綱並未描述每個方法引數或回應中傳回的每個屬性。內容只旨在提供編寫掃描器程式碼的一般指南。

探索廣告活動

  1. 呼叫 getScannerList()。可用的掃描器會透過 GetScannerListResponse 解析的 Promise 中傳回。

    • 回應物件包含 ScannerInfo 物件的陣列。
    • 如果掃描器支援多種通訊協定或連線方法,則陣列可能包含單一掃描器的多個項目。
  2. 從傳回的陣列中選取掃描器,然後儲存其 scannerId 屬性的值。

    使用個別 ScannerInfo 物件的屬性,以便區分同一個掃描器的多個物件。相同掃描器中的物件會具有相同 deviceUuid 屬性值。ScannerInfo 也包含 imageFormats 屬性,其中包含支援圖片類型的陣列。

掃描器設定

  1. 呼叫 openScanner(),然後傳入已儲存的掃描器 ID。 此方法會傳回 Promise,且會使用 OpenScannerResponse 解析。 回應物件中包含:

    • 您需要儲存 scannerHandle 屬性。

    • 選項屬性包含需要設定的掃描器特定屬性。如需詳細資訊,請參閱「擷取掃描器選項」。

  2. (選用) 如果您需要使用者提供掃描器選項的值,請建構使用者介面。您需要前一個步驟提供的掃描器選項,而您必須擷取掃描器提供的選項群組。詳情請參閱「建構使用者介面」。

  3. 使用程式輔助或使用者提供的值,建構 OptionSetting 物件的陣列。詳情請參閱「設定掃描器選項」一節。

  4. OptionSetting 物件的陣列傳遞至 setOptions(),以設定掃描器的選項。而會傳回可透過 SetOptionsResponse 解析的 Promise。這個物件包含掃描器設定步驟 1 中所擷取的新版掃描工具選項。

    由於變更一個選項可能會變更另一個選項的限制,因此您可能需要重複執行這些步驟數次。

掃描中

  1. 建構 StartScanOptions 物件並傳遞至 startScan()。此方法會傳回 Promise,且會使用 StartScanResponse 解析。其 job 屬性是控制代碼,可讓您用來讀取掃描資料或取消掃描作業。

  2. 將工作處理常式傳遞至 readScanData()。此方法會傳回 Promise,且透過 ReadScanDataResponse 物件解析。如果資料成功讀取,其 result 屬性等於 SUCCESS,其 data 屬性會包含部分掃描作業的 ArrayBuffer。請注意,estimatedCompletion 包含目前已提交的總資料預估百分比。

  3. 重複上述步驟,直到 result 屬性等於 EOF 或錯誤。

掃描結束時,使用步驟 3 中儲存的掃描器處理常式呼叫 closeScanner()。此函式會傳回 Promise,且該 Promise 會透過 CloseScannerResponse 解析。建立工作後,只要呼叫 cancelScan() 就會結束掃描。

回應物件

所有方法都會傳回 Promise,這個 Promise 會以某種類型的回應物件進行解析。這些函式大多包含 result 屬性,且該屬性的值是 OperationResult 的成員。除非 result 的值有特定值,否則回應物件的某些屬性不會包含值。這些關係會在每個回應物件的參考資料中說明。

例如,OpenScannerResponse.scannerHandle 只有在 OpenScannerResponse.result 等於 SUCCESS 時才會有值。

掃描器選項

掃描器選項因裝置而異。因此,您無法直接在 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() 以擷取這些群組。這會傳回可透過 GetOptionGroupsResponse 物件解析的 Promise。其 groups 屬性包含掃描器專屬的群組陣列。請使用這些群組中的資訊,整理 OpenScannerResponse 中顯示的選項。

{
  scannerHandle: "123456",
  result: SUCCESS,
  groups: [
    {
      title: "Standard",
      members: [ "resolution", "mode", "source" ]
    }
  ]
}

如掃描器設定中所述,變更一個選項可能會改變其他選項的限制。因此,setOptionsResponse (setOptions() 的回應物件) 包含另一個 options 屬性。請用此表單更新使用者介面。然後視需要重複操作,直到設定所有選項為止。

設定掃描器選項

OptionSetting 物件陣列傳遞至 setOptions(),以設定掃描器選項。如需範例,請參閱下方的「掃描一個字母大小的網頁」一節。

示例

擷取頁面做為 blob

這個範例說明如何從掃描器以 blob 形式擷取頁面,並示範使用 OperationResult 的值使用 startScan()readScanData()

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" });
}

掃描一個字母大小的頁面

這個範例說明如何選取掃描器、設定選項,以及開啟掃描器。然後擷取單一頁面的內容並關閉掃描器。這項程序會使用 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.SUCCESSOperationResult.CANCELLED,表示已取消掃描,且可開始新的掃描作業。如果結果是 OperationResult.DEVICE_BUSY,表示掃描器仍在處理您要求的取消作業;呼叫者應等待一小段時間,然後再次提出要求。其他結果值代表存在永久錯誤,不應重試。

CloseScannerResponse

待處理

屬性

  • 關閉掃描器的結果。即使這個值不是 SUCCESS,帳號代碼也會失效,不應用於任何其他作業。

  • scannerHandle

    字串

    與傳遞至 closeScanner 相同的掃描器控制代碼。

Configurability

待處理

如何變更選項。

列舉

"NOT_CONFIGURABLE"
這個選項為唯讀狀態。

"SOFTWARE_CONFIGURABLE"
你可以在軟體中設定這個選項。

"HARDWARE_CONFIGURABLE"
選項可由使用者設定,或按下掃描器上的按鈕。

ConnectionType

待處理

指出掃描器與電腦的連線方式。

列舉

ConstraintType

待處理

OptionConstraint 表示的限制資料類型。

列舉

"INT_RANGE"
OptionType.INT 值範圍的限制。OptionConstraintminmaxquant 屬性將為 longlist 屬性則會取消。

"FIXED_RANGE"
OptionType.FIXED 值範圍的限制。OptionConstraintminmaxquant 屬性將為 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[] 選用

    如果 resultSUCCESS,請依照掃描器驅動程式提供的順序提供選項群組清單。

  • 取得選項群組的結果。如果這個值為 SUCCESS,系統就會填入 groups 屬性。

  • scannerHandle

    字串

    與傳遞至 getOptionGroups 相同的掃描器控制代碼。

GetScannerListResponse

待處理

屬性

  • 列舉結果。請注意,即使傳回錯誤,還是有可能傳回部分結果。

  • 掃描器

    符合所提供 DeviceFilter 的掃描器清單,可能為空白。

OpenScannerResponse

待處理

屬性

  • 選項

    物件選用

    如果 resultSUCCESS,請提供鍵/值對應,其中鍵是裝置專用選項,值則是 ScannerOption 執行個體。

  • 開啟掃描器的結果。如果這個值為 SUCCESS,系統就會填入 scannerHandleoptions 屬性。

  • scannerHandle

    字串 選用

    如果 resultSUCCESS,則掃描器可用於進一步作業的掃描器控制代碼。

  • scannerId

    字串

    傳送至 openScanner() 的掃描器 ID。

OperationResult

待處理

指出每個作業結果的列舉項目。

列舉

「UNKNOWN」
發生不明或一般錯誤。

"成功"
作業成功。

"UNSUPPORTED"
不支援這項作業。

"CANCELLED"
作業已取消。

「DEVICE_BUSY」
裝置忙碌中。

"無效"
傳遞到方法的資料或引數無效。

"WRONG_TYPE"
提供的值是基礎選項的資料類型錯誤。

"EOF"
沒有其他資料。

"ADF_JAMMED"
文件饋送器無法正常運作。

"ADF_EMPTY"
文件饋送器沒有內容。

"COVER_OPEN"
扁平的外蓋已開啟。

"IO_ERROR"
與裝置通訊時發生錯誤。

"ACCESS_DENIED"
裝置需要驗證。

「NO_MEMORY」
Chromebook 的可用記憶體不足,因此無法完成這項作業。

「無法連線」
無法連上裝置。

「MISSING」
裝置已中斷連線。

"INTERNAL_ERROR"
發出呼叫的應用程式以外的位置發生錯誤。

OptionConstraint

待處理

屬性

  • list

    string[]|number[] optional

  • 最高

    數字 選填

  • 分鐘

    數字 選填

  • 量化

    數字 選填

OptionGroup

待處理

屬性

  • 成員

    string[]

    一系列選項名稱 (按驅動程式提供的順序)。

  • title

    字串

    提供可列印的標題,例如「幾何圖形選項」。

OptionSetting

待處理

屬性

  • 名稱

    字串

    用於表示要設定的選項名稱。

  • 類型

    用於表示選項的資料類型。要求的資料類型必須與基礎選項的實際資料類型相符。

  • string|number|boolean|number[] optional

    指出要設定的值。如果不設定,系統會針對已啟用 autoSettable 的選項要求自動設定。您為 value 提供的資料類型必須與 type 相符。

OptionType

待處理

選項的資料類型。

列舉

"UNKNOWN"
不明的選項資料類型。系統會設定 value 屬性。

"BOOL"
value 屬性會是 truefalse 其中之一。

"INT"
帶正負號的 32 位元整數。value 屬性將是長或長 [],視該選項是否接受多個值而定。

"FIXED"
範圍 -32768-32767.9999 的兩倍,解析度為 1/65535。value 屬性為雙精度浮點數或雙精度浮點值 [],視選項是否接受多個值而定。無法確切表示的雙精度值會四捨五入至可用的範圍和精確度。

"STRING"
除 NUL (「\0」除外) 的任何位元組序列。value 屬性將是 DOMString。

"BUTTON"
這種類型的選項沒有任何值。反之,設定這類選項後,掃描器驅動程式中會產生特定選項的副作用。舉例來說,掃描器驅動程式可使用按鈕類型選項,以此方式選取預設值,或是指示自動文件饋送器前往下一張投影片。

"GROUP"
分組選項。沒有任何值。這是為了確保相容性,但通常不會在 ScannerOption 值中傳回。使用 getOptionGroups() 擷取包含成員選項的群組清單。

OptionUnit

待處理

指出 ScannerOption.unit 的資料類型。

列舉

"UNITLESS"
這個值是無單位數字。例如閾值。

"PIXEL"
這個值是像素數,例如掃描尺寸。

"BIT"
這個值是位元數,例如色彩深度。

"MM"
值的測量單位為公釐,例如掃描尺寸。

"DPI"
這個值是以每英寸像素數為單位,例如解析度。

"PERCENT"
這個值是百分比,例如亮度。

"MICROsec"
這個值的測量單位為微秒,例如曝光時間。

ReadScanDataResponse

待處理

屬性

  • 資料或曾存取這類資料的人員

    ArrayBuffer 選用

    如果 resultSUCCESS,則包含掃描圖片資料的「下一個」區塊。如果 resultEOF,則包含最後區塊掃描的圖片資料區塊。

  • estimatedCompletion

    數字 選填

    如果 resultSUCCESS,表示目前已提交的總掃描資料預估值,範圍介於 0 到 100 之間。

  • 工作

    字串

    提供傳送至 readScanData() 的工作控制代碼。

  • 讀取資料的結果。如果值為 SUCCESS,則 data 會包含「next」 (長度可能是零) 的圖片資料區塊,可供讀取。如果值為 EOF,則 data 會包含「最後一個」圖片資料區塊。

ScannerInfo

待處理

屬性

  • connectionType

    指出掃描器與電腦的連線方式。

  • deviceUuid

    字串

    用於比對指向同一實體裝置的其他 ScannerInfo 項目。

  • imageFormats

    string[]

    您可以針對傳回的掃描作業要求要求的 MIME 類型陣列。

  • 製造商

    字串

    掃描器製造商。

  • model

    字串

    掃描器模型 (如有),或是一般說明。

  • 名稱

    字串

    要在 UI 中顯示掃描器的人類可讀名稱。

  • protocolType

    字串

    用於存取掃描器的通訊協定或驅動程式說明,以人類可讀的方式說明,例如 Mopria、WSD 或 Epsonds。如果裝置支援多種通訊協定,這種做法主要可讓使用者選擇要使用何種通訊協定。

  • scannerId

    字串

    特定掃描器的 ID。

  • 安全

    boolean

    如果為 true,掃描器連線的傳輸作業無法由被動事件監聽器 (例如 TLS 或 USB) 攔截。

ScannerOption

待處理

屬性

  • 可設定性

    指出能否變更選項以及變更方式。

  • 限制

    針對目前的掃描器選項定義 OptionConstraint

  • description

    字串

    選項的詳細說明。

  • isActive

    boolean

    表示選項已啟用且可以設定或擷取。如果設為 false,系統就不會設定 value 屬性。

  • isAdvanced

    boolean

    表示 UI 預設不應顯示此選項。

  • isAutoSettable

    boolean

    可由掃描器驅動程式自動設定。

  • isDetectable

    boolean

    表示可以從軟體偵測到此選項。

  • isEmulated

    boolean

    如果為 true,將由掃描器驅動程式模擬。

  • 名稱

    字串

    選項名稱,由小寫 ASCII 字母、數字和破折號組成。不得輸入變音符號。

  • title

    字串

    可列印的單行標題。

  • 類型

    value 屬性中包含的資料類型,這是設定這個選項的必要項目。

  • 單位

    這個選項的測量單位。

  • string|number|boolean|number[] optional

    選項目前的值 (如有)。請注意,此屬性的資料類型必須與 type 中指定的資料類型相符。

ScanOptions

屬性

  • maxImages

    數字 選填

    允許的掃描圖片數量。預設值為 1。

  • mimeTypes

    string[] 選填

    呼叫端接受的 MIME 類型。

ScanResults

屬性

  • dataUrls

    string[]

    資料圖片網址陣列,格式為「src」值傳送至圖片代碼。

  • mimeType

    字串

    dataUrls 的 MIME 類型。

SetOptionResult

待處理

屬性

  • 名稱

    字串

    表示已設定的選項名稱。

  • 指出設定選項的結果。

SetOptionsResponse

待處理

屬性

  • 選項

    物件選用

    嘗試設定所有提供的選項後,將鍵/值對應從選項名稱對應至 ScannerOption 值 (其中包含新設定)。這與 OpenScannerResponse 中的 options 屬性有相同的結構。

    即使部分選項未設定成功,系統仍會設定這個屬性;但如果擷取更新的設定失敗 (例如在掃描程序進行期間中斷連線),系統就會設定這個屬性。

  • 結果

    結果陣列,每傳入的 OptionSetting 都各一個。

  • scannerHandle

    字串

    提供傳送至 setOptions() 的掃描器控點。

StartScanOptions

待處理

屬性

  • format

    字串

    指定要在其中傳回掃描資料的 MIME 類型。

  • maxReadSize

    數字 選填

    如果指定非零值,則單一 readScanData 回應傳回的位元組上限會限制於該值。允許的最小值為 32768 (32 KB)。如果未指定這個屬性,傳回的區塊大小可能會與整張掃描圖片一樣大。

StartScanResponse

待處理

屬性

  • 工作

    字串 選用

    如果 resultSUCCESS,請提供可用於讀取掃描資料或取消工作的控制代碼。

  • 啟動掃描的結果。如果這個值為 SUCCESS,系統就會填入 job 屬性。

  • scannerHandle

    字串

    提供已傳遞至 startScan() 的相同掃描器控制代碼。

方法

cancelScan()

Promise 待處理
chrome.documentScan.cancelScan(
  job: string,
  callback?: function,
)

取消已開始的掃描,並傳回透過 CancelScanResponse 物件解析的 Promise。如果使用回呼,物件會改為傳遞給它。

參數

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

closeScanner()

Promise 待處理
chrome.documentScan.closeScanner(
  scannerHandle: string,
  callback?: function,
)

使用傳入的控制代碼關閉掃描器,並傳回可透過 CloseScannerResponse 物件解析的 Promise。如果使用回呼,物件會改為傳遞給它。即使回應未成功,提供的控制代碼也會失效,不應用於後續作業。

參數

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

getOptionGroups()

Promise 待處理
chrome.documentScan.getOptionGroups(
  scannerHandle: string,
  callback?: function,
)

openScanner 先前開啟的掃描器取得群組名稱和成員選項。這個方法會傳回 Promise,且該 Promise 透過 GetOptionGroupsResponse 物件解析。如果將回呼傳送至此函式,則傳回的資料會改為傳遞給這個函式。

參數

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

getScannerList()

Promise 待處理
chrome.documentScan.getScannerList(
  filter: DeviceFilter,
  callback?: function,
)

取得可用的掃描器清單,並傳回可透過 GetScannerListResponse 物件解析的 Promise。如果將回呼傳送至此函式,則傳回的資料會改為傳遞給這個函式。

參數

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

openScanner()

Promise 待處理
chrome.documentScan.openScanner(
  scannerId: string,
  callback?: function,
)

開啟掃描器取得專屬存取權,並傳回透過 OpenScannerResponse 物件解析的 Promise。如果將回呼傳送至此函式,則傳回的資料會改為傳遞給這個函式。

參數

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

readScanData()

Promise 待處理
chrome.documentScan.readScanData(
  job: string,
  callback?: function,
)

從進行中的工作控制代碼讀取下一個可用的圖片資料區塊,並傳回透過 ReadScanDataResponse 物件解析的 Promise。如果使用回呼,物件會改為傳遞給它。

**注意:**如果回應結果為 SUCCESS 且長度為零的 data 成員,這個類型就會有效。這代表掃描器仍在運作,但目前還無法取得其他資料。來電者應等待一小段時間,然後再試一次。

掃描工作完成後,回應的值會是 EOF。這項回覆可能包含非零的 data 最終成員。

參數

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

scan()

Promise
chrome.documentScan.scan(
  options: ScanOptions,
  callback?: function,
)

執行文件掃描並傳回可透過 ScanResults 物件解析的 Promise。如果將回呼傳送至此函式,則傳回的資料會改為傳遞給這個函式。

參數

傳回

  • Promise<ScanResults>

    Chrome 96 以上版本

    Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

setOptions()

Promise 待處理
chrome.documentScan.setOptions(
  scannerHandle: string,
  options: OptionSetting[],
  callback?: function,
)

設定指定掃描器上的選項,並傳回可透過 SetOptionsResponse 物件解析的 Promise,其中包含按照傳入的 OptionSetting 物件順序設定每個值的結果。如果使用回呼,物件會改為傳遞給它。

參數

  • scannerHandle

    字串

    用來設定選項的掃描器控點。這必須是先前呼叫 openScanner 時傳回的值。

  • 選項

    要套用至掃描器的 OptionSetting 物件清單。

  • 回呼

    函式選用

    callback 參數如下所示:

    (response: SetOptionsResponse)=>void

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。

startScan()

Promise 待處理
chrome.documentScan.startScan(
  scannerHandle: string,
  options: StartScanOptions,
  callback?: function,
)

在指定掃描器上開始掃描,並傳回可透過 StartScanResponse 解析的 Promise。如果使用回呼,物件會改為傳遞給它。如果呼叫成功,回應會包含工作控制代碼,可用於後續呼叫來讀取掃描資料或取消掃描作業。

參數

  • scannerHandle

    字串

    開啟掃描器的控點。這必須是先前呼叫 openScanner 時傳回的值。

  • StartScanOptions 物件,指出掃描作業要使用的選項。StartScanOptions.format 屬性必須與掃描器 ScannerInfo 中傳回的其中一個項目相符。

  • 回呼

    函式選用

    callback 參數如下所示:

    (response: StartScanResponse)=>void

傳回

  • Manifest V3 以上版本支援 Promise,但是為了提供回溯相容性而提供的回呼。您無法在同一個函式呼叫中同時使用這兩者。承諾會用傳遞至回呼的同類型解析。