Описание
Используйте API chrome.documentScan
для обнаружения и получения изображений со сканеров подключенных документов.
API сканирования документов предназначен для того, чтобы приложения и расширения могли просматривать содержимое бумажных документов на подключенном сканере документов.
Разрешения
documentScan
Доступность
Концепции и использование
Этот API поддерживает два способа сканирования документов. Если ваш вариант использования может работать с любым сканером и не требует контроля конфигурации, используйте метод scan()
. Более сложные случаи использования требуют комбинации методов, которые поддерживаются только в Chrome 124 и более поздних версиях.
Простое сканирование
Для простых случаев использования, то есть тех, которые могут работать с любым сканером и не требуют контроля конфигурации, вызовите scan()
. Этот метод принимает объект ScanOptions
и возвращает Promise, который разрешается с помощью объекта ScanResults
. Возможности этой опции ограничены количеством сканирований и типами MIME, которые будут приняты вызывающей стороной. Сканы возвращаются в виде URL-адресов для отображения в теге <img>
пользовательского интерфейса.
Комплексное сканирование
Комплексное сканирование выполняется в три этапа, как описано в этом разделе. В этой схеме не описываются каждый аргумент метода или каждое свойство, возвращаемое в ответе. Он предназначен только для того, чтобы дать вам общее руководство по написанию кода сканера.
Открытие
Вызовите
getScannerList()
. Доступные сканеры возвращаются в Promise, который разрешается с помощьюGetScannerListResponse
.- Объект ответа содержит массив объектов
ScannerInfo
. - Массив может содержать несколько записей для одного сканера, если этот сканер поддерживает несколько протоколов или методов подключения.
- Объект ответа содержит массив объектов
Выберите сканер из возвращенного массива и сохраните значение его свойства
scannerId
.Используйте свойства отдельных объектов
ScannerInfo
, чтобы различать несколько объектов для одного и того же сканера. Объекты из одного и того же сканера будут иметь одинаковое значение свойстваdeviceUuid
.ScannerInfo
также содержит свойствоimageFormats
, содержащее массив поддерживаемых типов изображений.
Конфигурация сканера
Вызовите
openScanner()
, передав сохраненный идентификатор сканера. Он возвращает обещание, которое разрешается с помощьюOpenScannerResponse
. Объект ответа содержит:Свойство
scannerHandle
, которое вам необходимо сохранить.Свойство options, содержащее свойства, специфичные для сканера, которые вам необходимо установить. Дополнительные сведения см. в разделе Получение параметров сканера.
(Необязательно) Если вам нужно, чтобы пользователь предоставил значения для параметров сканера, создайте пользовательский интерфейс. Вам потребуются параметры сканера, предоставленные на предыдущем шаге, и вам нужно будет получить группы параметров, предоставленные сканером. Дополнительные сведения см. в разделе Создание пользовательского интерфейса .
Создайте массив объектов
OptionSetting
, используя программные или предоставленные пользователем значения. Дополнительную информацию см. в разделе Настройка параметров сканера.Передайте массив объектов
OptionSetting
в функциюsetOptions()
чтобы установить параметры для сканера. Он возвращает обещание, которое разрешается с помощьюSetOptionsResponse
. Этот объект содержит обновленную версию параметров сканера, полученную на шаге 1 настройки сканера.Поскольку изменение одного параметра может изменить ограничения другого параметра, возможно, вам придется повторить эти шаги несколько раз.
Сканирование
Создайте объект
StartScanOptions
и передайте его вstartScan()
. Он возвращает обещание, которое разрешается с помощьюStartScanResponse
. Его свойствоjob
представляет собой дескриптор, который вы будете использовать для чтения данных сканирования или отмены сканирования.Передайте дескриптор задания в
readScanData()
. Он возвращает обещание, которое разрешается с помощью объектаReadScanDataResponse
. Если данные были прочитаны успешно, их свойствоresult
равноSUCCESS
, а свойствоdata
содержитArrayBuffer
с частью сканирования. Обратите внимание, чтоestimatedCompletion
содержит приблизительный процент от общего объема данных, которые были доставлены на данный момент.Повторяйте предыдущий шаг до тех пор, пока свойство
result
не станет равнымEOF
или ошибке.
Когда будет достигнут конец сканирования, вызовите closeScanner()
с дескриптором сканера, сохраненным на шаге 3. Он возвращает Promise, который разрешается с помощью CloseScannerResponse
. Вызов cancelScan()
в любой момент после создания задания завершит сканирование.
Объекты ответа
Все методы возвращают обещание, которое разрешается с помощью какого-либо объекта ответа. Большинство из них содержат свойство result
, значение которого является членом OperationResult
. Некоторые свойства объектов ответа не будут содержать значений, если значение result
не имеет определенного значения. Эти отношения описаны в справочнике для каждого объекта ответа.
Например, OpenScannerResponse.scannerHandle
будет иметь значение только в том случае, если OpenScannerResponse.result
равен SUCCESS
.
Опции сканера
Параметры сканера значительно различаются в зависимости от устройства. Следовательно, невозможно отразить параметры сканера непосредственно в API documentScan. Чтобы обойти эту проблему, 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()
. Это возвращает обещание, которое разрешается с помощью объекта GetOptionGroupsResponse
. Его свойство groups
содержит массив групп, специфичный для сканера. Используйте информацию в этих группах, чтобы упорядочить параметры OpenScannerResponse
для отображения.
{
scannerHandle: "123456",
result: SUCCESS,
groups: [
{
title: "Standard",
members: [ "resolution", "mode", "source" ]
}
]
}
Как указано в разделе «Конфигурация сканера», изменение одного параметра может изменить ограничения другого параметра. Вот почему setOptionsResponse
(объект ответа для setOptions()
) содержит еще одно свойство options
. Используйте это для обновления пользовательского интерфейса. Затем повторяйте по мере необходимости, пока все параметры не будут установлены.
Установите параметры сканера
Установите параметры сканера, передав массив объектов OptionSetting
в setOptions()
. Пример см. в следующем разделе «Сканирование одной страницы формата Letter» .
Примеры
Получить страницу в виде большого двоичного объекта
В этом примере показан один из способов получения страницы со сканера в виде большого двоичного объекта и демонстрируется использование 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);
}
Показать конфигурацию
Как указано в другом месте, для отображения параметров конфигурации сканера пользователю требуется вызов getOptionGroups()
в дополнение к параметрам сканера, возвращаемым в результате вызова openScanner()
. Это сделано для того, чтобы параметры могли быть показаны пользователям в группах, определенных производителем. Этот пример показывает, как это сделать.
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
, дескриптор будет недействительным и не должен использоваться для дальнейших операций. - сканерРучка
нить
Тот же дескриптор сканера, который был передан в
closeScanner
.
Configurability
Как можно изменить опцию.
Перечисление
"НЕ_КОНФИГУРИРУЕМО" "SOFTWARE_CONFIGURABLE" "HARDWARE_CONFIGURABLE"
Опция доступна только для чтения.
Опцию можно настроить программно.
Эту опцию можно установить пользователем, переключая или нажимая кнопку на сканере.
ConnectionType
Указывает, как сканер подключен к компьютеру.
Перечисление
"НЕУКАЗАНО" "USB" "СЕТЬ"
Перечисление
"INT_RANGE" "FIXED_RANGE" "INT_СПИСОК" "FIXED_LIST" "STRING_LIST"
Ограничение диапазона значений OptionType.INT
. Свойства min
, max
и quant
OptionConstraint
будут long
, а его свойство list
будет неустановлено.
Ограничение диапазона значений OptionType.FIXED
. Свойства min
, max
и quant
OptionConstraint
будут иметь double
, а его свойство list
будет не установлено.
Ограничение на определенный список значений OptionType.INT
. Свойство OptionConstraint.list
будет содержать long
значения, а остальные свойства будут отключены.
Ограничение на определенный список значений OptionType.FIXED
. Свойство OptionConstraint.list
будет содержать double
значения, а остальные свойства будут отключены.
Ограничение на определенный список значений OptionType.STRING
. Свойство OptionConstraint.list
будет содержать значения DOMString
, а остальные свойства будут не заданы.
DeviceFilter
Характеристики
- местный
логическое значение необязательно
Возвращайте только те сканеры, которые напрямую подключены к компьютеру.
- безопасный
логическое значение необязательно
Возвращайте только те сканеры, которые используют безопасный транспорт, например USB или TLS.
GetOptionGroupsResponse
Характеристики
- группы
OptionGroup [] необязательно
Если
result
являетсяSUCCESS
, предоставляется список групп опций в порядке, заданном драйвером сканера. - результат
Результат получения групп опций. Если значение этого параметра —
SUCCESS
, свойствоgroups
будет заполнено. - сканерРучка
нить
Тот же дескриптор сканера, который был передан в
getOptionGroups
.
GetScannerListResponse
Характеристики
- результат
Результат перечисления. Обратите внимание, что частичные результаты могут быть возвращены, даже если это указывает на ошибку.
- сканеры
Возможно пустой список сканеров, соответствующих указанному
DeviceFilter
.
OpenScannerResponse
Характеристики
- параметры
объект необязательный
Если
result
—SUCCESS
, обеспечивает сопоставление ключ-значение, где ключ — это опция, специфичная для устройства, а значение — экземплярScannerOption
. - результат
Результат открытия сканера. Если значение этого параметра —
SUCCESS
, свойстваscannerHandle
иoptions
будут заполнены. - сканерРучка
строка необязательна
Если
result
являетсяSUCCESS
, это дескриптор сканера, который можно использовать для дальнейших операций. - идентификатор сканера
нить
Идентификатор сканера передается в
openScanner()
.
OperationResult
Перечисление, указывающее результат каждой операции.
Перечисление
"НЕИЗВЕСТНЫЙ" "УСПЕХ" «НЕ ПОДДЕРЖИВАЕТСЯ» «ОТМЕНЕНО» "DEVICE_BUSY" "НЕВЕРНЫЙ" "НЕПРАВИЛЬНЫЙ_ТИП" "ЭОФ" "ADF_JAMMED" "ADF_EMPTY" "COVER_OPEN" "IO_ERROR" "ДОСТУП ЗАПРЕЩЕН" "НЕТ_ПАМЯТИ" «НЕДОСТИЖИМЫЙ» "ОТСУТСТВУЮЩИЙ" "ВНУТРЕННЯ_ОШИБКА"
Произошла неизвестная или общая ошибка.
Операция прошла успешно.
Операция не поддерживается.
Операция была отменена.
Устройство занято.
Либо данные, либо аргумент, переданные методу, недействительны.
Указанное значение является неправильным типом данных для базовой опции.
Больше данных нет.
Устройство подачи документов застряло.
Устройство подачи документов пусто.
Крышка планшета открыта.
Произошла ошибка при обмене данными с устройством.
Устройство требует аутентификации.
На Chromebook недостаточно памяти для завершения операции.
Устройство недоступно.
Устройство отключено.
Ошибка произошла где-то кроме вызывающего приложения.
OptionConstraint
Характеристики
- список
строка[] | номер[] необязательно
- Макс
номер необязательно
- мин
номер необязательно
- количественный
номер необязательно
- тип
OptionGroup
Характеристики
- члены
нить[]
Массив имен опций в порядке, указанном драйвером.
- заголовок
нить
Предоставляет печатный заголовок, например «Параметры геометрии».
OptionSetting
Характеристики
- имя
нить
Указывает имя устанавливаемой опции.
- тип
Указывает тип данных параметра. Запрошенный тип данных должен соответствовать реальному типу данных базовой опции.
- ценить
строка | номер | логическое | номер[] необязательно
Указывает значение, которое необходимо установить. Оставьте значение отключенным, чтобы запросить автоматическую настройку для параметров, для которых включена
autoSettable
. Тип данных, указанный дляvalue
должен соответствоватьtype
.
OptionType
Тип данных опции.
Перечисление
"НЕИЗВЕСТНЫЙ" "БУЛ" "ИНТ" "ЗАФИКСИРОВАННЫЙ" "НИТЬ" "КНОПКА" "ГРУППА"
Тип данных опции неизвестен. Свойство value
будет не установлено.
Свойство value
будет иметь значение true
false.
32-битное целое число со знаком. Свойство value
будет иметь значение long или long[] в зависимости от того, принимает ли опция более одного значения.
Двойной в диапазоне -32768-32767,9999 с разрешением 1/65535. Свойство value
будет иметь значение double или double[] в зависимости от того, принимает ли опция более одного значения. Двойные значения, которые невозможно представить точно, будут округлены до доступного диапазона и точности.
Последовательность любых байтов, кроме NUL («\0»). Свойство value
будет DOMString.
Опция этого типа не имеет значения. Вместо этого установка параметра этого типа вызывает побочный эффект, специфичный для параметра, в драйвере сканера. Например, опция, набираемая с помощью кнопки, может использоваться драйвером сканера для предоставления средств для выбора значений по умолчанию или для указания устройству автоматической подачи документов перейти к следующему листу бумаги.
Вариант группировки. Никакой ценности. Это включено для совместимости, но обычно не возвращается в значениях ScannerOption
. Используйте getOptionGroups()
, чтобы получить список групп с параметрами их участников.
Перечисление
"БЕЗЕДИННЫЙ" "ПИКСЕЛЬ" "КУСОЧЕК" "ММ" "ДПИ" «ПРЦЕНТ» «МИКРОСЕКОНДА»
Значение представляет собой безразмерное число. Например, это может быть порог.
Значением является количество пикселей, например размеры сканирования.
Значением является количество бит, например, глубина цвета.
Величина измеряется в миллиметрах, например, размеры скана.
Значение измеряется в точках на дюйм, например, разрешение.
Значение представляет собой процент, например, яркость.
Величина измеряется в микросекундах, например, время экспозиции.
ReadScanDataResponse
Характеристики
- данные
ArrayBuffer необязательно
Если
result
—SUCCESS
, содержит следующий фрагмент данных отсканированного изображения. Еслиresult
являетсяEOF
, он содержит последний фрагмент данных отсканированного изображения. - расчетное завершение
номер необязательно
Если
result
—SUCCESS
, это оценка того, какой объем всех данных сканирования был доставлен на данный момент, в диапазоне от 0 до 100. - работа
нить
Предоставляет дескриптор задания, передаваемый в
readScanData()
. - результат
Результат чтения данных. Если его значение равно
SUCCESS
, тогдаdata
содержат следующий фрагмент данных изображения (возможно, нулевой длины), готовый для чтения. Если его значение равноEOF
,data
содержат последний фрагмент данных изображения.
ScannerInfo
Характеристики
- тип соединения
Указывает, как сканер подключен к компьютеру.
- Uuid устройства
нить
Для сопоставления с другими записями
ScannerInfo
, которые указывают на то же физическое устройство. - Форматы изображений
нить[]
Массив типов MIME, которые можно запрашивать для возвращаемых сканирований.
- производитель
нить
Производитель сканера.
- модель
нить
Модель сканера, если она доступна, или общее описание.
- имя
нить
Удобочитаемое имя сканера, отображаемое в пользовательском интерфейсе.
- тип протокола
нить
Удобочитаемое описание протокола или драйвера, используемого для доступа к сканеру, например Mopria, WSD или epsonds. Это в первую очередь полезно для предоставления пользователю возможности выбирать между протоколами, если устройство поддерживает несколько протоколов.
- идентификатор сканера
нить
Идентификатор конкретного сканера.
- безопасный
логическое значение
Если это правда, транспорт соединения сканера не может быть перехвачен пассивным прослушивателем, таким как TLS или USB.
ScannerOption
Характеристики
- возможность настройки
Указывает, можно ли изменить параметр и если да, то каким образом.
- ограничение
OptionConstraint необязательно
Определяет
OptionConstraint
для текущего параметра сканера. - описание
нить
Подробное описание опции.
- isActive
логическое значение
Указывает, что опция активна и ее можно установить или получить. Если значение равно false, свойство
value
не будет установлено. - isAdvanced
логическое значение
Указывает, что пользовательский интерфейс не должен отображать этот параметр по умолчанию.
- isAutoSettable
логическое значение
Может автоматически устанавливаться драйвером сканера.
- isDetectable
логическое значение
Указывает, что этот параметр можно обнаружить с помощью программного обеспечения.
- isEmulated
логическое значение
Эмулируется драйвером сканера, если это правда.
- имя
нить
Имя опции, состоящее из строчных букв ASCII, цифр и тире. Диакритические знаки не допускаются.
- заголовок
нить
Печатный однострочный заголовок.
- тип
Тип данных, содержащийся в свойстве
value
, который необходим для установки этого параметра. - единица
Единица измерения для этого параметра.
- ценить
строка | номер | логическое | номер[] необязательно
Текущая стоимость опциона, если применимо. Обратите внимание, что тип данных этого свойства должен соответствовать типу данных, указанному в
type
.
ScanOptions
Характеристики
- maxImages
номер необязательно
Разрешенное количество отсканированных изображений. Значение по умолчанию — 1.
- mime-типы
строка[] необязательно
Типы MIME, принимаемые вызывающей стороной.
ScanResults
Характеристики
- URL-адреса данных
нить[]
Массив URL-адресов изображений данных в форме, которую можно передать как значение «src» в тег изображения.
- mimeType
нить
MIME-тип
dataUrls
.
SetOptionResult
Характеристики
- имя
нить
Указывает имя установленной опции.
- результат
Указывает результат установки параметра.
SetOptionsResponse
Характеристики
- параметры
объект необязательный
Обновленное сопоставление значений ключа между именами параметров и значениями
ScannerOption
, содержащими новую конфигурацию после попытки установить все предоставленные параметры. Оно имеет ту же структуру, что и свойствоoptions
вOpenScannerResponse
.Это свойство будет установлено, даже если некоторые параметры не были установлены успешно, но оно будет отключено, если получить обновленную конфигурацию не удастся (например, если сканер отключится в середине сканирования).
- результаты
Массив результатов, по одному для каждого переданного
OptionSetting
. - сканерРучка
нить
Предоставляет дескриптор сканера, передаваемый в
setOptions()
.
StartScanOptions
Характеристики
- формат
нить
Указывает тип MIME для возврата отсканированных данных.
- maxReadSize
номер необязательно
Если указано ненулевое значение, максимальное количество сканируемых байтов, возвращаемых в одном ответе
readScanData
ограничивается этим значением. Наименьшее допустимое значение — 32768 (32 КБ). Если это свойство не указано, размер возвращаемого фрагмента может быть равен всему отсканированному изображению.
StartScanResponse
Характеристики
- работа
строка необязательна
Если
result
—SUCCESS
, предоставляет дескриптор, который можно использовать для чтения данных сканирования или отмены задания. - результат
Результат запуска сканирования. Если значение этого параметра —
SUCCESS
, свойствоjob
будет заполнено. - сканерРучка
нить
Предоставляет тот же дескриптор сканера, который был передан в
startScan()
.
Методы
cancelScan()
chrome.documentScan.cancelScan(
job: string,
callback?: function,
)
Отменяет начатое сканирование и возвращает обещание, которое разрешается с помощью объекта CancelScanResponse
. Если используется обратный вызов, вместо этого ему передается объект.
Параметры
- работа
нить
Дескриптор активного задания сканирования, ранее возвращенного в результате вызова
startScan
. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: CancelScanResponse) => void
- ответ
Возврат
Обещание < CancelScanResponse >
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
closeScanner()
chrome.documentScan.closeScanner(
scannerHandle: string,
callback?: function,
)
Закрывает сканер с переданным дескриптором и возвращает обещание, которое разрешается с помощью объекта CloseScannerResponse
. Если используется обратный вызов, вместо этого ему передается объект. Даже если ответ не увенчался успехом, предоставленный дескриптор становится недействительным и не должен использоваться для дальнейших операций.
Параметры
- сканерРучка
нить
Указывает дескриптор открытого сканера, который ранее был возвращен в результате вызова
openScanner
. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: CloseScannerResponse) => void
- ответ
Возврат
Обещание < CloseScannerResponse >
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
getOptionGroups()
chrome.documentScan.getOptionGroups(
scannerHandle: string,
callback?: function,
)
Получает имена групп и параметры участников со сканера, ранее открытого openScanner
. Этот метод возвращает обещание, которое разрешается с помощью объекта GetOptionGroupsResponse
. Если этой функции передается обратный вызов, вместо этого ей передаются возвращаемые данные.
Параметры
- сканерРучка
нить
Дескриптор открытого сканера, возвращенный в результате вызова
openScanner
. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: GetOptionGroupsResponse) => void
- ответ
Возврат
Обещание < GetOptionGroupsResponse >
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
getScannerList()
chrome.documentScan.getScannerList(
filter: DeviceFilter,
callback?: function,
)
Получает список доступных сканеров и возвращает Promise, который разрешается с помощью объекта GetScannerListResponse
. Если этой функции передается обратный вызов, вместо этого ей передаются возвращаемые данные.
Параметры
- фильтр
DeviceFilter
, указывающий, какие типы сканеров следует вернуть. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: GetScannerListResponse) => void
- ответ
Возврат
Обещание < GetScannerListResponse >
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
openScanner()
chrome.documentScan.openScanner(
scannerId: string,
callback?: function,
)
Открывает сканер для монопольного доступа и возвращает обещание, которое разрешается с помощью объекта OpenScannerResponse
. Если этой функции передается обратный вызов, вместо этого ей передаются возвращаемые данные.
Параметры
- идентификатор сканера
нить
Идентификатор открываемого сканера. Это значение возвращается из предыдущего вызова
getScannerList
. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: OpenScannerResponse) => void
- ответ
Возврат
Обещание< OpenScannerResponse >
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
readScanData()
chrome.documentScan.readScanData(
job: string,
callback?: function,
)
Считывает следующий фрагмент доступных данных изображения из активного дескриптора задания и возвращает Promise, который разрешается с помощью объекта ReadScanDataResponse
. Если используется обратный вызов, вместо этого ему передается объект.
**Примечание.**Действительно, что результатом ответа будет SUCCESS
с элементом data
нулевой длины. Это означает, что сканер все еще работает, но дополнительные данные еще не готовы. Вызывающему абоненту следует подождать некоторое время и повторить попытку.
Когда задание сканирования завершится, ответ будет иметь значение результата EOF
. Этот ответ может содержать последний ненулевой элемент data
.
Параметры
- работа
нить
Дескриптор активного задания, ранее возвращенный из
startScan
. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: ReadScanDataResponse) => void
- ответ
Возврат
Обещание <ReadScanDataResponse>
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
scan()
chrome.documentScan.scan(
options: ScanOptions,
callback?: function,
)
Выполняет сканирование документа и возвращает обещание, которое разрешается с помощью объекта ScanResults
. Если этой функции передается обратный вызов, вместо этого ей передаются возвращаемые данные.
Параметры
- параметры
Объект, содержащий параметры сканирования.
- перезвонить
функция необязательна
Параметр
callback
выглядит так:(result: ScanResults) => void
- результат
Возврат
Обещание< Результаты сканирования >
Хром 96+Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
setOptions()
chrome.documentScan.setOptions(
scannerHandle: string,
options: OptionSetting[],
callback?: function,
)
Устанавливает параметры для указанного сканера и возвращает Promise, который разрешается с помощью объекта SetOptionsResponse
, содержащего результат попытки установить каждое значение в порядке переданного объекта OptionSetting
. Если используется обратный вызов, вместо этого ему передается объект.
Параметры
- сканерРучка
нить
Ручка сканера для настройки параметров. Это должно быть значение, ранее возвращенное при вызове
openScanner
. - параметры
Список объектов
OptionSetting
, которые будут применены к сканеру. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: SetOptionsResponse) => void
- ответ
Возврат
Обещание < SetOptionsResponse >
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.
startScan()
chrome.documentScan.startScan(
scannerHandle: string,
options: StartScanOptions,
callback?: function,
)
Запускает сканирование на указанном сканере и возвращает Promise, который разрешается с помощью StartScanResponse
. Если используется обратный вызов, вместо этого ему передается объект. Если вызов прошел успешно, ответ включает дескриптор задания, который можно использовать в последующих вызовах для чтения данных сканирования или отмены сканирования.
Параметры
- сканерРучка
нить
Ручка открытого сканера. Это должно быть значение, ранее возвращенное при вызове
openScanner
. - параметры
Объект
StartScanOptions
, указывающий параметры, которые будут использоваться для сканирования. СвойствоStartScanOptions.format
должно соответствовать одной из записей, возвращаемых вScannerInfo
сканера. - перезвонить
функция необязательна
Параметр
callback
выглядит так:(response: StartScanResponse) => void
- ответ
Возврат
Обещание < StartScanResponse >
Промисы поддерживаются в Манифесте V3 и более поздних версиях, но обратные вызовы предусмотрены для обратной совместимости. Вы не можете использовать оба при одном вызове функции. Промис разрешается с тем же типом, который передается в обратный вызов.