using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Threading; using System.Drawing.Imaging; using System.IO; using Dynamsoft.Barcode; using Dynamsoft.TWAIN; using Dynamsoft.Core; using Dynamsoft.UVC; using Dynamsoft.OCR; using Dynamsoft.PDF; using Dynamsoft.Core.Annotation; using Dynamsoft.TWAIN.Interface; using Dynamsoft.Core.Enums; using Dynamsoft.Common; using HXX.Scanner.Common; using HXX.Scanner.Biz.Socket; namespace HXX.Scanner.Biz { /* * 第三方组件,注意product key有过期的问题,倘若过期,扫描出来的图片将带有水印 */ /// /// 第三方弹出框扫描 /// public class biz_pop : IAcquireCallback { public biz_pop() { //m_StrProductKey = m_StrProductKey + ";" + LicenseLoader.ReadLocalLicense(); m_StrProductKey = "123"; m_TwainManager = new TwainManager(m_StrProductKey); } //private string m_StrProductKey = "t0068MgAAAGoy8bTO6r8g5EB109cYYCRpr5Ug/nABLQcqkWLVjqs85l2Qa7pNIa/TQDq+d9RHDc7MVYR+5AEiDrFJsUOcqlI="; private string m_StrProductKey = "123"; private TwainManager m_TwainManager = null; /// /// 主扫描方法 /// /// public void scan(int index) { m_TwainManager.CloseSource(); m_TwainManager.SelectSourceByIndex(index); m_TwainManager.OpenSource(); m_TwainManager.IfShowUI = false; m_TwainManager.IfFeederEnabled = true; m_TwainManager.IfDuplexEnabled = config_environment.scan_ab; m_TwainManager.IfDisableSourceAfterAcquire = true; m_TwainManager.XferCount = get_xferCount(); m_TwainManager.PixelType = Dynamsoft.TWAIN.Enums.TWICapPixelType.TWPT_GRAY; m_TwainManager.BitDepth = 8; m_TwainManager.Resolution = 150; m_TwainManager.AcquireImage(this as IAcquireCallback); } /// /// 主动关闭自己,方便其他TW组件再次连接 /// public void close() { try { m_TwainManager.CloseSource(); } catch (Exception ee) { LogManager.WriteLog(ee); } } public bool IfGetImageInfo { get { return true; } } public bool IfGetExtImageInfo { get { return true; } } /// /// 批次扫描结束事件 /// public void OnPostAllTransfers() { twain32_events._twain32_AcquireCompleted(null, null); } /// /// 单张扫描结束事件 /// public bool OnPostTransfer(Bitmap bit, string info) { try { var fileInfo = file_manager.get_file_info2(); var file = fileInfo.file_full_name.Replace("bmp", "jpeg"); bit.Save(file, ImageFormat.Jpeg); if (config_environment.scan_state) { biz_scanHistory.add_history(); file_manager.save(file); } } catch (Exception ex) { LogManager.WriteLog(ex); } return true; } /// /// 批次扫描开始前事件 /// public void OnPreAllTransfers() { var nn = m_TwainManager.Duplex; biz_engine_prepare.prepare(); } /// /// 单张扫描开始前事件 /// public bool OnPreTransfer() { return true; } /// /// 弹框被关闭事件 /// public void OnSourceUIClose() { } /// /// 弹框点取消后事件 /// public void OnTransferCancelled() { biz_scanHistory.end_new(); biz_scanFinishBatch.Work(2, true); //config_environment.stop_status = 2; biz_scanFinish.Work(null, new ResponseEntity() { Status = 0, Message = "扫描被中止" }); biz_scanFinishBatch.Work(7, false); biz_scanFinishBatch.Work(1, false); } /// /// 数据传输错误事件 /// public void OnTransferError() { config_environment.scan_state = false; biz_scanHistory.end_new(); biz_scanFinish.Work(null, new ResponseEntity() { Status = 0, Message = "发生错误" }); biz_scanFinishBatch.Work(3, true); } /// /// 获取扫描数量上限 1:1张 2:2张 -1:无限 /// private static short get_xferCount() { if (config_environment.scan_type == ScanType.Formal) { return -1; } else { if (config_environment.scan_ab) { return 2; } else { return 1; } } } } }