mirror of
https://github.com/soukoku/ntwain.git
synced 2025-04-05 20:59:23 +08:00
995 lines
44 KiB
HTML
995 lines
44 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
||
<meta name=Generator content="Microsoft Word 10 (filtered)">
|
||
<title>Single Document Multiple Images</title>
|
||
|
||
<style>
|
||
<!--
|
||
/* Style Definitions */
|
||
p.MsoNormal, li.MsoNormal, div.MsoNormal
|
||
{margin:0in;
|
||
margin-bottom:.0001pt;
|
||
font-size:12.0pt;
|
||
font-family:"Times New Roman";}
|
||
h1
|
||
{margin-top:6.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:3.0pt;
|
||
margin-left:0in;
|
||
text-align:justify;
|
||
page-break-before:always;
|
||
page-break-after:avoid;
|
||
font-size:18.0pt;
|
||
font-family:"Times New Roman";}
|
||
h2
|
||
{margin-top:6.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:6.0pt;
|
||
margin-left:0in;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Times New Roman";}
|
||
h3
|
||
{margin-top:6.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:3.0pt;
|
||
margin-left:0in;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Times New Roman";}
|
||
h4
|
||
{margin-top:12.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:3.0pt;
|
||
margin-left:0in;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Times New Roman";}
|
||
p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2
|
||
{margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:6.0pt;
|
||
margin-left:0in;
|
||
line-height:200%;
|
||
font-size:12.0pt;
|
||
font-family:"Times New Roman";}
|
||
p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3
|
||
{margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:6.0pt;
|
||
margin-left:0in;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman";}
|
||
pre
|
||
{margin:0in;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:"Courier New";}
|
||
p.style4, li.style4, div.style4
|
||
{margin-top:6.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:3.0pt;
|
||
margin-left:0in;
|
||
text-align:justify;
|
||
page-break-before:always;
|
||
page-break-after:avoid;
|
||
font-size:18.0pt;
|
||
font-family:"Times New Roman";
|
||
font-weight:bold;}
|
||
p.style2, li.style2, div.style2
|
||
{margin-top:6.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:6.0pt;
|
||
margin-left:0in;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Times New Roman";
|
||
font-weight:bold;
|
||
font-style:italic;}
|
||
@page Section1
|
||
{size:8.5in 11.0in;
|
||
margin:1.0in 1.25in 1.0in 1.25in;}
|
||
div.Section1
|
||
{page:Section1;}
|
||
/* List Definitions */
|
||
ol
|
||
{margin-bottom:0in;}
|
||
ul
|
||
{margin-bottom:0in;}
|
||
-->
|
||
</style>
|
||
|
||
</head>
|
||
|
||
<body lang=EN-US>
|
||
|
||
<div class=Section1>
|
||
|
||
<p class=MsoNormal><b><span style='font-family:Arial'>Single Document Multiple
|
||
Images</span></b></p>
|
||
|
||
<p class=MsoNormal>25-Aug-2004</p>
|
||
<p class=MsoNormal>Updated: 15-Aug-2006</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal><b><span style="font-family: Arial">Table of Contents</span></b></p>
|
||
<blockquote>
|
||
<p class=MsoNormal><b><span style='font-family:Arial'><a href="#OVERVIEW">Overview</a></span></b></p>
|
||
<p class=MsoNormal><font size="3"><b><span style="font-family: Arial">
|
||
<a href="#ICAP_PIXELTYPE_and_DAT_FILESYSTEM_Overview">ICAP_PIXELTYPE and
|
||
DAT_FILESYSTEM Overview</a></span></b></font></p>
|
||
<p class=MsoNormal><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a href="#ICAP_PIXELTYPE">
|
||
ICAP_PIXELTYPE</a></span></b></p>
|
||
<p class=MsoNormal><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a href="#DAT_FILESYSTEM">DAT_FILESYSTEM</a></span></b></p>
|
||
<p class=MsoNormal><b><span
|
||
style='font-size:12.0pt;font-family:Arial'>
|
||
<a href="#DAT_FILESYSTEM_vs._ICAP_PIXELTYPE">DAT_FILESYSTEM vs. ICAP_PIXELTYPE</a></span></b></p>
|
||
<p class=MsoNormal><b><span
|
||
style='font-size:12.0pt;font-family:Arial'>
|
||
<a href="#CAP_CAMERAENABLE_vs._CAP_DUPLEXENABLED">CAP_CAMERAENABLE vs. CAP_DUPLEXENABLED</a></span></b></p>
|
||
<p class=MsoNormal><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a href="#CAP_CAMERAORDER">CAP_CAMERAORDER</a></span></b></p>
|
||
<p class=MsoNormal><font size="3"><b><span style="font-family: Arial">
|
||
<a href="#Entire_session_(i.e._machine)_vs._a_single_camera">Entire session
|
||
(i.e. machine) vs. a single "camera"</a></span></b></font></p>
|
||
<p class=MsoNormal><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a href="#METADATA">METADATA</a></span></b></p>
|
||
</blockquote>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal><b><span style='font-family:Arial'><a name="OVERVIEW">Overview</a></span></b></p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>This document talks about the Single Document Multiple
|
||
Images (SDMI) behavior in TWAIN, describing how it is negotiated and what
|
||
additional metadata associated with the image needs to be collected during
|
||
image capture. Since this is a moderately complex subject a number of
|
||
other capabilities that have uses beyond SDMI will be discussed as well.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>SDMI behavior is easy to view graphically:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>Original<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Color<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Bitonal</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>Document<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Image<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Image</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>+-------+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
+-------+<2B><> +-------+</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|<7C><><EFBFBD>
|
||
<EFBFBD><EFBFBD><EFBFBD>|<7C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD> <20><><EFBFBD>|<7C><> |<7C><><EFBFBD> <20><><EFBFBD>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|<7C><> <b><span
|
||
style='color:red'>R</span></b> <20><>|<7C><> <20><><EFBFBD><EFBFBD><EFBFBD>|<7C><> <b><span style='color:red'>R</span></b>
|
||
<EFBFBD><EFBFBD>|<7C><> |<7C><> <b>R</b> <20><>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|<7C><> <20><><EFBFBD><EFBFBD>|<7C>
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> <20><><EFBFBD><EFBFBD>|<7C><> |<7C><> <20><><EFBFBD><EFBFBD>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|<7C><> <b><span
|
||
style='color:lime'>G</span> </b><EFBFBD><EFBFBD>| <20>---><EFBFBD> |<7C><> <b><span style='color:lime'>G</span>
|
||
</b><EFBFBD><EFBFBD>| + |<7C><> <b>G </b><EFBFBD><EFBFBD>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|<7C><> <20><><EFBFBD><EFBFBD>|<7C><><EFBFBD>
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> <20><><EFBFBD><EFBFBD>|<7C><> |<7C><> <20><><EFBFBD><EFBFBD>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|<7C><> <b><span
|
||
style='color:blue'>B</span> <20></b><EFBFBD>|<7C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> <b><span style='color:blue'>B</span>
|
||
<EFBFBD></b><EFBFBD>|<7C><> |<7C><> <b>B <20></b><EFBFBD>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|<7C><><EFBFBD>
|
||
<EFBFBD><EFBFBD><EFBFBD>|<7C><> <20><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD> <20><><EFBFBD>|<7C><> |<7C><><EFBFBD> <20><><EFBFBD>|</span></p>
|
||
|
||
<pre><span style='font-size:8.0pt'>+-------+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +-------+<2B><> +-------+</span></pre><pre><span
|
||
style='font-size:8.0pt'> </span></pre>
|
||
|
||
<p class=MsoNormal>In this example a color document results in the capture of
|
||
two images, one that is color and one that is bitonal (black & white). Configurations of
|
||
this form have a variety of applications, but the most common is when the
|
||
application needs a faithful replication of the document for archival purposes
|
||
and an image suitable for data collection, such as OCR.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>SDMI puts no limit on the number of images that can result
|
||
from a document.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>SDMI is not the same as image segmentation. Image
|
||
segmentation divides a document into sub-images that are optimized for quality
|
||
and compression. In this example the driver could save the text images as
|
||
Group-4 and the picture as JPEG:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>Original</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>Document</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>+-------+</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>| a
|
||
bit |<7C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Segment 1<><31> Segment 2<><32> Segment 3</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|of
|
||
text|<7C><> <20><><EFBFBD><EFBFBD><EFBFBD>Text<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Picture<72><65><EFBFBD><EFBFBD> Text</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>| <span
|
||
style='color:#CC99FF'>$#$#$</span> |<7C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+-------+<2B><> +-------+<2B><> +-------+</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>| <span
|
||
style='color:#CC99FF'>#$#$#</span> | <20>---><EFBFBD> | a bit |<7C><> | <span
|
||
style='color:#CC99FF'>#$#$#</span> |<7C><> | more <20>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>| <span
|
||
style='color:#CC99FF'>$#$#$</span> |<7C><><EFBFBD> <20><><EFBFBD><EFBFBD>|of text| + | <span
|
||
style='color:#CC99FF'>#$#$#</span> | + | text <20>|</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>|
|
||
more <20>|<7C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+-------+<2B><> | <span style='color:#CC99FF'>#$#$#</span> |<7C><> +-------+</span></p>
|
||
|
||
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>| text<78>
|
||
|<7C><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+-------+</span></p>
|
||
|
||
<pre><span style='font-size:8.0pt'>+-------+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span></pre><pre> </pre>
|
||
|
||
<p class=MsoNormal>Image segmentation is typically used to efficiently store
|
||
images. SDMI is used to capture images that are then directed to
|
||
different parts of the workflow. It is possible to mix image segmentation
|
||
with SDMI (ex: using image segmentation to produce the faithful replication
|
||
image). The two technologies have different goals, though, so it<69>s not
|
||
advisable to use one to replace the other.</p>
|
||
|
||
<pre> </pre>
|
||
<pre> </pre><pre> </pre><pre><font size="3"><b><span style="font-family: Arial"><a name="ICAP_PIXELTYPE_and_DAT_FILESYSTEM_Overview">ICAP_PIXELTYPE and DAT_FILESYSTEM Overview</a></span></b></font></pre>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>TWAIN did not start with duplex scanning built into the
|
||
standard; this was added in version 1.7. So prior to 1.7
|
||
<a href="#ICAP_PIXELTYPE">ICAP_PIXELTYPE</a> selected the pixel type (i.e. color
|
||
vs. grayscale vs. bitonal) for the entire session. This could also be considered
|
||
the "color space". An application could configure a driver to output
|
||
color or grayscale or bitonal images, but only one of the three, so you can not
|
||
get multiple images for a side via ICAP_PIXELTYPE. </p>
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>TWAIN 1.8 introduced <a href="#DAT_FILESYSTEM">DAT_FILESYSTEM</a>. This
|
||
allows an application to setup multiple images for a side. It also
|
||
helps support setting of different values for the front and rear. For example,
|
||
getting color on the front and grayscale on the rear.</p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal>To help maintain backwards compatibility, ICAP_PIXELTYPE needs to
|
||
continue to apply to the entire session. This means ICAP_PIXELTYPE should
|
||
never be negotiated with DAT_FILESYSTEM.</p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal> </p>
|
||
<pre><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a name="ICAP_PIXELTYPE">ICAP_PIXELTYPE</a></span></b></pre><pre><span
|
||
style='font-family:Arial'> </span></pre>
|
||
|
||
<p class=MsoNormal>Setting ICAP_PIXELTYPE will set both the front and rear
|
||
images to the given TWPT_ value and automatically set CAP_DUPLEXENABLED to true.
|
||
Use ICAP_BITDEPTH to determine how many bits make a single pixel, such as 8 for 8-bit
|
||
grayscale or 24 for 3-channel/8-bits-per-channel RGB. </p><pre> </pre>
|
||
<pre> </pre>
|
||
<pre> </pre>
|
||
<pre><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a name="DAT_FILESYSTEM">DAT_FILESYSTEM</a></span></b></pre><pre><span
|
||
style='font-family:Arial'> </span></pre>
|
||
|
||
<p class=MsoNormal>DAT_FILESYSTEM addresses individual <20>cameras<61>. The term <20>camera<72> doesn<73>t
|
||
mean that the image capture device uses a camera; rather it<69>s a generic term
|
||
for an image capture source. DAT_FILESYSTEM calls the front side of the
|
||
paper as the 'top' "camera", and the rear as 'bottom'. This doesn't have
|
||
anything to do with the physical position of the camera, it is being used to describe what the user
|
||
considers the top (i.e. front) of the sheet of paper versus the bottom (i.e. rear).</p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal>The driver will output images based on CAP_CAMERAENABLED. So
|
||
while a "camera" can be individually set via DAT_FILESYSTEM, you must also set
|
||
CAP_CAMERAENABLED to true for each "camera" you want the driver to actually
|
||
produce.</p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal>The values for DAT_FILESYSTEM are typically:</p>
|
||
|
||
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
|
||
style='border-collapse:collapse' id="table1">
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'><pre>Camera name</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'><pre>Side</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'><pre>Image</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'><pre>/Camera_Color_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>front</td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt' align="left">color or grayscale</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'><pre>/Camera_Color_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>rear</td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt' align="left">color or grayscale</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'><pre>/Camera_Color_Both</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>front and rear</td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt' align="left">color or grayscale</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'><pre>/Camera_Bitonal_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>front</td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt' align="left">bitonal</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'><pre>/Camera_Bitonal_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>rear</td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt' align="left">bitonal</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'><pre>/Camera_Bitonal_Both</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>front and rear</td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt' align="left">bitonal</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal>Using a camera that ends in '_Both' means future settings
|
||
will be applied to both the front and rear images.</p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal><a href="TWAIN_FileSystem.htm">Sample source code</a></p>
|
||
|
||
<pre> </pre>
|
||
<pre> </pre>
|
||
<p class=MsoNormal> </p><pre><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a name="DAT_FILESYSTEM_vs._ICAP_PIXELTYPE">DAT_FILESYSTEM vs. ICAP_PIXELTYPE</a></span></b></pre><pre> </pre>
|
||
|
||
<p class=MsoNormal>If DAT_FILESYSTEM is set, then ICAP_PIXELTYPE must
|
||
reflect the current value of the "camera". For instance, if DAT_FILESYSTEM
|
||
is set to /Camera_Color_Both, then ICAP_PIXELTYPE should be set to TWPT_RGB
|
||
(this is a basic sanity check for the driver to prevent DAT_FILESYSTEM and ICAP_PIXELTYPE from ever reporting conflicting values).</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>However, if ICAP_PIXELTYPE is set, then the following things
|
||
must happen to DAT_FILESYSTEM and CAP_CAMERAENABLE:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>If ICAP_PIXELTYPE is set to
|
||
|
||
|
||
TWPT_RGB</p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>DAT_FILESYSTEM changes to
|
||
|
||
/Camera_Color_Both</p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>CAP_CAMERAENABLE changes to:</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Color_Top:
|
||
|
||
|
||
TRUE</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Color_Bottom:
|
||
|
||
TRUE</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Bitonal_Top: FALSE</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Bitonal_Bottom:
|
||
FALSE</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>If ICAP_PIXELTYPE is set to
|
||
|
||
|
||
TWPT_BW</p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>DAT_FILESYSTEM changes to
|
||
|
||
/Camera_Bitonal_Both</p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>CAP_CAMERAENABLE changes to:</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Color_Top:
|
||
|
||
FALSE</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Color_Bottom:
|
||
|
||
FALSE</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Bitonal_Top:
|
||
|
||
TRUE</p>
|
||
|
||
<p class=MsoNormal style='margin-left:1.0in'>/Camera_Bitonal_Bottom:
|
||
TRUE</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>The behavior guarantees that older applications and newer
|
||
applications can work with the same driver. Application writers need to
|
||
decide if they want to use ICAP_PIXELTYPE or DAT_FILESYSTEM
|
||
when negotiating with a particular driver, never use both together. As a
|
||
guideline, if DAT_FILESYSTEM are supported by a driver, use them,
|
||
since they offer more functionality than ICAP_PIXELTYPE.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal> </p>
|
||
|
||
<pre><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a name="CAP_CAMERAENABLE_vs._CAP_DUPLEXENABLED">CAP_CAMERAENABLE vs. CAP_DUPLEXENABLED</a></span></b></pre><pre> </pre>
|
||
|
||
<p class=MsoNormal>Care needs to be taken when mixing CAP_CAMERAENABLE and
|
||
CAP_DUPLEXENABLED. The recommendation is to use one or the other. Here is an
|
||
example of the interdependency:</p>
|
||
<blockquote>
|
||
<p class=MsoNormal>Table-1 shows an example of creating one color and one
|
||
bitonal image from the front of every sheet of paper fed during the scanning
|
||
session. In this case, CAP_DUPLEXENABLED would have been set to False.</p>
|
||
<pre> </pre>
|
||
<pre>Table-1</pre>
|
||
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
|
||
style='border-collapse:collapse' id="table2">
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>DAT_FILESYSTEM</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>CAP_CAMERAENABLE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Color_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Color_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>FALSE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Bitonal_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Bitonal_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>FALSE</pre></td>
|
||
</tr>
|
||
</table>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal>If the application then sets CAP_DUPLEXENABLED to True, we
|
||
would expect the table to change to the following:</p>
|
||
<pre> </pre>
|
||
<pre>Table-2</pre>
|
||
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
|
||
style='border-collapse:collapse'>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>DAT_FILESYSTEM</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>CAP_CAMERAENABLE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Color_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Color_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Bitonal_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Bitonal_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
</table>
|
||
</blockquote>
|
||
|
||
<pre> </pre>
|
||
<p class=MsoNormal>NOTE: Rear only scanning is considered to be a special duplex
|
||
operation. So for the following table CAP_DUPLEXENABLED would be True:</p>
|
||
|
||
<blockquote>
|
||
<pre>Table-3</pre>
|
||
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
|
||
style='border-collapse:collapse'>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>DAT_FILESYSTEM</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>CAP_CAMERAENABLE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Color_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>FALSE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Color_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Bitonal_Top</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>FALSE</pre></td>
|
||
</tr>
|
||
<tr>
|
||
<td width=190 valign=top style='width:142.8pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre>/Camera_Bitonal_Bottom</pre></td>
|
||
<td width=150 valign=top style='width:112.8pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<pre style='text-align:center'>TRUE</pre></td>
|
||
</tr>
|
||
</table>
|
||
</blockquote>
|
||
<pre> </pre>
|
||
<pre> </pre>
|
||
<pre><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a name="CAP_CAMERAORDER">CAP_CAMERAORDER</a></span></b></pre><pre> </pre>
|
||
|
||
<p class=MsoNormal>The output order of the images can be adjusted using
|
||
CAP_CAMERAORDER (using the CAP_CAMERA TWCM_*_BOTH values). This is a TW_ARRAY
|
||
container that has the name of each of the cameras in the order they will be
|
||
transferred from the driver to the application. For example, if
|
||
CAP_CAMERAORDER is set to TWCM_BW_BOTH TWCM_CL_BOTH, then the bitonal image
|
||
will be transferred before the color image. For a duplex session this
|
||
would look like the following:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal> Bitonal Front</p>
|
||
|
||
<p class=MsoNormal> Color Front</p>
|
||
|
||
<p class=MsoNormal> Bitonal Rear</p>
|
||
|
||
<p class=MsoNormal> Color Rear</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>To simplify the validation rules between CAP_CAMERAENABLED and
|
||
CAP_CAMERAORDER do the following:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>1)<span style='font-size:7.0pt'>
|
||
</span>If CAP_CAMERAORDER includes a "camera" that is set to False, then the
|
||
driver will ignore it.</p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>2)<span style='font-size:7.0pt'>
|
||
</span>If CAP_CAMERAORDER does not include a "camera" that is set to True,
|
||
then the driver is free to output the images in whatever ordering it wants.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal> </p>
|
||
|
||
<pre> </pre>
|
||
<pre><font size="3"><b><span style="font-family: Arial"><a name="Entire_session_(i.e._machine)_vs._a_single_camera">Entire session (i.e. machine) vs. a single "camera"</a></span></b></font></pre><pre><span
|
||
style='font-family:Arial'> </span></pre>
|
||
|
||
<p class=MsoNormal>The addition of independent front and rear capability
|
||
negotiation immediately raises the question: which capabilities belong to the
|
||
machine (like CAP_DUPLEX) and which ones belong to a "camera" (like CAP_COMPRESSION). There is no easy answer to this, since the hardware of
|
||
the device dictates the capabilities. For instance scanner ABC may allow
|
||
independent selection of ICAP_COMPRESSION for front and rear cameras because
|
||
the designers put in dedicated compression chips for each side. Whereas
|
||
scanner XYZ, in an effort to save costs, only used one chip for this operation,
|
||
and they have no way to independently set the front from the rear for this one
|
||
capability.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>So, to help figure out where each capability goes, Kodak
|
||
scanners have enhancement DG_CONTROL / DAT_CAPABILITY /
|
||
MSG_QUERYSUPPORT with additional TWQC_ flags:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in'>
|
||
<span style='font-size:10.0pt;
|
||
font-family:"Courier New";color:blue'>#define</span><span style='font-size:
|
||
10.0pt;font-family:"Courier New"'> TWQC_MACHINE
|
||
0x1000 // applies to
|
||
entire session/machine</span></p>
|
||
<p class=MsoNormal style='margin-left:.5in'>
|
||
<span style='font-size:10.0pt;
|
||
font-family:"Courier New";color:blue'>#define</span><span style='font-size:
|
||
10.0pt;font-family:"Courier New"'> TWQC_BITONAL
|
||
0x2000 // applies to Bitonal "cameras"</span></p>
|
||
<p class=MsoNormal style='margin-left:.5in'>
|
||
<span style='font-size:10.0pt;
|
||
font-family:"Courier New";color:blue'>#define</span><span style='font-size:
|
||
10.0pt;font-family:"Courier New"'> TWQC_COLOR
|
||
0x4000 // applies to Color "cameras"</span></p>
|
||
<blockquote>
|
||
<p class=MsoNormal>A
|
||
capability cannot mix TWQC_MACHINE with any of the other items listed above; otherwise all
|
||
combinations are valid (e.g. a capability could have TWQC_BITONAL and TWQC_COLOR).</p>
|
||
<p class=MsoNormal> </p>
|
||
<p class=MsoNormal>Capabilities
|
||
that describe themselves as TWQC_MACHINE are accessible at all times,
|
||
regardless of the current setting of DAT_FILESYSTEM. This
|
||
means that a capability like CAP_DUPLEXENABLED can always be negotiated, (i.e.,
|
||
even if the current camera is set to something like /Camera_Bitonal_Rear).</p>
|
||
</blockquote>
|
||
<pre> </pre><pre> </pre><pre><b><span
|
||
style='font-size:12.0pt;font-family:Arial'><a name="METADATA">METADATA</a></span></b></pre><pre> </pre>
|
||
|
||
<p class=MsoNormal>Metadata is the descriptive data that accompanies an
|
||
image. TWAIN has two primary ways of communicating this information to an
|
||
application: DAT_IMAGEINFO and DAT_EXTIMAGEINFO. Since DAT_EXTIMAGEINFO
|
||
is extensible it<69>s the only way to introduce new metadata items to the TWAIN
|
||
specification without creating a new DAT operation (and we don<6F>t really need
|
||
any more of those right now).</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>SDMI presents a bit of a problem for the application because
|
||
the stream of images makes it difficult to tell which ones go with which
|
||
document. This problem becomes compounded with things like
|
||
automatic color detection (imagine not knowing if the
|
||
application will get color or bitonal data on the next image).</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>Since the problem takes the form of a lack-of-communication
|
||
problem, the solution is more data. With the Kodak drivers the following
|
||
additional items are added to the list of DAT_EXTIMAGEINFO fields:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><span
|
||
style='font-size:10.0pt;font-family:"Courier New";color:blue'>#define</span><span
|
||
style='font-size:10.0pt;font-family:"Courier New"'>
|
||
TWEI_HDR_PAGESIDE 0x8001</span></p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><span
|
||
style='font-size:10.0pt;font-family:"Courier New";color:blue'>#define</span><span
|
||
style='font-size:10.0pt;font-family:"Courier New"'>
|
||
TWEI_HDR_IMAGENUMBER 0x8017</span></p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><span
|
||
style='font-size:10.0pt;font-family:"Courier New";color:blue'>#define</span><span
|
||
style='font-size:10.0pt;font-family:"Courier New"'>
|
||
TWEI_HDR_PAGENUMBER 0x8018</span></p>
|
||
|
||
<p class=MsoNormal style='margin-left:.5in;text-autospace:none'><span
|
||
style='font-size:10.0pt;font-family:"Courier New";color:blue'>#define</span><span
|
||
style='font-size:10.0pt;font-family:"Courier New"'> TWEI_HDR_PAGEIMAGENUMBER
|
||
0x8019</span></p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>TWEI_HDR_PAGESIDE returns 0 for a front image and 1 for a
|
||
rear image.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>TWEI_HDR_IMAGENUMBER counts from 1 to 2^32-1 the number of
|
||
images captured since the application first MSG_OPENDS<44>d the driver.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>TWEI_HDR_PAGENUMBER counts from 1 to 2^32-1 the number of
|
||
pages of paper captures since the application first MSG_OPENDS<44>d the driver.</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<p class=MsoNormal>TWEI_HDR_PAGEIMAGENUMBER counts from 1 to the number of
|
||
images captured from the document. For instance, given an SDMI session
|
||
where the driver is transferring a color and a bitonal image for the front and
|
||
a bitonal image for the rear we get the following sequence:</p>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
|
||
style='border-collapse:collapse'>
|
||
<tr>
|
||
<td width=71 valign=top style='width:53.6pt;border:solid windowtext 1.0pt;
|
||
background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Image</p>
|
||
</td>
|
||
<td width=84 valign=top style='width:63.0pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Page Side</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Image Number</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Page Number</p>
|
||
</td>
|
||
<td width=132 valign=top style='width:99.0pt;border:solid windowtext 1.0pt;
|
||
border-left:none;background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>PageImageNumber</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=71 valign=top style='width:53.6pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Color</p>
|
||
</td>
|
||
<td width=84 valign=top style='width:63.0pt;border-top:none;border-left:none;
|
||
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>Front</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>1</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>1</p>
|
||
</td>
|
||
<td width=132 valign=top style='width:99.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>1</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=71 valign=top style='width:53.6pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Bitonal</p>
|
||
</td>
|
||
<td width=84 valign=top style='width:63.0pt;border-top:none;border-left:none;
|
||
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>Front</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>2</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>1</p>
|
||
</td>
|
||
<td width=132 valign=top style='width:99.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>2</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=71 valign=top style='width:53.6pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Color</p>
|
||
</td>
|
||
<td width=84 valign=top style='width:63.0pt;border-top:none;border-left:none;
|
||
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>Rear</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>3</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>1</p>
|
||
</td>
|
||
<td width=132 valign=top style='width:99.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>3</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=71 valign=top style='width:53.6pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Color</p>
|
||
</td>
|
||
<td width=84 valign=top style='width:63.0pt;border-top:none;border-left:none;
|
||
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>Front</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>4</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>2</p>
|
||
</td>
|
||
<td width=132 valign=top style='width:99.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>1</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=71 valign=top style='width:53.6pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Bitonal</p>
|
||
</td>
|
||
<td width=84 valign=top style='width:63.0pt;border-top:none;border-left:none;
|
||
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>Front</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>5</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>2</p>
|
||
</td>
|
||
<td width=132 valign=top style='width:99.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>2</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width=71 valign=top style='width:53.6pt;border:solid windowtext 1.0pt;
|
||
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal>Color</p>
|
||
</td>
|
||
<td width=84 valign=top style='width:63.0pt;border-top:none;border-left:none;
|
||
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>Rear</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>6</p>
|
||
</td>
|
||
<td width=108 valign=top style='width:81.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>2</p>
|
||
</td>
|
||
<td width=132 valign=top style='width:99.0pt;border-top:none;border-left:
|
||
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
|
||
padding:0in 5.4pt 0in 5.4pt'>
|
||
<p class=MsoNormal align=center style='text-align:center'>3</p>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
<ul style='margin-top:0in' type=disc>
|
||
<li class=MsoNormal>- note, if TWAIN standardizes on these names it will most
|
||
likely lose the _HDR in the names.</li>
|
||
</ul>
|
||
|
||
<p class=MsoNormal> </p>
|
||
|
||
</div>
|
||
|
||
</body>
|
||
|
||
</html>
|