#angular #api #twain #dynamsoft
Вопрос:
Я получаю ошибку » индексы вне диапазона «от метода» convertToBlob » динамического веб-твена, я использую его для сканирования документов с помощью сканера, может ли кто-нибудь помочь?
dwObject.ConvertToBlob([0], EnumDWT_ImageType.IT_JPG, (result) => {
const data = new File([result], 'Scan.jpeg', result);
let attachmentsBlob = [];
let attachmentObject = [];
directAccess ? attachmentObject.push({ attachmentName: "Scan.jpeg", attachmentType: parentType, documentType: type }) : attachmentObject.push({ attachmentName: "Scan.jpeg", attachmentType: type });
attachmentsBlob.push(data);
this.customerAttachment(attachmentObject, attachmentsBlob).subscribe((res: any) => {
if (res['code'] === '0000') {
this.toastr.success("Attachement uploaded Successfully");
if (directAccess) {
form.patchValue(res.data[0]);
} else {
let scan = form.controls.customerAttachments.value;
scan.push(res.data[0]);
form.controls.customerAttachments.setValue(scan);
}
} else if (res['code'] === '0101') {
this.toastr.error('Error', res['data']['message']);
}
});
}, (errorCode, errorString) => {
this.toastr.error(errorString);
});
Ответ №1:
Не уверен, как вы написали свой код. Пока у вас есть отсканированные документы в памяти, у вас не возникнет этой проблемы.
Вот простой пример Dynamic Web TWAIN v17.1 (пространство имен отличается от вашего), демонстрирующий, как использовать ConvertToBlob
:
<!DOCTYPE html>
<html>
<head>
<title>Use Dynamic Web TWAIN to Scan</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js"></script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js"></script>
</head>
<body>
<select size="1" id="source" style="position: relative; width: 220px;"></select>
<input type="button" value="Scan" onclick="AcquireImage();" />
<div id="dwtcontrolContainer"></div>
<script type="text/javascript">
Dynamsoft.DWT.RegisterEvent('OnWebTwainReady', Dynamsoft_OnReady);
var DWObject;
function Dynamsoft_OnReady() {
DWObject = Dynamsoft.DWT.GetWebTwain('dwtcontrolContainer');
if (DWObject) {
var count = DWObject.SourceCount;
for (var i = 0; i < count; i )
document.getElementById("source").options.add(new Option(DWObject.GetSourceNameItems(i), i));
}
}
function AcquireImage() {
if (DWObject) {
var OnAcquireImageSuccess = function () {
DWObject.ConvertToBlob([0], Dynamsoft.DWT.EnumDWT_ImageType.IT_JPG, (result) => {
const data = new File([result], 'Scan.jpeg', result);
console.log(data);
}, (errorCode, errorString) => {
this.toastr.error(errorString);
});
DWObject.CloseSource();
};
DWObject.SelectSourceByIndex(document.getElementById("source").selectedIndex);
DWObject.OpenSource();
DWObject.IfDisableSourceAfterAcquire = true;
DWObject.AcquireImage(OnAcquireImageSuccess, () =>{});
}
}
</script>
</body>
</html>