65.9K
CodeProject 正在变化。 阅读更多。
Home

.NET 文档处理 SDK

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2012年8月2日

CPOL

3分钟阅读

viewsIcon

46026

在本文中,我将向您展示如何将文档处理(例如图像扫描、编辑和上传)嵌入到您的 .NET 应用程序中。

引言

理想情况下,应该使用一个全面而综合的文档处理 SDK 来处理各种扫描仪、网络摄像头和其他设备。 并且该 SDK 应该帮助您组织不同类型的文档,将其转换为数字副本并将文档存储到目标位置。Dynamic .NET TWAIN 使您能够以最灵活的方式实现上述功能。

Dynamic .NET TWAIN 与 32 位和 64 位 Windows 操作系统兼容,允许您从任何与 TWAIN、Windows Image Acquisition (WIA) 和 USB 视频设备类 (UVC) 兼容的设备获取图像。 该库针对在 C# 和 VB.NET 中使用进行了优化。 从设备或本地系统获取图像后,SDK 允许您编辑图像并将其上传到本地磁盘、FTP 站点、Web 服务器或数据库。

Dynamic .NET TWAIN 的条形码阅读器、OCR 和注释插件允许您将文档处理集成到一体。条形码阅读器 SDK 能够检测和读取扫描文档上的 1-D 和 2-D 条形码符号,例如 Code 39、Code 93、Code 128、EAN-8、EAN-13、ITF、UPC-A、UPC-E、Codabar、RSS-14Aztec、DataMatrix、PDF417 和 QR 码。OCR 插件 准确地执行光学字符识别 (OCR) 并将文档转换为可搜索的 PDF/文本文件。 该 SDK 支持识别 40 多种语言,包括英语、西班牙语、阿拉伯语、中文等。 如果您想试用,可以获得 30 天的免费试用期。

主要特点

  • 与 Windows 操作系统(32 位和 64 位)兼容
  • 从扫描仪、相机和与其他 TWAIN、WIA 或 UVC 兼容的设备捕获图像。
  • 从网络摄像头捕获实时视频流。
  • 从您的本地文件夹、Web 服务器和/或数据库加载/下载图像。

  • 支持自动文档进纸器 (ADF) 和批量扫描。
  • 支持设置和读取设备功能,例如亮度、分辨率、对比度、像素类型、双面打印等。
  • 支持存储和恢复默认扫描设置。

  • 编辑扫描的图像,例如旋转、镜像、翻转、裁剪、擦除等。
  • 放大/缩小选定的图像。
  • 支持注释。 将文本、线条、椭圆或矩形添加到扫描的文档。
  • 将扫描的图像转换为可搜索的 PDF/文本文件。
  • 检测和解码 1-D 和 2D 条形码符号。

  • 将扫描的文档上传到您的本地文件夹、Web 服务器、FTP 站点和/或数据库。
  • 支持 BMP、PNG、JPEG、TIFF 和 PDF。 也支持多页 TIFF 和 PDF。
  • 支持 SSL 以保护图像数据传输。

示例代码

  1. 从您的设备捕获图像。 通过提供的一组丰富的属性,整个扫描过程是可定制的,例如是否显示所选源的用户界面、双面扫描、分辨率等。
    private void AcquireImage()
    {
    //select source     dynamicDotNetTwain.SelectSourceByIndex(Convert.ToInt16(cmbSource.SelectedIndex)); 
           dynamicDotNetTwain.OpenSource();
           dynamicDotNetTwain.IfDisableSourceAfterAcquire = true;
     
           //set the resolution
           dynamicDotNetTwain.Resolution = 300; 
           //set whether to show the user interface of the source
           dynamicDotNetTwain.IfShowUI = chkIfShowUI.Checked;  
           dynamicDotNetTwain.IfFeederEnabled = chkIfUseADF.Checked;
           dynamicDotNetTwain.IfAutoFeed = chkIfUseADF.Checked;
           dynamicDotNetTwain.IfDuplexEnabled = chkDuplex.Checked; 
           if ((dynamicDotNetTwain.Duplex == 0) && (chkDuplex.Checked == true))
           {
               string errorstr = "Current source does not support duplex scan.";
               errorstr += "\r\n";
               txtErrorString.Text = txtErrorString.Text + errorstr;
               chkDuplex.Checked = false;
           }
     
           dynamicDotNetTwain.AcquireImage(); //capture image(s) 
    }
  2. 设置图像布局。
    dynamicDotNetTwain.SelectSource();
    //make dynamicDotNetTwain ready for capability negotiation
    dynamicDotNetTwain.OpenSource();  
           
    //set the image layout                   
    if (dynamicDotNetTwain.SetImageLayout(fFrameLeft,fFrameTop,fFrameRight,fFrameBottom) == false) 
    MessageBox.Show(dynamicDotNetTwain.ErrorString, "Error");
     
    dynamicDotNetTwain.IfShowUI = false;
    dynamicDotNetTwain.IfDisableSourceAfterAcquire = true;
    dynamicDotNetTwain.EnableSource();
  3. 设置查看模式。 您可以创建两个控件,一个用于缩略图,另一个用于查看/编辑。
    dynamicDotNetTwainThum.MouseShape = true;
    //set the max number of images can be hold in the control
    dynamicDotNetTwainThum.MaxImagesInBuffer = 100; 
    //set the view mode of the thumbnail. 
    dynamicDotNetTwainThum.SetViewMode(1,3);
     
    dynamicDotNetTwainView.MaxImagesInBuffer = 1;
    dynamicDotNetTwainView.SetViewMode(-1,-1);
    dynamicDotNetTwainView.IfFitWindow = true;
    dynamicDotNetTwainView.MouseShape = false;
  4. 将扫描的图像保存到您的本地文件夹。 除了下面示例代码中显示的 PDF 之外,还支持其他格式,包括 BMP、JPEG、PNG 和 TIFF。 您还可以将图像上传到您的 Web 服务器和数据库。
    private void TrySavingFile(string fileName)
    {
           if (AlreadyAddedFile(fileName))
           {
                MessageBox.Show("Can't save over one of the source files.");
           }
           else
           {
                //save all scanned images as a multi-page PDF file
                this.dynamicDotNetTwain1.SaveAllAsPDF(fileName); 
           }
    }
  5. 从扫描的文档中读取条形码信息。
    this.textBox1.Text = "";
    Result[] aryResult = this.dynamicDotNetTwain1.ReadBarcode(this.dynamicDotNetTwain1.CurrentImageIndexInBuffer, BarcodeFormat.All);
    StringBuilder strText = new StringBuilder();
    strText.AppendFormat(aryResult.Length + " total barcode" + (aryResult.Length == 1 ? "" : "s") + " found.\r\n");
    for (int i = 0; i < aryResult.Length; i++)
    {
          Result objResult = aryResult[i];
          strText.AppendFormat("      Result " + (i + 1) + "\r\n");
          strText.AppendFormat("      BarcodeFormat: " + objResult.BarcodeFormat.ToString() + "\r\n");
          strText.AppendFormat("      Text read: " + objResult.Text + "\r\n");
     
    }
    this.textBox1.Text = strText.ToString();

分布式

要将应用程序分发给您的最终用户,您只需要将 DynamicDotNetTwain.dll 与您的应用程序一起分发。 DLL 文件不需要注册。

Dynamic .NET TWAIN 还支持 Xcopy 部署。

分发是免版税的。

获取示例

要亲自尝试上述功能,您可以下载 Dynamic .NET TWAIN 的 30 天免费试用版。 可以在 SDK 的安装文件夹中找到示例。
Dynamic .NET TWAIN 30 天免费试用

如果您有任何问题,可以联系我们的支持团队,邮箱地址是 nettwain@dynamsoft.com

© . All rights reserved.