1.选择扫描仪
axImgScan1.ShowSelectScanner();
2.调用扫描仪
if (axImgScan1.OpenScanner() == 0) { if (axImgScan1.ScannerAvailable() == true)//判断扫描仪是否可用 { axImgScan1.MultiPage = true;//是否多页 axImgScan1.Page = axImgScan1.PageCount + 1; axImgScan1.PageOption = PageOptionConstants.AppendPages; axImgScan1.PageCount = axImgScan1.PageCount + 1; axImgScan1.ScanTo = ScanToConstants.DisplayAndFile; axImgScan1.Scroll = true; //第一次扫前设置扫描仪属性 axImgScan1.ShowSetupBeforeScan = true;//是否在扫描前显示设置界面 if (File.Exists(imgpaths)) { File.Delete(imgpaths); } axImgScan1.Image = imgpaths; axImgScan1.FileType = ScanLibCtl.FileTypeConstants.TIFF;//设置文件类型 axImgScan1.CompressionType = ScanLibCtl.CompressionTypeConstants.PackedBits; axImgScan1.StopScanBox = true; axImgScan1.StartScan();//以文件流的形式读取图片文件并释放,以便下一次扫面前删除文件 int a = axImgScan1.StatusCode;//扫描状态 axImgScan1.StopScan(); axImgScan1.CloseScanner(); File.Delete(imgpaths); if (a != 0) { Console.WriteLine(a); Console.WriteLine("退出"); //break; } } else { MessageBox.Show("扫描仪没有正确连接,请重新设置!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
3.当扫完一页后进行的操作
首先要加监听
this.axImgScan1.PageDone += new AxScanLibCtl._DImgScanEvents_PageDoneEventHandler(AxImgScan1_PageDone);
下边是扫完当前员操作
private void AxImgScan1_PageDone(object sender, AxScanLibCtl._DImgScanEvents_PageDoneEvent e) { try { string pname = "00000000" + yh_textBox.Text; pname = pname.Substring(pname.Length - 3); if (!Directory.Exists(directorypath)) { Directory.CreateDirectory(directorypath); } string newp = directorypath + pname + ".tif"; Control.CheckForIllegalCrossThreadCalls = false; Thread yht = new Thread(setyh); //threads3.Add(t); yht.Start(); System.Drawing.Image img = System.Drawing.Image.FromFile(imgpaths); Guid guid = (Guid)img.FrameDimensionsList.GetValue(0); FrameDimension dimension = new FrameDimension(guid); int totalPage = img.GetFrameCount(dimension); img.SelectActiveFrame(dimension, e.pageNumber - 1); img.Save(newp, System.Drawing.Imaging.ImageFormat.Tiff); img.Dispose(); this.pictureBox1.ImageLocation = newp; } catch(Exception ee) { Console.WriteLine(ee); } }
所需命名空间
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using ScanLibCtl; using System.Text.RegularExpressions; using iTextSharp; using iTextSharp.text; using iTextSharp.text.pdf; using System.Threading; using Microsoft.Office.Interop.Excel; using System.Drawing.Imaging;