EZTwain Pro User Guide
How To: Use EZTwain from other languages
LabVIEW
We do not offer any pre-written LabVIEW code, but several customers have used 
EZTwain from LabVIEW.
For links and the most up-to-date information about using EZTwain from LabVIEW, 
visit our LabVIEW Support Page at: http://www.dosadi.com/ezt3labview.htm
Perl
We do not understand Perl!  But one of our customers helped us create a Perl 
declaration file and a small sample.  They can be found in the EZTwain toolkit 
folder \Program Files\EZTwain\Perl
Borland C++ Builder (BCB)
EZTwain Pro has been used successfully from BCB 6.0 – The toolkit includes a header 
file EZTwain.h, and a link-library Eztwain3.lib, which by default is copied to this 
folder:  \Program Files\EZTwain\BCB
Warning:  The default handling of floating-point exceptions is different in Microsoft 
languages, and Borland languages.  Certain TWAIN device drivers will generate fatal 
run-time exceptions if they are invoked from Borland applications unless precautions 
are taken.  See our advisory: http://www.dosadi.com/borland-issue.htm
Microsoft Access (VBA)
We don’t claim any expertise with Microsoft Access, but several customers who are 
regular Access users have donated sample code for accessing (cough) EZTwain Pro. 
Their databases can be found in: \Program Files\EZTwain\Access
Clarion, dBASE (dBASE+, VDB), PowerBASIC, Progress 4GL
If you look in the toolkit folder \Program Files\EZTwain you will find sub-folders for 
these languages, and perhaps others.  In those subfolders will be a file containing 
external declarations for all EZTwain functions.  There are also blocks of constant 
definitions, which you may use at your convenience, and in some cases there are 
small sample programs.
Java
We do not provide a Java binding, but customers have suggested JNI, JNA, and 
JNative all as useful.  Search our Forum for more details: 
http://www.dosadi.com/Forums/
Other languages
For other development platforms, please contact Dosadi support via our Forums 
(http://www.dosadi.com/forums
) or via e-mail: support@dosadi.com
Page 8
Pdf extract images - Select, copy, paste PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract images pdf; extract color image from pdf in c#
Pdf extract images - VB.NET PDF Image Extract Library: Select, copy, paste PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
how to extract images from pdf; extract jpeg from pdf
EZTwain Pro User Guide
How To: Statically Link to EZTwain
This section assumes you are using Microsoft Visual C/C++.  For other languages or 
compilers, you are responsible for adapting the following advice.
When you install the EZTwain Pro toolkit, you designate a main folder for the various 
developer files.  Under that folder is a subfolder called Static containing a statically 
linkable library: EZT3MT.LIB.  This library contains almost all (exceptions noted 
below) of the functions from Eztwain3.dll.
Note: The static library directly supports only BMP file format: To read or write any 
other file format, the same DLLs as described in  must be present and loadable.
Use the function declarations from eztwain.h, and link to EZT3MT.LIB.
EZT3MT.LIB links to LIBCMT or LIBCMTD, the multithreading version of the C 
runtime library.  EZTwain uses multithreading internally, so your application 
must also be compiled for multithreading.
Call EZTWAIN_Attach() before calling any other EZTwain function.
Make a matching call to EZTWAIN_Detach() before terminating the 
application.
TWAIN_ViewFile and DIB_View are missing - they depend on dialog resources 
that are not included in the .LIB
Page 9
C# PDF Text Extract Library: extract text content from PDF file in
Ability to extract highlighted text out of PDF document. Image text extraction control provides text extraction from PDF images and image files.
extract photo from pdf; pdf extract images
VB.NET PDF Text Extract Library: extract text content from PDF
Extract highlighted text out of PDF document. Image text extraction control provides text extraction from PDF images and image files.
extract photos pdf; online pdf image extractor
EZTwain Pro User Guide
How To: Redistribute EZTwain with your Application
There are two main questions when redistributing EZTwain:  Where to put the DLLs, 
and how to obtain a license (key).
Where to Put the DLLs
If you are preparing a software package to be distributed with EZTwain, you have 
three main alternatives:
Alternative 1. Follow the lead of the EZTwain Developer Kit and install the EZTwain 
DLLs in the System (System32) folder.  The sample apps and various definition files 
are set up for this, using unqualified references to “eztwain3.dll”.
If you have your own installer, it must compare versions before overwriting the 
EZ*.DLL files in the system folder, and only overwrite a higher version with a lower 
after strenuous warnings to the user.  This is a specific obligation under the EZTwain 
Pro License Agreement.  Any responsible install tool will do this by default, or at least 
offer it as an option.
This alternative leaves you exposed to the following risk:  Another product could be 
installed after yours, replacing your EZTwain DLL’s with higher-versioned ones.  Or 
vice-versa: Your application could replace older DLLs installed by a previous 
application.  Either way, if the new DLLs are not sufficiently backward compatible, 
one or both of the applications involved can stop working.  Dosadi makes every effort 
to keep our DLLs backwards-compatible, but it cannot be guaranteed.  This is one 
form of “DLL Hell” and is a risk with using any DLL installed in a System folder.
Alternative 2. If your application compiles to an EXE file, you can install the 
EZTwain DLLs in the same folder as the .EXE.  Use an unqualified DLL reference as in 
Alternative 1.  Under this alternative, your application will always (we believe) load 
and use those specific DLLs.
Alternative 3. For dynamic-binding languages like VB and FoxPro, you can use fully 
qualified paths for the EZTwain DLL – If you decide to do this, replace all occurrences 
of “Eztwain3.DLL” in the definition file with the full path of the DLL .e.g. “c:\Program 
Files\Eztwain\Redist\Eztwain3.dll”  Under this alternative, your installer must install 
the EZTwain DLLs in the same specific folder on every target machine, or must have 
a way at run-time to find and load the DLLs.
Page 10
C# Create PDF from images Library to convert Jpeg, png images to
Create PDF from Images. |. Home ›› XDoc.PDF ›› C# PDF: Create PDF from Images. C#.NET PDF - Create PDF from Images in C# with XDoc.NET PDF Control.
extract image from pdf using; how to extract images from pdf in acrobat
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
VB.NET: Extract All Images from PDF Document. This is an example that you can use it to extract all images from PDF document. ' Get page 3 from the document.
extract image from pdf acrobat; extract pdf images
EZTwain Pro User Guide
How To: Obtain a License Key
Redistribution of the EZTwain DLLs is only allowed by the EZTwain Pro License under 
these circumstances:
You (your organization) purchases a Single-Application Redistribution License 
key.  You provide a title for your application, and you receive a numeric 
unlock key.  The title and key are used by your software to unlock EZTwain at 
run-time.  See details under TWAIN_ApplicationLicense in the Function 
Reference section below.
For details and ordering information, run the Dosadi Licensing Wizard, or 
visit:
http://www.dosadi.com/ezt3lic_1app.htm
You purchase a Universal Redistribution License key.  For this key, you 
provide a vendor name, and add a call to TWAIN_SetVendorKey in your 
software.  See details under TWAIN_SetVendorKey in the Function Reference 
section below.  For details and ordering information, run the Dosadi Licensing 
Wizard, or browse to:
http://www.dosadi.com/ezt3lic_vendor.htm
You purchase an In-House Application License (IHAL) for your organization. 
You provide the name of the organization when purchasing the license, and 
receive a corresponding numeric key.  Call TWAIN_OrganizationLicense (24) 
with the organization name and numeric key to unlock EZTwain on computers 
owned and operated by the licensed organization.
For details and ordering information, run the Dosadi Licensing Wizard, or 
visit:
http://www.dosadi.com/ezt3lic_org.htm
Page 11
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
C#.NET PDF SDK - Convert & Render PDF to Images in C#.NET. Free .NET DLLs for converting PDF to images in both .NET WinForms and ASP.NET application.
extract pictures from pdf; extract image from pdf java
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
|. Home ›› XDoc.PDF ›› C# PDF: Extract, Copy and Paste PDF Pages. C#.NET Sample Code: Extract PDF Pages and Save into a New PDF File in C#.NET.
extract image from pdf; pdf image text extractor
EZTwain Pro User Guide
How To: Select a Device for Input
Displaying the Select Source Dialog
You can implement the Select Source command with one EZTwain call:
TWAIN_SelectImageSource(0);
This function displays the TWAIN Select Source dialog, with a list of all the installed 
TWAIN Sources on the system:
The user can select the new default TWAIN device or, they can cancel.  If they OK 
this dialog, TWAIN remembers the new default device.
Note that the Select Source dialog lists Sources (TWAIN drivers), not physical 
devices: It will list devices even if they are currently off-line or unplugged.  Also, two 
devices that use the same driver will only appear once in the TWAIN device list.
Please don’t make the user go through the Select Source dialog each time they want 
to acquire!
Page 12
VB.NET Create PDF from images Library to convert Jpeg, png images
Create PDF from Images. |. Home ›› XDoc.PDF ›› VB.NET PDF: Create PDF from Images. NET converter control for exporting high quality PDF from images.
extract photos from pdf; extract pictures pdf
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
Following demo code will show how to convert all PDF pages to Jpeg images with C# .NET. // Load a PDF file. String inputFilePath
extract images from pdf c#; extract jpg pdf
EZTwain Pro User Guide
Enumerating the available sources
If you would like to display your own list of TWAIN Sources, or find out the exact 
name of a Source, you can use TWAIN_GetSourceList and 
TWAIN_GetNextSourceName.  The Code Wizard, installed as part of the EZTwain Pro 
toolkit, will generate the code to do this in variety of languages.
Opening a Source by Name
If you would like to acquire from a specific device, you will need to know its exact 
name.  You can enumerate the names of the installed devices - see above.  Then you 
can open a specific source this way:
if (TWAIN_OpenSource(“Logitech Camera”) == 1) {
TWAIN_AcquireToFilename(0, “frame.bmp”);
}
This tries to open the named device, and if successful, acquires an image and stores 
it in a bmp file.  All of the Acquire functions work this way – If a source is open, they 
use it, and otherwise they open and use the default source.
Page 13
EZTwain Pro User Guide
How To: Acquire an Image
To acquire a single image from the default TWAIN device, using the device’s user 
interface, and store it in a BMP file, call
TWAIN_AcquireToFilename(0, “filename.bmp”)
This makes an excellent test of:
1. Your ability to invoke EZTwain,
2. That EZTwain DLL (Eztwain3.dll) is where your program can find it,
3. TWAIN is correctly installed on the computer, and
4. The default TWAIN device being correctly installed and operational.
A word about the ‘default TWAIN device’ - If there is only one TWAIN device installed 
in the system, then that device is the default TWAIN device.  Otherwise, it is the last 
TWAIN device selected by the user in the Select Source dialog.
To acquire an image into memory:
hdib = TWAIN_Acquire(0);
if (hdib != 0) {
DIB_WriteToFilename(hdib, “last_scan.tif”);
DIB_Free(hdib); hdib = 0;
}
This acquires a single image from the default device, formats it in memory as a DIB, 
and returns a handle to it - A handle, not a pointer.  Then it writes the DIB out as a 
TIFF file, and frees the DIB.
Note that the returned object is a DIB.  There is a Windows object commonly called a 
Bitmap, short for Device-Dependent Bitmap or DDB – a DIB is not a DDB!  A DIB is a 
completely different animal.
If something goes wrong with the transfer, the return value will be NULL (0).
The DIB_Free call is needed to release the memory holding the image.  If you don’t 
do that, the image sits around taking up memory until your program exits.
Page 14
EZTwain Pro User Guide
How To: Negotiate Scanning Parameters
TWAIN requires, reasonably enough, that you must have a Source open before you 
can ask it about its settings and properties, called capabilities in TWAIN-speak.
TWAIN also imposes the restriction that settings can only be set while the Source is 
open and before it has been enabled.  ‘Enabled’ in TWAIN means given the go-ahead 
to acquire images.
To cut to the chase, here’s a C fragment for scanning a 1-bit, 300dpi, B&W image:
if (TWAIN_OpenDefaultSource()) {
// DS is now in State 4 (Open)
TWAIN_SetPixelType(TWPT_BW);
TWAIN_SetBitDepth(1);
// (probably redundant for BW)
TWAIN_SetUnits(TWUN_INCHES);
TWAIN_SetResolution(300.0);
hdib = TWAIN_Acquire(0);
}
This code does no error checking on the Set functions, even though some of them 
will certainly fail on some devices.  For example, almost any webcam will reject a 
pixel type of TWPT_BW, and probably a resolution setting of 300 – it might reject 
any attempt to set resolution.
It is recommended to select a pixel type first, then to set the bit depth – some 
devices maintain bit depths for each pixel type.
Setting the units to inches is a precaution that introduces interesting issues.  In 
theory, resolution is defined as samples per unit of measure.  So when we set a 
resolution of 300, we are setting 300 dpi only if the current unit of measure is inches 
(dpi = dots per inch, right?)  If we are in a metric country – and there’s only one 
country that isn’t metric – then the DS might be configured to use centimeters, and 
300 would mean 300 samples per centimeter.  In practice, TWAIN specifies the 
default unit of measure as inches, so almost all Sources open with their units set to 
inches.  However –some webcams and video capture devices open with units set to 
pixels!  Technically non-compliant, these devices are likely to reject any attempt to 
set their resolution anyway.
Page 15
EZTwain Pro User Guide
How To: Scan a Multipage Document
Multipage files are image files that can hold multiple pages or sequential images. 
The multipage file formats supported by EZTwain are TIFF, PDF, and DCX.  DCX is 
rarely used so we will not mention again.
To scan from the default TWAIN device into a multipage TIFF file takes one call:
TWAIN_AcquireMultipageFile(hwnd, “multipage.tif”);
The first parameter is the window handle of your main window – if you can’t easily 
obtain this, just pass a 0 - EZTwain will use the handle of the active window if any, 
or it will create an invisible window if there is no active window.  The second 
parameter is the filename to create - EZTwain uses the extension to select the format 
of the file: .TIF, .TIFF, or .MPT means write a TIFF file, .PDF means write a PDF, etc.
TWAIN_AcquireMultipageFile will present the scanner’s user interface, and will accept 
scans from the scanner (or images from a camera or webcam) until the user closes 
the scan dialog.  A few devices will close their window automatically after sending 
one image - in some cases EZTwain can detect this and will prompt the user asking if 
there are more images.  All of this is invisible to your application.
If you do not want to display the device’s user interface, you can use code like the 
following.  If the default TWAIN device is a scanner with an Automatic Document 
Feeder (ADF), this code will scan all the pages in the feeder:
if (TWAIN_OpenDefaultSource()) {
TWAIN_SetHideUI(1);
// ask for no user interface
TWAIN_SetResolution(300);
// ask for 300 DPI
TWAIN_SetPixelType(TWPT_BW);// black & white
TWAIN_SelectFeeder(1);
// from feeder (if possible)
TWAIN_EnableDuplex(1);
// both sides (if supported)
TWAIN_AcquireMultipageFile(hwnd, “multipage.tif”);
}
if (TWAIN_LastErrorCode() != 0) {
TWAIN_ReportLastError(“Error during scanning.”);
}
If the current TWAIN device is a flatbed scanner, this code will immediately scan 
from the flatbed, then display a small message box asking if there are more pages to 
scan.  As long as the user answers ‘Yes’, the TWAIN_AcquireMultipageFile function 
will continue to scan another page.
It’s important to specify at least the resolution and pixel type when the scanner user 
interface is suppressed, otherwise you have no way of knowing what settings the 
scanner will use.
Page 16
EZTwain Pro User Guide
How To: Hide the Source User Interface
In theory
Make the following call before any Acquire calls, and images will arrive from your 
device with no distracting dialogs or windows on screen:
TWAIN_SetHideUI(1)
In practice
Some devices will refuse to cooperate and will display their user interface (UI) 
anyway.  A few particularly bad TWAIN device drivers will crash when used this way.
Even in No-UI mode, many devices will display a status or progress box while 
scanning or transferring data.  Sometimes the progress box can be suppressed [see 
TWAIN_SetIndicators, p. 129.]
If the device is not connected and powered up, if the paper jams, or if anything else 
happens that requires human attention, most devices will display an error dialog. 
Suppressing such error messages requires low-level Windows programming outside 
the scope of TWAIN or EZTwain.
You can count on almost all desktop scanners, departmental scanners, and high-
volume scanners to scan well without showing their UI.
Some webcams will transfer with no UI, for example the Logitech QuickCams.
You cannot count on a digital still camera (DSC) to transfer all its images from 
memory in No-UI mode.  Last time we checked (2005) most DSCs ignore the request 
to hide their UI.
If you must automate a device that insists on displaying its user interface (almost 
any webcam, for example) you can try the function TWAIN_AutoClickButton. 
Page 17
Documents you may be interested
Documents you may be interested