Questions

General Questions

  1. What is TWAIN?
  2. What is Dynamic Web TWAIN?
  3. Which edition(s) of Dynamic Web TWAIN should I use?
  4. Does the use of the Dynamic Web TWAIN require installation of twain drivers?
  5. For what purposes can I use Dynamic Web TWAIN?
  6. What is the main advantage of Dynamic Web TWAIN compared with other TWAIN SDKs which are also designed for web environment?
  7. Where can I obtain a test application that uses Dynamic Web TWAIN?
  8. I have problems. What should I do?
  9. What are the major differences between the Virtual Developer Service and usual customer support?
  10. How do I install Mac Edition?  

Distribution Questions

  1. Where can I find the CAB file, MSI file, or PKG file?
  2. How do I deploy Dynamic Web TWAIN on a web server?
  3. Can I deploy Dynamic Web TWAIN on Linux? If yes, how to?

Features Questions

  1. What operating systems will Dynamic Web TWAIN work with?
  2. What programming languages can Dynamic Web TWAIN ActiveX Edition work with?
  3. Does Dynamic Web TWAIN support Chrome or FireFox?
  4. Does Dynamic Web TWAIN support Database?
  5. Does Dynamic Web TWAIN support SSL?
  6. Can I use FTP upload and download with password?
  7. Does Dynamic Web TWAIN work in a class library (DLL) project?
  8. Does Dynamic Web TWAIN support Barcode Reader or OCR?
  9. Can I scan large amounts of documents?

Programming Questions

  1. How can I acquire black-white images?
  2. How can I work without User Interface?
  3. How can I scan only a part of a picture?
  4. How can I select necessary device without device selection dialog?
  5. How can I disable progress indicator dialog when I acquire images without UI?
  6. How can I set resolution in the X and Y direction separately?
  7. How can I upload acquired image to the Web server?
  8. How to use ADF? We want to save each document in a separate file.
  9. How can I work with SSL?
  10. How can I add a new scanned image to an existed multi-page TIFF file?
  11. How can I rotate an image before I save it?
  12. How can I view a specified image if there are several images in buffer?
  13. How can I do a duplex scan?
  14. How to use Dynamic Web TWAIN in Visual C++ Non-Dialog Based Applications?
  15. How can I scan an inverted image?

Troubleshooting

  1. Why do I fail to download the ActiveX control on the client machine?
  2. Why do I get the error "HTTP process error"?
  3. Why is there a watermark on the scanned images?
  4. Why do I get the error "Class not registered" in Delphi environment when I upgrade the Trial version to Full version?

Purchase and License Questions

  1. Please refer to the Purchase FAQ for more info.

Answers

General Questions

  1. What is TWAIN?

    TWAIN is a protocol and Application Programming Interface (API) that standardizes communication between an application and image acquisition devices such as scanners and digital cameras. This standard allows a developer to make standard calls to any image acquisition device that supports TWAIN. Thus the application would not have to be rewritten to support every device. TWAIN has been in existence since 1992 and is governed by the TWAIN Working Group.

  2. What is Dynamic Web TWAIN?

    Dynamic Web TWAIN is a TWAIN-based scanning SDK specifically designed for web applications. It enables you to acquire images from any TWAIN compatible devices.

    With the carefully designed interface, and the built-in wizard mode, Dynamic Web TWAIN is very easy to use. You can typically do your TWAIN job in several lines of code. At the same time, Dynamic Web TWAIN is very powerful. It is compatible with TWAIN specification V2.1. It has built-in JPEG encoder and decoder. It supports all three image transfer modes and many other features.

    Dynamic Web TWAIN has many features specifically designed for the web environment, such as uploading and downloading images through FTP or HTTP protocol.

  3. Which edition of Dynamic Web TWAIN should I use?

    Dynamic Web TWAIN has four editions: ActiveX, HTML5, Plugin and Mac Edition.

    • ActiveX Edition works as an ActiveX control in IE (32-bit and 64-bit) on Windows;
    • Plugin Edition works with NPAPI compatible Firefox, Chrome, Safari, Opera, and etc. on Windows;
    • HTML5 Edition works with Chrome and Firefox V27+ on Windows;
    • Mac Edition works with Firefox, Chrome, Safari and Opera on Mac OS X.

    See the edition comparison chart to learn more details >>

  4. Does the use of the Dynamic Web TWAIN require installation of TWAIN drivers?

    Yes. Dynamic Web TWAIN communicates with the TWAIN driver of a device (scanner/camera/capture card/etc.) to control it to acquire and transfer images, so the driver needs to be installed on client machines.

  5. For what purposes can I use Dynamic Web TWAIN?

    Dynamic Web TWAIN can be used for controlling any work of scanners, digital cameras and any other devices which supports the TWAIN standard. Dynamic Web TWAIN can upload and download images through FTP or HTTP protocol. Proxy is supported.

    Also, you can use Dynamic Web TWAIN with any COM-compatible development tools, such as VB, VC, C#, VB.NET, and Delphi.

  6. What is the main advantage of Dynamic Web TWAIN when compared with other TWAIN SDK which is also designed for web environment?

    The main advantage of Dynamic Web TWAIN is that Dynamic Web TWAIN is a TRUE web scanning solution.

    It is compatible with Internet Explorer, Chrome, Firefox and other browsers.

    It is flexible and very small. Absolutely no supporting DLL is needed for distribution.

    It can be used to upload and download image through HTTP and FTP.

    It supports TIFF, JPEG, PDF and PNG compression.

  7. Where can I obtain a test application that uses Dynamic Web TWAIN?

    You can get samples of Dynamic Web TWAIN from our sample gallery.

    You can also find some basic samples with source code after installing the Dynamic Web TWAIN trial version.

  8. I have problems. What should I do?

    The information on most of questions can be found in the documentation or in this FAQ.

    Our Knowledge Base system and online documentation is always a good place for issue checking. If you can't find an answer there, please email us at support@dynamsoft.com.

  9. What are the major differences between the Virtual Developer Service and standard customer support?
    • With the Virtual Developer Service, we communicate with you closely, analyze your requirements, propose tech solutions, and write the code, help you integrate the code in your project, do the test and maintenance.
    • With standard customer support, you usually need a developer working on the TWAIN module who would then ask questions to our technical support team. With the Virtual Developer Service, you do not need a developer working on the TWAIN module and our developers participate in your project as a team member.
  10. How to install Mac edition?

    Please refer to 'How to install Dynamic Web TWAIN Mac Edition for web application end users?'.

Deployment Questions:

  1. Where can I find the CAB file, the MSI file, or the PKG file?

    These files can be found under the \Resources\ folder in the installation directory of Dynamic Web TWAIN.

  2. How to deploy Dynamic Web TWAIN on Web server?

    please refer to Deploying Dynamic Web TWAIN on Web Server for more info.

  3. Can I deploy Dynamic Web TWAIN on Linux? If yes, how to?

    Yes, Dynamic Web TWAIN can be deployed on Linux.

    • Install the Dynamic Web TWAIN on Windows.
    • Place the /Resources/ folder in the installation directory into the directory of Web server on Linux.

    Please refer to Deploying Dynamic Web TWAIN on Web Server for more information.

Question on Features

  1. What operating systems will Dynamic Web TWAIN work with?

    Dynamic Web TWAIN supports Windows (Windows 95, 98, ME, NT, XP, 2000, 2003, Vista, 7 and 8) and Mac OS X (10.5 or later version).

  2. What programming languages can Dynamic Web TWAIN ActiveX Edition work with?

    Dynamic Web TWAIN ActiveX Edition can be used in any COM-enlightened program languages, such as C#, VB.NET, Visual C++, Visual Basic, Delphi, HTML/VBScript/JavaScript, and PowerBuilder and so on.

  3. Does Dynamic Web TWAIN support Chrome or Firefox?

    Yes. Dynamic Web TWAIN provides Plugin edition to work with old NPAPI-compatible Chrome and Firefox versions. Since Dynamic Web TWAIN 10, HTML5 Edition is introduced to enable TWAIN scanning in Chrome and Firefox V27+ on Windows.

  4. Does Dynamic Web TWAIN support saving images into Database?

    Yes. Dynamic Web TWAIN is able to save image files to the file system and database. Please check this article for more details.

  5. Does Dynamic Web TWAIN support SSL?

    Yes. Dynamic Web TWAIN supports SSL.
    For the information on how to work with SSL, please refer to How can I work with SSL.

  6. Can I use FTP upload and download with password?

    Yes. You can use the FTPUserName property and the FTPPassword property.

  7. Can Dynamic Web TWAIN work in a class library (DLL) project?

    Dynamic Web TWAIN is not able to.

  8. Does Dynamic Web TWAIN support Barcode Reader or OCR?

    Barcode Reader add-on is available for Dynamic Web TWAIN. Get a barcode sample>>

    For OCR, you can use the OCR add-on of Dynamic .NET TWAIN with Dynamic Web TWAIN for server side OCR.
    Get an OCR sample>>

  9. Can I scan large amounts of documents?

    With IfAllowLocalCache being enabled, you are able to scan thousands of images since extra images will be stored on disk as long as buffer size hits 800MB.

    The cache data will be stored at "C:\Documents and Settings\{User Name}\Application Data\Dynamsoft\cache" or "C:\WINDOWS\SysWOW64 {or system32}\Dynamsoft\DynamicWebTwain\ForChrome\cache" and be encrypted. When the scan application is closed, cache data will be removed from disk automatically.

Programming Questions

  1. How can I acquire black-white images?

    DWObject.OpenSource();
    DWObject.IfShowUI = false;
    DWObject.IfDisableSourceAfterAcquire = true;
    DWObject.PixelType = EnumDWT_PixelType.TWPT_BW; //Black - White 
    image : EnumDWT_PixelType.TWPT_BW, GRAY image: 
    EnumDWT_PixelType.TWPT_GRAY, RGB 
    image: EnumDWT_PixelType.TWPT_RGB
    
    DWObject.AcquireImage();
  2. How can I work without User Interface?
    function BeginScan(){
        DWObject.OpenSource();
        DWObject.IfShowUI = false; //set without user interface
        DWObject.IfDisableSourceAfterAcquire = true;
    
        DWObject.AcquireImage();
    }
    
    function DWObject_OnPostTransfer(){
        DWObject.SaveAsBMP("C:\\temp.bmp",0);
    }
  3. How can I scan only a part of a picture?
    DWObject.SelectSource();
    DWObject.OpenSource();
    
    DWObject.IfShowUI = false;
    
    //Set Image Layout
    DWObject.Unit = EnumDWT_UnitType.TWUN_INCHES;
    DWObject.SetImageLayout(0, 0, 5, 5);
    
    DWObject.AcquireImage();                       
  4. How can I select necessary device without device selection dialog?
    DWObject.OpenSourceManager();
    
    for(i = 0, i<=DWObject.SourceCount - 1,i++){
        If (DWObject.GetSourceNameItems(i) == "Specified device name")
            DWObject.SelectSourceByIndex (i);
    }
    
    //if can't find the specified source, it'll select default source
    DWObject.AcquireImage();                        
  5. How can I disable progress indicator dialog when I acquire images without UI?
    DWObject.IfShowUI = false;
    DWObject.IfDisableSourceAfterAcquire = true;
    
    DWObject.OpenSource();
    DWObject.IfShowIndicator = false;
    
    DWObject.AcquireImage();                        
  6. How can I set resolution in the X and Y direction separately?
    DWObject.SelectSource();
    DWObject.OpenSource();
    
    //Set XRESOLUTION current value.
    DWObject.Capability = 0x1118; //ICAP_XRESOLUTION
    DWObject.CapType = 5; //TWON_ONEVALUE
    DWObject.CapValue = 300;
    If (DWObject.CapSet == false){
        alert( "Failed to set the x-resolution. " + DWObject.ErrorString);
    }
    
    //Set YRESOLUTION current value.
    DWObject.Capability = 0x1119; //ICAP_YRESOLUTION
    DWObject.CapType = 5; //TWON_ONEVALUE
    DWObject.CapValue = 200;
    If (DWObject.CapSet == false){
       alert( "Failed to set the y-resolution." + DWObject.ErrorString);
    }
    
    DWObject.AcquireImage();                        
  7. How can I upload acquired image to the Web server?
    DWObject = document.getElementById("dwtcontrolContainer");//
                                    dwtcontrolContainer is the 
    id of the Dynamic Web TWAIN on the page (An object or an embed).
    function btnScan_onclick() 
    {
    DWObject.SelectSource();
    DWObject.OpenSource();
    DWObject.AcquireImage();
    }
    function btnUpload_onclick() 
    {
    var strActionPage;
    var strHostIP;
    var CurrentPathName = unescape(location.pathname); // get current PathName in 
    plain ASCII 
    var CurrentPath = CurrentPathName.substring(0, CurrentPathName.lastIndexOf("/") 
    + 1); 
    strActionPage = CurrentPath + "SaveToFile.aspx"; //the ActionPage's file path
    strHostIP = "localhost"; //The host's IP or name 
    DWObject.HTTPPort = 80; 
    DWObject.HTTPUploadThroughPost(strHostIP,0,strActionPage,"imageData.tif");
    if (DWObject.ErrorCode != 0)
    alert(DWObject.ErrorString);
    else //succeed
    alert("Image Uploaded successfully");
    }                         
  8. How to use ADF? We want to save each document in a separate file.
    var iDocumentCounter =0;
    
    function BeginScan(){
        DWObject.OpenSource();
    
        DWObject.IfShowUI = false;
        DWObject.IfDisableSourceAfterAcquire = true;
        If(DWObject.Duplex != TWDX_NONE)
            DWObject.IfDuplexEnabled = true; //enable duplex
    
    DWObject.IfFeederEnabled = true;
        If (DWObject.IfFeederEnabled == true){
             DWObject.XferCount = -1;
             DWObject.IfAutoFeed = true; //auto feed 
    
             If(DWObject.IfFeederLoaded == True)
                 DWObject.AcquireImage();
        }
    }
    
    function DWObject_OnPosttransfer(){
    iDocumentCounter = iDocumentCounter + 1;
    
    If(DWObject.SaveAsBMP("C:\\Image\\" + iDocumentCounter + ".bmp", 0) == false)
        alert( DWObject.ErrorString);
    }
  9. How can I work with SSL?

    You can use the IfSSL property. The following JavaScript Sample shows how to use IfSSL property.

    function btnUpload_onclick() 
    {
       DWObject.HTTPPort = 80; 
       DWObject.IfSSL = false; // if 80 is the port number of 
    non-secure port
    
       /* 
       DWObject.HTTPPort = 443; 
       DWObject.IfSSL = true; // if 443 is the port number of secure 
    port
       */
    
       DWObject.HTTPUploadThroughPost("127.0.0.1", 0, 
    "/SaveToFile.php", "imageData.jpg");
    
       if (DWObject.ErrorCode != 0)
          alert(DWObject.ErrorString);
       else //succeed
         alert("Successful");
    }
  10. How can I add a new scanned image to an existed multi-page TIFF file?
    function Scan_Click(){
       DWObject.AcquireImage();
    }
    
    function DWObject_OnPostTransfer(){
       DWObject.CloseSource();
    
       DWObject.IfTiffMultiPage = true;
       DWObject.SaveAsTIFF("SaveAsTIFF.tif", 0);
    
       if (DWObject.ErrorCode != 0)
          alert (DWObject.ErrorString);
       else //succeed
          alert ("Successful");
    }
  11. How can I rotate an image before I save it?

    You can use the RotateLeft method and the RotateRight method.

  12. How can I view a specified image if there are several images in buffer?

    You can view a specified image or go through all the images in buffer with clicking "NextImage" or "PreImage" buttons.

    function NextImage_Click(){
       If (DWObject.HowManyImagesInBuffer == 0) 
          alert ("There is no image in buffer");
    
       DWObject.CurrentImageIndexInBuffer = 
    DWObject.CurrentImageIndexInBuffer + 1;
    }                    
  13. How can I do a duplex scan?
    function DuplexScan_Click(){
       DWObject.SelectSource();
       DWObject.OpenSource();
       DWObject.IfShowUI = false;
       DWObject.IfDuplexEnabled = true; //enable duplex
    
       DWObject.AcquireImage();
    }                    
  14. How to use Dynamic Web TWAIN in Visual C++ Non-Dialog Based Applications?

    1. Adding Dynamic Web TWAIN to a Visual C++ Project.
    2. Adding Code to the Project.

  15. How can I scan an inverted image?

    You can use the PixelFlavor property.

Troubleshooting

  1. Why do I fail to download the ActiveX control on the client machine?

    Please check this article for a solution.

  2. Why do I get the error "HTTP process error"?

    Please check this article for a solution.

  3. Why is there a watermark on the scanned images?

    The watermark only appears when the license expires for the trial version, but the SDK will be still functional. If you want to get rid of the watermark, you can contact our support team at support@dynamsoft.com for an extension or purchase the full version.

  4. Why do I get the error "Class not registered" in Delphi environment when I upgrade the Trial version to Full version?

    Please try the steps as follows.

    • Find the 'dclusr.dpk' file in the "Lib" folder under the installation directory of Delphi and then open it with Delphi.
    • Right click the "DYNAMICWEBTWAINCTRLLib_TLB.dcr" file and select "Remove From Project". Also, do the same operation to the "DYNAMICWEBTWAINCTRLLib_TLB.pas" file.
    • Click the "Compile" icon.
    • Save the 'dclusr.dpk' file before closing it.