chrome.documentScan

Mô tả

Sử dụng API chrome.documentScan để khám phá và truy xuất hình ảnh qua trình quét tài liệu đính kèm.

API Quét tài liệu được thiết kế để cho phép các ứng dụng và tiện ích xem nội dung của tài liệu giấy trên máy quét tài liệu đính kèm.

Quyền

documentScan

Phạm vi cung cấp

Chrome 44 trở lên Chỉ ChromeOS
Tình trạng rảnh/bận của các thành viên API được thêm vào sau này sẽ hiển thị cùng với các thành viên đó.

Khái niệm và cách sử dụng

API này hỗ trợ hai phương tiện quét tài liệu. Nếu trường hợp sử dụng của bạn có thể khắc phục được với bất kỳ trình quét nào và không yêu cầu kiểm soát cấu hình, hãy sử dụng scan(). Các trường hợp sử dụng phức tạp hơn đòi hỏi phải kết hợp nhiều phương pháp, (chỉ được hỗ trợ trong Chrome 124 trở lên).

Quét đơn giản

Đối với các trường hợp sử dụng đơn giản, nghĩa là những ứng dụng có thể hoạt động với mọi trình quét và không yêu cầu kiểm soát cấu hình, hãy gọi scan(). Phương thức này lấy một đối tượng ScanOptions và trả về một Lời hứa phân giải bằng ScanResults . Các khả năng của lựa chọn này bị giới hạn ở số lần quét và loại MIME mà phương thức gọi sẽ chấp nhận. Bản quét được trả về dưới dạng URL để hiển thị trong thẻ <img> cho giao diện người dùng.

Quét phức tạp

Quy trình quét phức tạp được thực hiện qua ba giai đoạn như được mô tả trong phần này. Phần phác thảo này không mô tả mọi đối số phương thức hoặc mọi thuộc tính được trả về trong một câu trả lời. Tài liệu này chỉ nhằm cung cấp cho bạn một hướng dẫn chung về cách viết máy quét .

Chiến dịch Khám phá

  1. Gọi getScannerList(). Sau đây là các trình quét có thể sử dụng được trả về trong một Lời hứa giải quyết bằng một GetScannerListResponse.

    • Đối tượng phản hồi chứa một mảng ScannerInfo .
    • Mảng có thể chứa nhiều mục nhập cho một trình quét nếu trình quét đó hỗ trợ nhiều giao thức hoặc phương thức kết nối.
  2. Chọn một trình quét từ mảng được trả về và lưu giá trị của Thuộc tính scannerId.

    Sử dụng các thuộc tính của từng đối tượng ScannerInfo để phân biệt nhiều đối tượng cho cùng một trình quét. Đối tượng từ cùng một trình quét sẽ có cùng giá trị cho thuộc tính deviceUuid. ScannerInfo cũng chứa thuộc tính imageFormats chứa một mảng loại hình ảnh được hỗ trợ.

Cấu hình máy quét

  1. Gọi lệnh openScanner(), truyền mã trình quét đã lưu vào. Phương thức này trả về một Lời hứa (Promise) phân giải bằng OpenScannerResponse. Đối tượng phản hồi chứa:

    • Bạn cần lưu một thuộc tính scannerHandle.

    • Thuộc tính tuỳ chọn chứa các thuộc tính dành riêng cho máy quét mà bạn sẽ cần thiết lập. Xem các tuỳ chọn Truy xuất máy quét để biết thêm thông tin.

  2. (Không bắt buộc) Nếu bạn cần người dùng cung cấp giá trị cho các tuỳ chọn của trình quét, xây dựng giao diện người dùng. Bạn sẽ cần các tuỳ chọn máy quét được cung cấp bởi ở bước trước đó, bạn sẽ cần truy xuất nhóm tuỳ chọn do . Xem bài viết Xây dựng giao diện người dùng để biết thêm thông tin.

  3. Tạo một mảng gồm các đối tượng OptionSetting bằng cách sử dụng có lập trình hoặc do người dùng cung cấp. Xem mục Đặt tuỳ chọn cho trình quét để biết thêm thông tin của bạn.

  4. Truyền mảng đối tượng OptionSetting vào setOptions() để đặt tuỳ chọn cho trình quét. Nó trả về Lời hứa giải quyết bằng SetOptionsResponse. Đối tượng này chứa một phiên bản cập nhật của các tuỳ chọn trình quét được truy xuất trong bước 1 của trình quét .

    Từ khi bạn thay đổi một tài khoản có thể thay đổi các hạn chế đối với một tuỳ chọn khác, bạn có thể cần phải lặp lại những tuỳ chọn này bước nhiều lần.

Đang quét

  1. Tạo một đối tượng StartScanOptions và truyền đối tượng đó vào startScan(). Phương thức này trả về một Lời hứa giúp giải quyết vấn đề bằng StartScanResponse. Thuộc tính job của lớp này là ô điều khiển mà bạn sẽ sử dụng để đọc dữ liệu quét hoặc huỷ quá trình quét.

  2. Truyền tên người dùng cho công việc cho readScanData(). Hàm này trả về một giá trị Lời hứa sẽ giải quyết bằng Đối tượng ReadScanDataResponse. Nếu dữ liệu được đọc thành công, thuộc tính result của thuộc tính đó bằng SUCCESS và thuộc tính data của nó chứa một ArrayBuffer bằng một phần của quá trình quét. Xin lưu ý rằng estimatedCompletion chứa số liệu ước tính tỷ lệ phần trăm tổng dữ liệu đã phân phối đến thời điểm này.

  3. Lặp lại bước trước đó cho đến khi thuộc tính result bằng EOF hoặc xảy ra lỗi.

Khi đến cuối quá trình quét, hãy gọi closeScanner() với tên người dùng của trình quét đã lưu trong bước 3. Hàm này trả về một Lời hứa thực hiện bằng một CloseScannerResponse. Gọi điện cancelScan() bất cứ lúc nào sau khi công việc được tạo sẽ kết thúc quét.

Đối tượng phản hồi

Tất cả phương thức đều trả về một Lời hứa (Promise) phân giải bằng một đối tượng phản hồi thuộc loại nào đó. Hầu hết các thuộc tính này chứa thuộc tính result có giá trị là thành phần của OperationResult. Một số thuộc tính của đối tượng phản hồi sẽ không chứa giá trị trừ phi giá trị của result có một giá trị cụ thể. Các các mối quan hệ được mô tả trong tham chiếu cho từng đối tượng phản hồi.

Ví dụ: OpenScannerResponse.scannerHandle sẽ chỉ có giá trị khi OpenScannerResponse.result bằng SUCCESS.

Tùy chọn máy quét

Các lựa chọn của máy quét có sự khác biệt đáng kể tuỳ theo thiết bị. Do đó, không thể trực tiếp phản ánh các tuỳ chọn trình quét trong API DocumentScan. Để di chuyển này, OpenScannerResponse (được truy xuất bằng cách sử dụng openScanner()) và SetOptionsResponse (đối tượng phản hồi cho setOptions()) chứa một thuộc tính options là một đối tượng chứa các tuỳ chọn dành riêng cho máy quét. Mỗi lựa chọn là một liên kết khoá-giá trị trong đó khoá là tuỳ chọn dành riêng cho thiết bị và giá trị là một bản sao của ScannerOption.

Cấu trúc thường có dạng như sau:

{
  "key1": { scannerOptionInstance }
  "key2": { scannerOptionInstance }
}

Ví dụ: hãy tưởng tượng một trình quét trả về các tuỳ chọn có tên là "nguồn" và "độ phân giải". Cấu trúc của đối tượng options được trả về sẽ có dạng như sau như ví dụ sau. Để đơn giản hoá, chỉ một phần ScannerOption các câu trả lời được hiển thị.

{
  "source": {
    "name": "source",
    "type": OptionType.STRING,
...
},
  "resolution": {
    "name": "resolution",
    "type": OptionType.INT,
...
  },
...
}

Xây dựng giao diện người dùng

Mặc dù không bắt buộc phải sử dụng API này, nhưng bạn có thể muốn người dùng chọn giá trị cho một tuỳ chọn cụ thể. Việc này yêu cầu giao diện người dùng. Sử dụng OpenScannerResponse (mở bởi openScanner()) để truy xuất các tuỳ chọn cho tệp đính kèm như được mô tả trong phần trước.

Một số trình quét nhóm các tuỳ chọn theo cách dành riêng cho thiết bị. Chúng không ảnh hưởng đến lựa chọn hành vi, nhưng vì các nhóm này có thể được đề cập trong sản phẩm máy quét tài liệu của bạn, các nhóm như vậy sẽ được hiển thị cho người dùng. Bạn có thể truy xuất các phiên bản này bằng cách gọi getOptionGroups(). Thao tác này sẽ trả về một Lời hứa sẽ giải quyết bằng Đối tượng GetOptionGroupsResponse. Bây giờ là groups có chứa một loạt nhóm dành riêng cho máy quét. Sử dụng thông tin trong để sắp xếp các lựa chọn trong OpenScannerResponse đối với màn hình.

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

Như đã nêu trong phần Cấu hình trình quét, việc thay đổi một tuỳ chọn có thể làm thay đổi các quy tắc ràng buộc vào một tuỳ chọn khác. Đây là lý do setOptionsResponse (đối tượng phản hồi cho setOptions()) chứa một thuộc tính options khác. Sử dụng để cập nhật giao diện người dùng. Sau đó, hãy lặp lại bước này nếu cần cho đến khi tất cả lựa chọn đều đã xong thiết lập.

Đặt tuỳ chọn cho trình quét

Đặt tuỳ chọn trình quét bằng cách truyền một mảng Đối tượng OptionSetting thành setOptions(). Để biết ví dụ, hãy xem phần Quét một trang có kích thước chữ cái sau đây.

Ví dụ

Truy xuất trang dưới dạng blob

Ví dụ này cho thấy một cách để truy xuất một trang qua trình quét dưới dạng một blob và minh hoạ việc sử dụng startScan()readScanData() bằng cách sử dụng giá trị của 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" });
}

Quét một trang có kích thước chữ cái

Ví dụ này minh hoạ cách chọn một trình quét, đặt các tuỳ chọn và mở trình quét đó. Nó sau đó truy xuất nội dung của một trang và đóng trình quét. Quy trình này minh hoạ bằng getScannerList(), openScanner(), setOptions()closeScanner(). Lưu ý rằng nội dung của trang được truy xuất bằng cách gọi hàm pageAsBlob() trong ví dụ trước.

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

Hiển thị cấu hình

Như đã nêu ở phần khác, việc hiển thị các tuỳ chọn cấu hình của trình quét cho người dùng yêu cầu gọi getOptionGroups() cùng với các tuỳ chọn trình quét được trả về từ gọi đến openScanner(). Việc này là để có thể hiển thị các tuỳ chọn cho người dùng ở nhóm do nhà sản xuất xác định. Dưới đây là ví dụ minh hoạ cách thực hiện.

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

Loại

CancelScanResponse

Chrome 125 trở lên

Thuộc tính

  • việc làm

    string

    Cung cấp cùng một tên người dùng công việc đã được truyền đến cancelScan().

  • kết quả

    Kết quả huỷ quét của máy chủ phụ trợ. Nếu kết quả là OperationResult.SUCCESS hoặc OperationResult.CANCELLED, thì quá trình quét đã bị huỷ và trình quét sẵn sàng bắt đầu một lượt quét mới. Nếu kết quả là OperationResult.DEVICE_BUSY , thì trình quét vẫn đang xử lý yêu cầu huỷ theo yêu cầu; phương thức gọi sẽ đợi một chút rồi thử lại yêu cầu. Các giá trị kết quả khác cho biết lỗi vĩnh viễn và bạn không nên thử lại.

CloseScannerResponse

Chrome 125 trở lên

Thuộc tính

  • kết quả

    Kết quả của việc đóng trình quét. Ngay cả khi giá trị này không phải là SUCCESS, tên người dùng vẫn không hợp lệ và bạn không nên dùng tên người dùng này cho các thao tác khác.

  • scannerHandle

    string

    Tên người dùng của trình quét tương tự như đã được truyền cho closeScanner.

Configurability

Chrome 125 trở lên

Cách thay đổi một lựa chọn.

Enum

"NOT_CONFIGURABLE"
Tuỳ chọn này là chỉ có thể đọc.

"SOFTWARE_CONFIGURABLE"
Bạn có thể đặt lựa chọn này trong phần mềm.

"HARDWARE_CONFIGURABLE"
Người dùng có thể đặt tuỳ chọn này bằng cách bật/tắt hoặc nhấn một nút trên máy quét.

ConnectionType

Chrome 125 trở lên

Cho biết cách kết nối máy quét với máy tính.

Enum

"KHÔNG XÁC ĐỊNH"

"USB"

"MẠNG"

ConstraintType

Chrome 125 trở lên

Loại dữ liệu của quy tắc ràng buộc được biểu thị bằng OptionConstraint.

Enum

"INT_RANGE"
Hạn chế đối với một dải ô giá trị OptionType.INT. Các thuộc tính min, maxquant của OptionConstraint sẽ là long và thế hệ list của nó sẽ không được đặt.

"FIXED_RANGE"
Hạn chế đối với một dải giá trị OptionType.FIXED. Các thuộc tính min, maxquant của OptionConstraint sẽ là double và thuộc tính list của thuộc tính này sẽ không được đặt.

"INT_LIST"
Quy tắc ràng buộc đối với một danh sách giá trị OptionType.INT cụ thể. Thuộc tính OptionConstraint.list sẽ chứa long giá trị và các thuộc tính khác sẽ không được đặt.

"FIXED_LIST"
Quy tắc ràng buộc đối với một danh sách giá trị OptionType.FIXED cụ thể. Thuộc tính OptionConstraint.list sẽ chứa double giá trị và các thuộc tính khác sẽ không được đặt.

"STRING_LIST"
Quy tắc ràng buộc đối với một danh sách giá trị OptionType.STRING cụ thể. Thuộc tính OptionConstraint.list sẽ chứa DOMString giá trị và các thuộc tính khác sẽ không được đặt.

DeviceFilter

Chrome 125 trở lên

Thuộc tính

  • local

    boolean không bắt buộc

    Chỉ trả lại các máy quét được gắn trực tiếp với máy tính.

  • bảo mật

    boolean không bắt buộc

    Chỉ trả về những máy quét sử dụng phương thức truyền tải an toàn, chẳng hạn như USB hoặc TLS.

GetOptionGroupsResponse

Chrome 125 trở lên

Thuộc tính

  • nhóm

    OptionGroup[] không bắt buộc

    Nếu resultSUCCESS, hãy cung cấp danh sách các nhóm tuỳ chọn theo thứ tự do trình điều khiển máy quét cung cấp.

  • kết quả

    Kết quả của việc nhận các nhóm lựa chọn. Nếu giá trị của thuộc tính này là SUCCESS, thì thuộc tính groups sẽ được điền sẵn.

  • scannerHandle

    string

    Tên người dùng của trình quét tương tự như đã được truyền cho getOptionGroups.

GetScannerListResponse

Chrome 125 trở lên

Thuộc tính

  • kết quả

    Kết quả liệt kê. Lưu ý rằng kết quả một phần có thể được trả về ngay cả khi điều này cho thấy có lỗi.

  • máy quét

    Danh sách các trình quét có thể trống phù hợp với DeviceFilter được cung cấp.

OpenScannerResponse

Chrome 125 trở lên

Thuộc tính

  • tùy chọn

    đối tượng không bắt buộc

    Nếu resultSUCCESS, hãy cung cấp mối liên kết khoá-giá trị, trong đó khoá là một lựa chọn dành riêng cho thiết bị và giá trị là một thực thể của ScannerOption.

  • kết quả

    Kết quả của việc mở trình quét. Nếu giá trị của thuộc tính này là SUCCESS, thì các thuộc tính scannerHandleoptions sẽ được điền sẵn.

  • scannerHandle

    chuỗi không bắt buộc

    Nếu resultSUCCESS, bạn có thể dùng một tay cầm cho trình quét để thực hiện các thao tác khác.

  • scannerId

    string

    Mã máy quét được truyền đến openScanner().

OperationResult

Chrome 125 trở lên

Một giá trị enum cho biết kết quả của mỗi thao tác.

Enum

"UNKNOWN"
Đã xảy ra lỗi không xác định hoặc lỗi chung.

"Success"
Thao tác đã thành công.

"UNSUPPORTED"
Thao tác này không được hỗ trợ.

"CANCELLED"
Thao tác đã bị huỷ.

"DEVICE_BUSY"
Thiết bị đang bận.

"INVALID"
Dữ liệu hoặc đối số được truyền đến phương thức đều không hợp lệ.

"WRONG_TYPE"
Giá trị đã cung cấp không đúng loại dữ liệu cho lựa chọn cơ bản.

"EOF"
Không có thêm dữ liệu nào.

"ADF_JAMMED"
Trình nạp tài liệu bị kẹt.

"ADF_EMPTY"
Trình nạp tài liệu trống.

"COVER_OPEN"
Nắp đế phẳng đang mở.

"IO_ERROR"
Đã xảy ra lỗi khi kết nối với thiết bị.

"ACCESS_DENIED"
Thiết bị yêu cầu xác thực.

"NO_MEMORY"
Không có đủ bộ nhớ trên Chromebook để hoàn tất thao tác.

"UNREACHABLE"
Không kết nối được với thiết bị.

"MISSING"
Thiết bị đã bị ngắt kết nối.

"INTERNAL_ERROR"
Đã xảy ra lỗi ở nơi khác ngoài ứng dụng gọi.

OptionConstraint

Chrome 125 trở lên

Thuộc tính

  • danh sách

    string[] | number[] không bắt buộc

  • tối đa

    số không bắt buộc

  • phút

    số không bắt buộc

  • lượng tử

    số không bắt buộc

OptionGroup

Chrome 125 trở lên

Thuộc tính

  • thành viên

    chuỗi[]

    Một mảng tên các lựa chọn theo thứ tự do người lái xe cung cấp.

  • tiêu đề

    string

    Cung cấp tiêu đề in được, ví dụ: "Tuỳ chọn hình học".

OptionSetting

Chrome 125 trở lên

Thuộc tính

  • tên

    string

    Cho biết tên của tuỳ chọn cần đặt.

  • loại

    Cho biết loại dữ liệu của tuỳ chọn. Loại dữ liệu được yêu cầu phải khớp với loại dữ liệu thực của lựa chọn cơ bản.

  • value

    string | số | boolean | number[] không bắt buộc

    Cho biết giá trị cần đặt. Hãy không đặt để yêu cầu chế độ cài đặt tự động cho các lựa chọn đã bật autoSettable. Loại dữ liệu được cung cấp cho value phải khớp với type.

OptionType

Chrome 125 trở lên

Loại dữ liệu của một lựa chọn.

Enum

"UNKNOWN"
Loại dữ liệu của lựa chọn này không xác định. Thuộc tính value sẽ bị huỷ thiết lập.

"BOOL"
Thuộc tính value sẽ có giá trị là truefalse.

"INT"
Một số nguyên 32 bit đã ký. Thuộc tính value sẽ dài hoặc long[], tuỳ thuộc vào việc tuỳ chọn này có nhận nhiều giá trị hay không.

"FIXED"
Gấp đôi trong khoảng -32768-32767.9999 với độ phân giải 1/65535. Thuộc tính value sẽ là gấp đôi hoặc kép [], tuỳ thuộc vào việc tuỳ chọn này có nhận nhiều giá trị hay không. Những giá trị kép không thể thể hiện chính xác sẽ được làm tròn thành phạm vi và độ chính xác có sẵn.

"STRING"
Một chuỗi gồm bất kỳ byte nào ngoại trừ NUL ('\0'). Thuộc tính value sẽ là DOMString.

"NÚT"
Tuỳ chọn loại này không có giá trị. Thay vào đó, việc đặt một tuỳ chọn thuộc loại này sẽ gây ra hiệu ứng phụ tuỳ chọn cụ thể trong trình điều khiển máy quét. Ví dụ: trình điều khiển máy quét có thể sử dụng tuỳ chọn nhập bằng nút để cung cấp phương tiện để chọn các giá trị mặc định hoặc để trình nạp tài liệu tự động chuyển đến trang giấy tiếp theo.

"GROUP"
Tuỳ chọn nhóm. Không có giá trị. Dữ liệu này được dùng để đảm bảo khả năng tương thích, nhưng thường sẽ không được trả về trong các giá trị ScannerOption. Sử dụng getOptionGroups() để truy xuất danh sách nhóm kèm theo các lựa chọn về thành viên.

OptionUnit

Chrome 125 trở lên

Cho biết loại dữ liệu của ScannerOption.unit.

Enum

"UNITLESS"
Giá trị là số không đơn vị. Ví dụ: đó có thể là một ngưỡng.

"PIXEL"
Giá trị là một số pixel, ví dụ: kích thước quét.

"BIT"
Giá trị là số bit, ví dụ: độ sâu màu.

"MM"
Giá trị được đo bằng milimet, ví dụ: kích thước quét.

"DPI"
Giá trị này được đo bằng số điểm trên mỗi inch, chẳng hạn như độ phân giải.

"PERCENT"
Giá trị là phần trăm, ví dụ: độ sáng.

"MICROMETRIC"
Giá trị này được đo bằng micrô giây, chẳng hạn như thời gian phơi sáng.

ReadScanDataResponse

Chrome 125 trở lên

Thuộc tính

  • dữ liệu

    ArrayBuffer không bắt buộc

    Nếu resultSUCCESS, thì chứa phân đoạn tiếp theo của dữ liệu hình ảnh đã quét. Nếu resultEOF, thì chứa đoạn cuối của dữ liệu hình ảnh đã quét.

  • estimatedCompletion

    số không bắt buộc

    Nếu resultSUCCESS, thì ước tính lượng dữ liệu quét đã phân phối tính đến thời điểm hiện tại, trong phạm vi từ 0 đến 100.

  • việc làm

    string

    Cung cấp tên người dùng được truyền đến readScanData().

  • kết quả

    Kết quả của việc đọc dữ liệu. Nếu giá trị của lớp này là SUCCESS, thì data sẽ chứa đoạn dữ liệu hình ảnh tiếp theo (có thể có độ dài bằng 0) đã sẵn sàng để đọc. Nếu giá trị của tệp này là EOF, thì data sẽ chứa đoạn cuối của dữ liệu hình ảnh.

ScannerInfo

Chrome 125 trở lên

Thuộc tính

  • connectionType

    Cho biết cách kết nối máy quét với máy tính.

  • deviceUuid

    string

    Để so khớp với các mục nhập ScannerInfo khác trỏ đến cùng một thiết bị thực.

  • imageFormats

    chuỗi[]

    Một mảng các loại MIME có thể được yêu cầu cho các lần quét trả về.

  • nhà sản xuất

    string

    Nhà sản xuất máy quét.

  • kiểu máy

    string

    Mô hình máy quét (nếu có) hoặc nội dung mô tả chung chung.

  • tên

    string

    Tên mà con người có thể đọc được để trình quét hiển thị trong giao diện người dùng.

  • protocolType

    string

    Nội dung mô tả mà con người có thể đọc được về giao thức hoặc trình điều khiển dùng để truy cập vào máy quét, chẳng hạn như Mopria, WSD hoặc epsonds. Điều này chủ yếu hữu ích cho việc cho phép người dùng chọn giữa các giao thức nếu thiết bị hỗ trợ nhiều giao thức.

  • scannerId

    string

    Mã của một trình quét cụ thể.

  • bảo mật

    boolean

    Nếu đúng, quá trình truyền tải kết nối của trình quét sẽ không bị chặn bằng một trình nghe thụ động, chẳng hạn như TLS hoặc USB.

ScannerOption

Chrome 125 trở lên

Thuộc tính

  • khả năng định cấu hình

    Cho biết liệu có thể thay đổi tuỳ chọn này hay không và bằng cách nào.

  • quy tắc ràng buộc

    OptionConstraint không bắt buộc

    Xác định OptionConstraint trên tuỳ chọn trình quét hiện tại.

  • description

    string

    Nội dung mô tả dài hơn về lựa chọn.

  • isActive

    boolean

    Cho biết tuỳ chọn này đang hoạt động và có thể được đặt hoặc truy xuất. Nếu đặt là false, thuộc tính value sẽ không được đặt.

  • isAdvanced

    boolean

    Cho biết rằng theo mặc định, giao diện người dùng không nên hiển thị tuỳ chọn này.

  • isAutoSettable

    boolean

    Trình điều khiển máy quét có thể tự động thiết lập.

  • isDetectable

    boolean

    Cho biết lựa chọn này có thể được phát hiện qua phần mềm.

  • isEmulated

    boolean

    Được mô phỏng bằng trình điều khiển máy quét nếu đúng.

  • tên

    string

    Tên tuỳ chọn sử dụng chữ cái ASCII viết thường, số và dấu gạch ngang. Không được phép dùng dấu phụ.

  • tiêu đề

    string

    Tiêu đề 1 dòng có thể in được.

  • loại

    Loại dữ liệu có trong thuộc tính value cần thiết để đặt tuỳ chọn này.

  • đơn vị

    Đơn vị đo lường cho lựa chọn này.

  • value

    string | số | boolean | number[] không bắt buộc

    Giá trị hiện tại của lựa chọn, nếu thích hợp. Lưu ý rằng loại dữ liệu của tài sản này phải khớp với loại dữ liệu đã chỉ định trong type.

ScanOptions

Thuộc tính

  • maxImages

    số không bắt buộc

    Số lượng ảnh đã quét được phép. Giá trị mặc định là 1.

  • mimeTypes

    string[] không bắt buộc

    Loại MIME được phương thức gọi chấp nhận.

ScanResults

Thuộc tính

  • dataUrls

    chuỗi[]

    Một mảng URL hình ảnh dữ liệu trong một biểu mẫu có thể được chuyển dưới dạng "src" thành một thẻ hình ảnh.

  • mimeType

    string

    Loại MIME của dataUrls.

SetOptionResult

Chrome 125 trở lên

Thuộc tính

  • tên

    string

    Cho biết tên của tuỳ chọn đã được đặt.

  • kết quả

    Cho biết kết quả của việc đặt lựa chọn này.

SetOptionsResponse

Chrome 125 trở lên

Thuộc tính

  • tùy chọn

    đối tượng không bắt buộc

    Đã cập nhật ánh xạ khoá-giá trị từ tên tuỳ chọn đến các giá trị ScannerOption chứa cấu hình mới sau khi cố gắng đặt tất cả tuỳ chọn được cung cấp. Thuộc tính này có cấu trúc giống như thuộc tính options trong OpenScannerResponse.

    Thuộc tính này sẽ được đặt ngay cả khi một số tuỳ chọn không được đặt thành công, nhưng sẽ không được đặt nếu không truy xuất được cấu hình đã cập nhật (ví dụ: nếu máy quét bị ngắt kết nối trong quá trình quét).

  • kết quả

    Một mảng kết quả, mỗi kết quả cho mỗi OptionSetting được truyền vào.

  • scannerHandle

    string

    Cung cấp tay điều khiển trình quét được truyền đến setOptions().

StartScanOptions

Chrome 125 trở lên

Thuộc tính

  • định dạng

    string

    Chỉ định loại MIME để trả về dữ liệu đã quét.

  • maxReadSize

    số không bắt buộc

    Nếu một giá trị khác 0 được chỉ định, hãy giới hạn số byte đã quét tối đa được trả về trong một phản hồi readScanData duy nhất cho giá trị đó. Giá trị nhỏ nhất được phép là 32768 (32 KB). Nếu thuộc tính này không được chỉ định, kích thước của phân đoạn được trả về có thể lớn bằng toàn bộ hình ảnh được quét.

StartScanResponse

Chrome 125 trở lên

Thuộc tính

  • việc làm

    chuỗi không bắt buộc

    Nếu resultSUCCESS, hãy cung cấp một tên người dùng có thể dùng để đọc dữ liệu quét hoặc huỷ lệnh.

  • kết quả

    Kết quả của việc bắt đầu quét. Nếu giá trị của thuộc tính này là SUCCESS, thì thuộc tính job sẽ được điền sẵn.

  • scannerHandle

    string

    Cung cấp cùng một tên người dùng của trình quét đã được truyền đến startScan().

Phương thức

cancelScan()

Lời hứa Chrome 125 trở lên
chrome.documentScan.cancelScan(
  job: string,
  callback?: function,
)

Huỷ quá trình quét đã bắt đầu và trả về một Promise phân giải bằng đối tượng CancelScanResponse. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó.

Tham số

  • việc làm

    string

    Quá trình xử lý của một lệnh quét đang hoạt động mà trước đó được trả về từ một lệnh gọi đến startScan.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (response: CancelScanResponse) => void

Giá trị trả về

  • Promise&lt;CancelScanResponse&gt;

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

closeScanner()

Lời hứa Chrome 125 trở lên
chrome.documentScan.closeScanner(
  scannerHandle: string,
  callback?: function,
)

Đóng trình quét bằng tên người dùng được truyền vào và trả về một Lời hứa (Promise) phân giải bằng đối tượng CloseScannerResponse. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó. Ngay cả khi phản hồi không thành công, tên người dùng đã cung cấp sẽ không hợp lệ và bạn không nên dùng tên người dùng này cho các thao tác khác.

Tham số

  • scannerHandle

    string

    Chỉ định xử lý của một trình quét đang mở mà trước đó được lệnh gọi đến openScanner trả về.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (response: CloseScannerResponse) => void

Giá trị trả về

  • Promise&lt;CloseScannerResponse&gt;

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

getOptionGroups()

Lời hứa Chrome 125 trở lên
chrome.documentScan.getOptionGroups(
  scannerHandle: string,
  callback?: function,
)

Lấy tên nhóm và các lựa chọn thành viên từ trình quét do openScanner mở trước đó. Phương thức này trả về một Lời hứa phân giải bằng đối tượng GetOptionGroupsResponse. Nếu một lệnh gọi lại được truyền vào hàm này, thì dữ liệu trả về sẽ được truyền vào hàm đó.

Tham số

  • scannerHandle

    string

    Tài khoản xử lý của một trình quét đang mở được trả về từ lệnh gọi đến openScanner.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (response: GetOptionGroupsResponse) => void

Giá trị trả về

  • Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

getScannerList()

Lời hứa Chrome 125 trở lên
chrome.documentScan.getScannerList(
  filter: DeviceFilter,
  callback?: function,
)

Lấy danh sách các trình quét hiện có và trả về một Lời hứa (Promise) sẽ phân giải bằng đối tượng GetScannerListResponse. Nếu một lệnh gọi lại được truyền vào hàm này, thì dữ liệu trả về sẽ được truyền vào hàm đó.

Tham số

Giá trị trả về

  • Promise&lt;GetScannerListResponse&gt;

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

openScanner()

Lời hứa Chrome 125 trở lên
chrome.documentScan.openScanner(
  scannerId: string,
  callback?: function,
)

Mở một trình quét để có quyền truy cập độc quyền và trả về một Lời hứa (Promise) sẽ phân giải bằng đối tượng OpenScannerResponse. Nếu một lệnh gọi lại được truyền vào hàm này, thì dữ liệu trả về sẽ được truyền vào hàm đó.

Tham số

  • scannerId

    string

    Mã nhận dạng của trình quét sẽ được mở. Giá trị này được trả về từ lệnh gọi getScannerList trước đó.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (response: OpenScannerResponse) => void

Giá trị trả về

  • Promise&lt;OpenScannerResponse&gt;

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

readScanData()

Lời hứa Chrome 125 trở lên
chrome.documentScan.readScanData(
  job: string,
  callback?: function,
)

Đọc đoạn dữ liệu hình ảnh có sẵn tiếp theo từ một xử lý công việc đang hoạt động và trả về một Promise phân giải bằng đối tượng ReadScanDataResponse. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó.

**Lưu ý:**Kết quả phản hồi phải là SUCCESS với thành phần data có độ dài bằng 0. Điều này có nghĩa là trình quét vẫn đang hoạt động nhưng chưa có thêm dữ liệu sẵn sàng. Phương thức gọi sẽ đợi một chút rồi thử lại.

Khi lệnh quét hoàn tất, phản hồi sẽ có giá trị kết quả là EOF. Phản hồi này có thể chứa một thành phần cuối cùng khác 0 của data.

Tham số

  • việc làm

    string

    Tên người dùng đang hoạt động được trả về trước đó từ startScan.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (response: ReadScanDataResponse) => void

Giá trị trả về

  • Promise&lt;ReadScanDataResponse&gt;

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

scan()

Lời hứa
chrome.documentScan.scan(
  options: ScanOptions,
  callback?: function,
)

Quét tài liệu và trả về một Lời hứa (Promise) phân giải bằng đối tượng ScanResults. Nếu một lệnh gọi lại được truyền vào hàm này, thì dữ liệu trả về sẽ được chuyển vào hàm đó.

Tham số

  • tùy chọn

    Đối tượng chứa các tham số quét.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (result: ScanResults) => void

Giá trị trả về

  • Promise&lt;ScanResults&gt;

    Chrome 96 trở lên

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

setOptions()

Lời hứa Chrome 125 trở lên
chrome.documentScan.setOptions(
  scannerHandle: string,
  options: OptionSetting[],
  callback?: function,
)

Đặt các tuỳ chọn trên trình quét được chỉ định và trả về một Lời hứa phân giải bằng đối tượng SetOptionsResponse chứa kết quả của việc cố gắng đặt mọi giá trị theo thứ tự của đối tượng OptionSetting được truyền vào. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó.

Tham số

  • scannerHandle

    string

    Tay cầm của trình quét để đặt các tuỳ chọn. Đây phải là một giá trị trước đó được trả về từ lệnh gọi openScanner.

  • tùy chọn

    Danh sách đối tượng OptionSetting sẽ được áp dụng cho trình quét.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (response: SetOptionsResponse) => void

Giá trị trả về

  • Promise&lt;SetOptionsResponse&gt;

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

startScan()

Lời hứa Chrome 125 trở lên
chrome.documentScan.startScan(
  scannerHandle: string,
  options: StartScanOptions,
  callback?: function,
)

Bắt đầu một lượt quét trên trình quét đã chỉ định và trả về một Lời hứa (Promise) sẽ phân giải bằng một StartScanResponse. Nếu bạn sử dụng lệnh gọi lại, thì đối tượng sẽ được truyền vào đối tượng đó. Nếu lệnh gọi thành công thì phản hồi sẽ bao gồm một tên xử lý công việc có thể dùng trong các lệnh gọi tiếp theo để đọc dữ liệu quét hoặc huỷ một lượt quét.

Tham số

  • scannerHandle

    string

    Tay cầm của một trình quét đang mở. Đây phải là một giá trị trước đó được trả về từ lệnh gọi openScanner.

  • tùy chọn

    Đối tượng StartScanOptions cho biết các tuỳ chọn sẽ dùng để quét. Thuộc tính StartScanOptions.format phải khớp với một trong các mục trả về trong ScannerInfo của trình quét.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (response: StartScanResponse) => void

Giá trị trả về

  • Promise&lt;StartScanResponse&gt;

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.