Сканирование документов и считывание штрих-кода являются важнейшими частями практически любого документооборота. Получать документы со сканеров, использовать штрих-коды для разделения пакетов документов или группировать документы, а затем сохранять файлы на диск, в базу данных или библиотеку документов — типичные шаги, предпринимаемые людьми для систематизации бумажных документов.
В этой статье я приведу примеры, показывающие, как разработать приложение ASP.NET со сканированием TWAIN и чтением штрих-кода с помощью Dynamic Web TWAIN и Dynamsoft Barcode Reader SDK.
Предпосылки
Сканирование документов и распознавание штрих-кодов в ASP.NET
Вы можете считывать штрих-коды на стороне клиента или на стороне сервера с помощью пакетов SDK для обработки изображений Dynamsoft. Ниже мы покажем код для чтения штрих-кодов на стороне сервера. Если вы хотите считывать штрих-коды на стороне клиента, ознакомьтесь с разделом Как создать онлайн-приложение для сканирования штрих-кодов на JavaScript.
В Visual Studio создайте новое веб-приложение.
Добавьте в проект папку Resources в каталоге установки Dynamic Web TWAIN, которая включает файлы развертывания TWAIN SDK.
Добавьте страницу веб-формы (Default.aspx) для сканирования документов. Встроить элемент управления/плагин Dynamic Web TWAIN на страницу для отображения отсканированных изображений. Проверьте Как интегрировать Dynamic Web TWAIN в веб-страницу
Добавьте на страницу две кнопки и заполнитель dwtcontrolContainer для объекта Dynamic Web TWAIN.
<select size="1" id="source" style="position: relative; width: 220px;"></select>
<input type="button" value="Scan" onclick="AcquireImage();" />
<input type="button" value="Load" onclick="LoadImage();" />
<div id="dwtcontrolContainer"></div>
<input type="button" value="Read Barcode" onclick="UploadImage();" />
Напишите код JS, чтобы использовать Dynamic Web TWAIN для сканирования документов со сканеров.
function AcquireImage() {
if (DWObject) {
DWObject.SelectSourceByIndex(document.getElementById("source").selectedIndex);
DWObject.OpenSource();
DWObject.IfDisableSourceAfterAcquire = true; // Scanner source will be disabled/closed automatically after the scan.
DWObject.AcquireImage();
}
}
Используйте метод HTTP Post Dynamic Web TWAIN для загрузки отсканированных изображений в буфер на сервер для распознавания штрих-кода.
// OnHttpUploadSuccess is the callback function for successful uploads while OnHttpUploadFailure is for failed ones.
function OnHttpUploadSuccess() {
console.log('successful');
}
function OnHttpUploadFailure(errorCode, errorString, sHttpResponse) {
alert(sHttpResponse);
}
function UploadImage() {
if (DWObject) {
// If no image in buffer, return the function
if (DWObject.HowManyImagesInBuffer == 0)
return;
var strHTTPServer = location.hostname; //The name of the HTTP server. For example: "www.dynamsoft.com";
var CurrentPathName = unescape(location.pathname);
var CurrentPath = CurrentPathName.substring(0, CurrentPathName.lastIndexOf("/") + 1);
var strActionPage = CurrentPath + "ReadBarcode.aspx";
DWObject.IfSSL = false; // Set whether SSL is used
DWObject.HTTPPort = location.port == "" ? 80 : location.port;
var Digital = new Date();
var uploadfilename = Digital.getTime() + Digital.getMilliseconds() + ".tif"; // Uses milliseconds according to local time as the file name
//Upload image(s) to server side for barcode reading
DWObject.SetHTTPFormField('left', ileft);
DWObject.SetHTTPFormField('top', itop);
DWObject.SetHTTPFormField('right', iright);
DWObject.SetHTTPFormField('bottom', ibottom);
DWObject.HTTPUploadThroughPostAsMultiPageTIFF(strHTTPServer, strActionPage, uploadfilename, OnHttpUploadSuccess, OnHttpUploadFailure);
}
}
Создайте ReadBarcode.aspx, чтобы получать отсканированные изображения и распознавать штрих-коды на изображениях.
using Dynamsoft.Barcode;
namespace DBR_DWT_ASP.NET
{
public partial class ReadBarcode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
/***********************Save Image on Server**********************/
String strImageName;
String strleft = HttpContext.Current.Request["left"];
String strtop = HttpContext.Current.Request["top"];
String strright = HttpContext.Current.Request["right"];
String strbottom = HttpContext.Current.Request["bottom"];
HttpFileCollection files = HttpContext.Current.Request.Files;
HttpPostedFile uploadfile = files["RemoteFile"];
strImageName = uploadfile.FileName;
Rectangle rect;
strImageName = Server.MapPath("/") + "\\UploadedImages\\" + uploadfile.FileName;
uploadfile.SaveAs(strImageName);
/***********************Read Barcode Image**********************/
BarcodeReader reader = new BarcodeReader();
ReaderOptions options = new ReaderOptions();
options.MaxBarcodesToReadPerPage = 100;
//options.BarcodeFormats = (BarcodeFormat.CODE_39 | BarcodeFormat.CODE_128);
options.BarcodeFormats = BarcodeFormat.OneD;
reader.ReaderOptions = options;
reader.LicenseKeys = "0925EFE71C10001015A17857C54DA148";
BarcodeResult[] results = null;
if (System.Int32.Parse(strbottom) > 0)
{
rect = new Rectangle(System.Int32.Parse(strleft), System.Int32.Parse(strtop), System.Int32.Parse(strright) - System.Int32.Parse(strleft), System.Int32.Parse(strbottom) - System.Int32.Parse(strtop));
results = reader.DecodeFileRect(strImageName, rect);
}
else
results = reader.DecodeFile(strImageName);
strleft = ""; strtop = ""; strright = ""; strbottom = "";
if (results == null)
{
Response.Write("No Barcode Detected");
return ;
}
/**********************Return Barcode Rsults*********************/
String strResults = "Total barcode(s) found: " + results.Length.ToString() + ".\n";
for (int i = 0; i < results.Length; ++i)
{
BarcodeResult barcode = results[i];
strResults += "Barcode " + (i + 1).ToString() + ":\n";
strResults += barcode.BarcodeFormat.ToString() + "\n";
strResults += barcode.BarcodeText + "\n\n";
}
Response.Write(strResults);
}
catch
{
}
}
}
}
Вывод
Следуя этим шагам, вы легко создадите приложение для сканирования штрих-кода. Дайте мне знать, если у вас возникнут вопросы при запуске примера кода или создании собственного приложения для сканирования документов.
Первоначально опубликовано на www.dynamsoft.com 28 августа 2014 г.