Главная | Загрузить | Регистрация | Отзывы | Тех.поддержка | О нас English version   Deutsche Version   Русская версия   Português versião   Española versión   Version francaise


VintaSoftTwain.NET Library    Информация Инфо  Лицензионное соглашение Лицензия  FAQ FAQ  Примеры Примеры  Загрузить Загрузить  Купить Купить



Основные вопросы:
  • Для каких целей могу я использовать библиотеку?
  • Что включает в себя библиотека?
  • В каких языках программирования могу я использовать библиотеку?
  • Какие ограничения имеет незарегистрированная версия библиотеки?
  • Я не нашел ответа на свой вопрос. Что мне делать?

  • Распространение:
  • Какие файлы мне нужно включать в дистрибутив моей программы?
  • Могу я распространять VintaSoft.Twain компонент вместе с моим приложением без какой либо дополнительной оплаты?

  • Вопросы по программированию:
  • Как мне добавить VintaSoft.Twain компонент на форму моего .NET приложения?
  • Как мне получить черно-белые изображения (документы)?
  • Могу ли я управлять лотком автоматической подачи документов без пользовательского интерфейса?
  • Могу ли я управлять лотком автоматической подачи документов без пользовательского интерфейса и не используя событие PostScan?
  • Мне нужно отсканировать только часть изображения. Как это сделать?
  • Могу ли я выбрать нужное мне устройство без стандартного диалога выбора устройства?
  • Как мне отключить окно индикатора процесса сканирования при получении изображений без пользовательского интерфейса?
  • Я хочу создать собственный индикатор процесса сканирования. Возможно ли это?
  • Как мне установить разное разрешение для оси X и Y во время сканирования изображений?
  • Я хочу запустить процесс сканирования в отдельном потоке. Возможно ли это?
  • Наша организация испрользует сетевой сканер с автоматической подачей листов (ADF) и мы обрабатываем множество документов каждый день. Как мы можем автоматизировать нашу работу? Хотелось бы сохранять каждый документ в отдельном файле.
  • Могу я использовать patch-коды для разделения пакетных заданий? Если да, как мне определить конец пакетного задания?
  • Я хочу сохранить приобретенные изображения в своем буфере для последующей их обработки. Как мне это сделать?
  • Когда я использую сканер HP ScanJet теряется пол дюйма в верхней части изображения и добавляется черный прямоугольник высотой в пол дюйма в нижней части изображения. Почему?

  • Веб установка:
  • Какие шаги мне нужно выполнить чтобы добавить библиотеку к моему интернет проекту?
  • Я хочу создать скрипт на моем веб сервере, который будут использовать пользователи для автоматической установки необходимых параметров безопасности .NET Framework на компьютере пользователя. Могу я это сделать?
  • Я получил сообщение "Your .NET Framework Security settings must be configured to run the components in your browser" во время запуска моего веб приложения. Что я делаю не верно?
  • Я пытаюсь выбрать устройство с помощью свойства SourceIndex в Internet Explorer, но получаю ошибку. Почему?

  • Базы данных:
  • Могу я сохранять приобретенные изображения в таблице MS SQL сервера?


  •  
    Для каких целей могу я использовать библиотеку?
    Данная библиотека может использоваться для управления работой сканеров, цифровых и веб камер и любых других устройств, которые поддерживают TWAIN стандарт.


     
    Что включает в себя библиотека?
    Библиотека включает в себя:
  • VintaSoft.Twain компонент - 100% совместимый .NET компонент (файл VintaSoft.Twain.dll)
  • Документацию в формате MS Help Workshop (файл VintaSoft.Twain.chm)
  • Примеры для MS Visual Basic.NET, MS Visual C#, Borland Delphi 8.0, Borland C# Builder, ASP.NET
  •     (каталог Examples)


     
    В каких языках программирования могу я использовать библиотеку?
    Лицензия разработчика и лицензия для компании позволяют использовать компонент в:
  • Microsoft Visual Studio .NET : Visual Basic, Visual C#, Visual C++, Visual J#
  • Borland Delphi 8.0, Borland C# Builder, Borland C++ BuilderX
  • любых языках программирования и приложениях, совместимых с .NET технологией.

  • Лицензия для сервера позволяет использовать компонент в:
  • Internet Explorer : ASP.NET, JavaScript, VBScript


  •  
    Какие ограничения имеет незарегистрированная версия библиотеки?
    Ограничения незарегистрированной версии библиотеки:
  • будет показано окно "О программе" при каждом сканировании изображений

  • любое изображение может быть сохранено на диск или загружено на сервер как BMP файл

  • только черно-белое или серое изображение может быть сохранено на диск или загружено на сервер как JPEG или TIFF файл


  • Все эти ограничения удалены в зарегистрированной версии библиотеки.


     
    Я не нашел ответа на свой вопрос. Что мне делать?
    Информация по большинству вопросов может быть найдена в документации или в этом FAQ.
    Если Вы не нашли ответа на свой вопрос, тогда напишите письмо в службу технической поддержки.


     
    Какие файлы мне нужно включать в дистрибутив моей программы?
    Вам нужно включить в дистрибутив Вашей программы только один файл: VintaSoft.Twain.dll.
    При установке Вашей программы этот файл должен быть помещен в каталог на который была ссылка при компиляции программы.


     
    Могу я распространять VintaSoft.Twain компонент вместе с моим приложением без какой либо дополнительной оплаты?
    Да, Вы можете распространять компонент вместе со своим приложением. Вы платите только за первоначальную регистрацию. Лицензия для компании и для сервера не имеют ограничений в распространении.
    Лицензия разработчика имеет некоторые ограничения в распространении. Пожалуйста смотрите лицензионное соглашение.


     
    Как мне добавить VintaSoft.Twain компонент на форму моего приложения?
    Чтобы добавить VintaSoft.Twain компонент на форму необходимо выполнить следующее:
  • Открыть Ваш проект в Visual Studio .NET
  • Открыть нужную форму
  • Открыть панель "Toolbox"
  • Нажать правую кнопку мыши на панели "Toolbox"
  • Выбрать пункт меню "Customize Toolbox..." из появившегося меню
  • Открыть закладку .NET Framework Components
  • Нажать кнопку "Browse..." и выбрать файл VintaSoft.Twain.dll
  • Найти и отметить VintaSoft.Twain компонент
  • Закрыть окно нажав кнопку "Ok"
  • Найти и выбрать на панели "Toolbox" объект VintaSoft.Twain
  • Поместить VintaSoft.Twain компонент на форму



  •  
    Как мне получить черно-белые изображения (документы)?
    Вот пример кода для получения черно-белых изображений:
      Private Sub StartScan()
          Try
              VSTwain1.StartDevice
              If VSTwain1.SelectSource Then
                  VSTwain1.OpenDataSource
                  VSTwain1.PixelType = PixelType.BW
                  VSTwain1.Acquire
              End If
          Catch ex As TwainException
              MsgBox(ex.Message)
          End Try
      End Sub
    

     
    Могу ли я управлять лотком автоматической подачи документов без пользовательского интерфейса?
    Вот пример показывающий как можно управлять работой сканера с лотком автоматической подачи документов без пользовательского интерфейса:
      Private Sub StartScanButton_Click(ByVal sender As Object, _
                           ByVal e As System.EventArgs) _
                           Handles StartScanButton.Click
          Try
              VSTwain1.StartDevice()
              VSTwain1.SelectSource()
              VSTwain1.ShowUI = false
              VSTwain1.DisableAfterAcquire = true
              VSTwain1.MaxImages = 1
              VSTwain1.AutoCleanBuffer = true
              VSTwain1.OpenDataSource()
              VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
              VSTwain1.PixelType = PixelType.RGB
              VSTwain1.Resolution = 200
              VSTwain1.TiffMultiPage = true
              VSTwain1.TiffCompression = TiffCompression.Auto
              If VSTwain1.Duplex <> DuplexMode.None Then
                  VSTwain1.DuplexEnabled = true
              End If
              If VSTwain1.FeederPresent Then
                  VSTwain1.FeederEnabled = true
                  VSTwain1.AutoFeed = true
                  VSTwain1.XferCount = -1
                  If VSTwain1.FeederLoaded Then
                      VSTwain1.Acquire()
                  Endif
              Endif
          Catch ex As TwainException
              MsgBox(ex.Message)
          End Try
      End Sub
    
      Private Sub VSTwain1_ImageAcquired(ByVal sender As Object, _
                           ByVal e As System.EventArgs) _
                           Handles VSTwain1.ImageAcquired
          Try
              VStwain1.SaveImage(0,"c:\test.tiff")
          Catch ex As ImagingException
              MsgBox(ex.Message)
          End Try
      End Sub
      
      Private Sub VSTwain1_ScanCompleted(ByVal sender As Object, _
                           ByVal e As System.EventArgs) _
                           Handles VSTwain1.ScanCompleted
          If VSTwain1.ErrorCode <> ErrorCode.None Then
              MsgBox(VSTwain1.ErrorString)
          Else
              MsgBox("Scan process is completed.")
          End If
      End Sub
    

     
    Могу ли я управлять лотком автоматической подачи документов без пользовательского интерфейса и не используя событие PostScan?
    Вот пример показывающий как можно управлять работой сканера с лотком автоматической подачи документов без пользовательского интерфейса и без использования события PostScan:
      Private Sub StartScanButton_Click(ByVal sender As Object, _
                           ByVal e As System.EventArgs) _
                           Handles StartScanButton.Click
          Try
              VSTwain1.StartDevice()
              VSTwain1.SelectSource()
              VSTwain1.ShowUI = false
              VSTwain1.DisableAfterAcquire = true
              VSTwain1.MaxImages = 1
              VSTwain1.AutoCleanBuffer = true
              VSTwain1.OpenDataSource()
              VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
              VSTwain1.PixelType = PixelType.RGB
              VSTwain1.Resolution = 200
              VSTwain1.TiffMultiPage = true
              VSTwain1.TiffCompression = TiffCompression.Auto
              If VSTwain1.Duplex <> DuplexMode.None Then
                  VSTwain1.DuplexEnabled = true   ' enable duplex
              End If
              If VSTwain1.FeederPresent Then
                  VSTwain1.FeederEnabled = true
                  VSTwain1.AutoFeed = true
                  VSTwain1.XferCount = -1
                  If VSTwain1.FeederLoaded Then
                      While VSTwain1.AcquireModal()
                          Try
                              VStwain1.SaveImage(0,"c:\test.tiff")
                          Catch ex As TwainException
                              MsgBox(ex.Message)
                          End Try
                      End While
                      VSTwain1.StopDevice()
                      MsgBox "Scan completed."
                  Endif
              Endif
          Catch ex As TwainException
              MsgBox(ex.Message)
          End Try
      End Sub
    

     
    Мне нужно отсканировать только часть изображения. Как это сделать?
    Используйте следующий код чтобы получить часть изображения ограниченную прямоугольником (0.5,0.5) - (6,8):
      VSTwain1.StartDevice()
      VSTwain1.ShowUI = False
      VSTwain1.OpenDataSource()
      .............
      VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
      VSTwain1.SetImageLayout(0.5,0.5,6,8)
      VSTwain1.Acquire()
    

     
    Могу ли я выбрать нужное мне устройство без стандартного диалога выбора устройства?
    Да. Можно использовать следующий код для нумерации устройств:
      VSTwain1.StartDevice
      For i = 0 To (VSTwain1.SourcesCount - 1)
         MsgBox VSTwain1.GetSourceProductName(i)
      Next
    
    А этот код для выбора первого устройства:
      VSTwain1.StartDevice
      VSTwain1.SourceIndex = 0
      .....
      VSTwain1.Acquire
    
    Хотя самый лучший вариант следующий:
      VSTwain1.StartDevice
      For i = 0 To (VSTwain1.SourcesCount - 1)
         If VSTwain1.GetSourceProductName(i) = "Your device name" Then
           VSTwain1.SourceIndex = i
           Exit For
        End If
      Next
      .....
    
    В этом случае необходимо знать правильное название устройства.


     
    Как мне отключить окно индикатора процесса сканирования при получении изображений без пользовательского интерфейса?
    Стандарт TWAIN позволяет отключать окно индикатора процесса сканирования, если пользовательский интерфейс не используется (ShowUI=False). Это можно сделать следующим образом:
      VSTwain1.StartDevice
      VSTwain1.ShowUI = false
      VSTwain1.DisableAfterAcquire = true
      VSTwain1.MaxImages = 1
      VSTwain1.OpenDataSource
      VSTwain1.ShowIndicators = 0    ' не показывать окно индикатора
      VSTwain1.Acquire
    


     
    Я хочу создать собственный индикатор процесса сканирования. Возможно ли это?
    Да, это возможно, если изображение передается от сканера к приложению через память (Memory transfer). Для создания своего индикатора процесса сканирования необходимо использовать событие Progress, вот пример:
      Private Sub VSTwain1_ImageProcessingProgress(ByVal sender As Object, _
                           ByVal e As VintaSoft.Twain.ProgressEventArgs) _
                           Handles VSTwain1.Progress
          If e.action = Action.Deskew Then
            txtAction.Text = "Deskewing..."
          ElseIf e.action = Action.Despecle Then
            txtAction.Text = "Despeckling..."
          ElseIf e.action = Action.BorderDetection Then
            txtAction.Text = "Border detecting..."
          ElseIf e.action = Action.Rotation Then
            txtAction.Text = "Rotating..."
          ElseIf e.action = Action.ImageScan Then
            txtAction.Text = "Image scan..."
          ElseIf e.action = Action.ImageSaving Then
            txtAction.Text = "Saving image to PDF document..."
          End If
          progressBar1.Value = e.percentComplete
          e.interrupt = bFinishFlag
      End Sub

     
    Как мне установить разное разрешение для оси X и Y во время сканирования изображений?
    Вот пример в котором разрешение по оси X устанавливается равным 4800 dpi, а по оси Y равным 9600 dpi:
      VSTwain1.StartDevice
      VSTwain1.ShowUI = false
      VSTwain1.DisableAfterAcquire = true
      VSTwain1.MaxImages = 1
      VSTwain1.OpenDataSource
      VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
      VSTwain1.Capability = Capability.IXResolution
      VSTwain1.CapType = CapType.OneValue
      VSTwain1.CapValue = 4800     ' 4800 dpi
      VSTwain1.SetCap
      VSTwain1.Capability = Capability.IYResolution
      VSTwain1.CapType = CapType.OneValue
      VSTwain1.CapValue = 9600     ' 9600 dpi
      VSTwain1.SetCap
      VSTwain1.Acquire
    

     
    Я хочу запустить процесс сканирования в отдельном потоке. Возможно ли это?
    Да, это возможно, если использовать метод AcquireModal, вот пример для C#:
      .....
      public class Form1 : System.Windows.Forms.Form
      {
        private VSTwain twain=null;
    
        .....
    
        private void buttonScanASync_Click(object sender, System.EventArgs e)
        {
          ThreadStart ts = new ThreadStart(this.doScanning);
          Thread t = new Thread(ts);
          t.Name = "Scan-Thread";
          t.Start();
        }
    
        private void doScanning()
        {
          twain = new VSTwain();
          try
          { 
            twain.StartDevice();
            twain.ShowUI = false;
            if (twain.SelectSource())
            {
              while (twain.AcquireModal())
              {
                pictureBox.Image = twain.GetCurrentImage();
              }
            }
            twain.StopDevice();
          }
          catch (TwainException ex)
          {
            MessageBox.Show(ex.Message);
          }
        }
        .....
      }
      .....
    

     
    Наша организация испрользует сетевой сканер с автоматической подачей листов (ADF) и мы обрабатываем множество документов каждый день. Как мы можем автоматизировать нашу работу? Хотелось бы сохранять каждый документ в отдельном файле.
    Вы можете использовать пустую страницу как разделитель документов и определять пустые страницы с помощью метода IsBlankPage. Вот пример:
      Dim documentsCounter as Integer
    
      ............
      documentsCounter = 0
      ............
    
      Private Sub StartScan()
          Try
              VSTwain1.StartDevice()
              If VSTwain1.SelectSource() = 1 Then
                  VSTwain1.ShowUI = false        
                  VSTwain1.DisableAfterAcquire = true
                  VSTwain1.MaxImages = 1
                  VSTwain1.AutoCleanBuffer = true
                  VSTwain1.TiffMultiPage = true          
                  VSTwain1.TiffCompression = TiffCompression.Auto
                  VSTwain1.OpenDataSource()
                  VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
                  VSTwain1.PixelType = PixelType.GRAY
                  VSTwain1.Resolution = 200             ' 200 dpi
                  If VSTwain1.Duplex <> DuplexMode.None Then
                      VSTwain1.DuplexEnabled = true   
                  End If
                  If VSTwain1.FeederPresent Then
                      VSTwain1.XferCount = -1
                      VSTwain1.FeederEnabled = true
                      VSTwain1.AutoFeed = true
                      If VSTwain1.FeederLoaded Then
                          VSTwain1.Acquire()
                      End If
                  End If
              End If
          Catch ex As TwainException
              MsgBox(ex.Message)
          End Try
      End Sub
    
      Private Sub VSTwain1_ImageAcquired(ByVal sender As Object, _
                           ByVal e As System.EventArgs) _
                           Handles VSTwain1.ImageAcquired
          If VSTwain1.IsBlankImage(0) Then              ' check the first image (page)
              documentsCounter = documentsCounter + 1
          End If
          Try
              VStwain1.SaveImage(0,"c:\documents\doc"+Str(documentsCounter)+".pdf")
          Catch ex As PdfException
              MsgBox(ex.Message)
          End Try
      End Sub
      
      Private Sub VSTwain1_ScanCompleted(ByVal sender As Object, _
                           ByVal e As System.EventArgs) _
                           Handles VSTwain1.ScanCompleted
          If VSTwain1.ErrorCode <> ErrorCode.None Then
              MsgBox(VSTwain1.ErrorString)
          Else
              MsgBox("Scan process is completed.")
          End If
      End Sub
    

     
    Могу я использовать patch-коды для разделения пакетных заданий? Если да, как мне определить конец пакетного задания?
    Вы можете разделять пакетные задания, если будете использовать возможность CAP_JOBCONTROL.
    Вот пример для Visual Basic .NET:
      Dim jobsCounter As Integer
      
      Private Sub Form_Load()
        jobsCounter = -1
      End Sub
      
      Private Sub Scan_Click()
        VSTwain1.StartDevice
        VSTwain1.MaxImages = 1
        VSTwain1.ShowUI = false
        VSTwain1.DisableAfterAcquire = true
        VSTwain1.TiffMultiPage = true
        VSTwain1.OpenDataSource
        ' 1 - Detect and include job separator and continue scanning.
        ' 3 - Detect and exclude job separator and continue scanning.
        VSTwain1.JobControl = 1
        jobsCounter = jobsCounter + 1
        VSTwain1.Acquire
      End Sub
      
      Private Sub VSTwain1_PostScan(ByVal sender As System.Object,
               ByVal e As VintaSoft.Twain.PostScanEventArgs) Handles VSTwain1.PostScan
        If Not e.Flag Then
          If VSTwain1.ErrorCode <> 0 Then
            MsgBox(VSTwain1.ErrorString)
          End If
        Else
          If VSTwain1.EndOfJob Then
            jobsCounter = jobsCounter + 1
          Else
            VSTwain1.SaveImage 0, "c:\job"+jobsCounter.ToString()+".tif"
          End If
        End If
      End Sub
      .....
    

     
    Я хочу сохранить приобретенные изображения в своем буфере для последующей их обработки. Как мне это сделать?
    Если Вы хотите сохранить приобретенное изображение в собственном буфере (например в объекте Collection в VB.NET), тогда Вы должны создать полную копию объекта Image возвращаемую методом GetImage, и поместить ее в Ваш буфер. Нельзя напрямую помещать объект возвращаемый функцией GetImage в буфер, потому что этот объект будет разрушен когда Вы приобретете новое изображение или когда Вы вызовете метод StopDevice.

    Вот правильный код:
      ...
      Dim colDocumentPages As New Collection
      ...
      Dim picNewPage As Image = New Bitmap(vnsScanner.GetCurrentImage)
      colDocumentPages.Add(picNewPage)
      ...
    
    А вот не правильный код:
      ...
      Dim colDocumentPages As New Collection
      ...
      Dim picNewPage As Image
      picNewPage = vnsScanner.GetCurrentImage
      colDocumentPages.Add(picNewPage)
      ...
    

     
    Когда я использую сканер HP ScanJet теряется пол дюйма в верхней части изображения и добавляется черный прямоугольник высотой в пол дюйма в нижней части изображения. Почему?
    Для решения этой проблемы Вам нужно изменить значение свойства PageSize с A4 на USLETTER.


     
    Какие шаги мне нужно выполнить чтобы добавить библиотеку к моему интернет проекту?
    Вы должны выполнить следующие действия на стороне сервера:
    1. Поместить файл VintaSoft.Twain.dll на сервер.
    2. Использовать следующий код на Вашей веб странице:
        <OBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1 
                CLASSID="http://your-server/path-on-server/
                         VintaSoft.Twain.dll#VintaSoft.Twain.VSTwain" CODEBASE="http://your-server/path-on-server/
                          VintaSoft.Twain.dll#version=4,0,0,1"> </OBJECT>
      Правильный номер версии очень важен!
    3. Все (Everyone) должны иметь права на запись в директорию на сервере в которой будут храниться загруженные изображения.

    Вы должны выполнить следующие действия на стороне клиента:
    1. Должна быть установлена версия .NET Framework 1.0 или выше.
    2. Нужно использовать Internet Explorer 6.0 или выше.
    3. Ваш сайт должен быть помечен как безопасный в .NET Framework.
      Это можно сделать следующим образом:
      1. Открыть конфигуратор Microsoft .NET Framework из "Control Panel | Administrative Tools"
      2. Выбрать "Runtime Security Policy | Machine | Code Groups | All_Code"
      3. Нажать правую кнопку на пункте "All_Code" и выбрать "New",чтобы создать новую кодовую группу
      4. Ввести название кодовой группы, например My_Web_Site, нажать кнопку "Далее"
      5. Выбрать условие "Site" для кодовой группы
      6. Указать "my_web_site.ru" как имя сервера, нажать кнопку "Далее"
      7. Установить полный доступ (Full Trust) для кодовой группы
      Для более подробной информации о безопасности .NET Framework, пожалуйста читайте данную статью из MSDN.


     
    Я хочу создать скрипт на моем веб сервере, который будут использовать пользователи для автоматической установки необходимых параметров безопасности .NET Framework на компьютере пользователя. Могу я это сделать?
    Вы должны создать скрипт, который будет запускать следующую команду:

        caspol.exe -q -machine -addgroup All_Code -site www.my-company.com FullTrust
                        -name VSTwain_MyCompany_Site
                        -description "This permission set grants the right to use VSTwain object on www.my-company.com."


     
    Я получил сообщение "Your .NET Framework Security settings must be configured to run the components in your browser" во время запуска моего веб приложения. Что я делаю не верно?
    Прежде всего Вы должны настроить безопасность .NET Framework как описано здесь.
    Далее Вам необходимо проверить версию VintaSoft.Twain.dll которую Вы используете (например, 4.0.0.1).
    После этого Вы должны правильно описать объект OBJECT на Вашей веб странице. Использование правильного номера версии очень важно!
    Вот пример:

      <OBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1
                     CLASSID="http://your-server/path-on-server/VintaSoft.Twain.dll#VintaSoft.Twain.VSTwain"
                     CODEBASE="http://your-server/path-on-server/VintaSoft.Twain.dll#version=4,0,0,1">
      </OBJECT>

    Это все что Вы должны сделать.


     
    Я пытаюсь выбрать устройство с помощью свойства SourceIndex в Internet Explorer, но получаю ошибку. Почему?
    Каждый объект на веб странице в Internet Explorer имеет предопределенное свойство SourceIndex - это свойство доступно только для чтения. Вы должны использовать следующий код чтобы работать с свойством SourceIndex объекта VSTwain в JavaScript или VBScript:

      VSTwain1.StartDevice()
      VSTwain1.object.SourceIndex = 1   ' второе устройство
      VSTwain1.Acquire()
    

     
    Могу я сохранять приобретенные изображения в таблице MS SQL сервера?
    Да, Вы можете это сделать, пожалуйста смотрите пример 3 здесь.




    Copyright © 2008 "ВинтаСофт". Все права защищены.