ntwain/Spec/Kodak/GettingStarted.htm
2014-04-15 20:05:44 -04:00

1178 lines
49 KiB
HTML
Raw Blame History

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 12">
<meta name=Originator content="Microsoft Word 12">
<link rel=File-List href="GettingStarted_files/filelist.xml">
<title>Kodak Document Scanners</title>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>50484369</o:Author>
<o:LastAuthor>50484369</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>5</o:TotalTime>
<o:Created>2012-06-20T19:28:00Z</o:Created>
<o:LastSaved>2012-06-20T19:33:00Z</o:LastSaved>
<o:Pages>2</o:Pages>
<o:Words>1762</o:Words>
<o:Characters>10047</o:Characters>
<o:Company>Microsoft</o:Company>
<o:Lines>83</o:Lines>
<o:Paragraphs>23</o:Paragraphs>
<o:CharactersWithSpaces>11786</o:CharactersWithSpaces>
<o:Version>12.00</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<link rel=themeData href="GettingStarted_files/themedata.thmx">
<link rel=colorSchemeMapping href="GettingStarted_files/colorschememapping.xml">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="&#45;-"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-536870145 1107305727 0 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
h1
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 1 Char";
margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:justify;
page-break-before:always;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:1;
font-size:18.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
h2
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 2 Char";
margin-top:6.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:2;
font-size:14.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
h3
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 3 Char";
margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:3;
font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
h4
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 4 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:4;
font-size:14.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
h5
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 5 Char";
margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:5;
font-size:10.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
font-weight:normal;}
h6
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 6 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:6;
font-size:11.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
font-weight:normal;
font-style:italic;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 7 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:7;
font-size:10.0pt;
font-family:"Arial","sans-serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 8 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:8;
font-size:10.0pt;
font-family:"Arial","sans-serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
font-style:italic;}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 9 Char";
margin:0in;
margin-bottom:.0001pt;
line-height:12.0pt;
mso-pagination:widow-orphan;
mso-outline-level:9;
font-size:1.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
p.MsoToc1, li.MsoToc1, div.MsoToc1
{mso-style-update:auto;
mso-style-noshow:yes;
mso-style-priority:39;
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-link:"Body Text 2 Char";
margin-top:0in;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
line-height:200%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-link:"Body Text 3 Char";
margin-top:0in;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
font-size:8.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
a:link, span.MsoHyperlink
{mso-style-noshow:yes;
mso-style-priority:99;
color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-noshow:yes;
mso-style-priority:99;
color:purple;
text-decoration:underline;
text-underline:single;}
span.Heading1Char
{mso-style-name:"Heading 1 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 1";
mso-ansi-font-size:14.0pt;
mso-bidi-font-size:14.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#365F91;
mso-themecolor:accent1;
mso-themeshade:191;
font-weight:bold;}
span.Heading2Char
{mso-style-name:"Heading 2 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 2";
mso-ansi-font-size:13.0pt;
mso-bidi-font-size:13.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#4F81BD;
mso-themecolor:accent1;
font-weight:bold;}
span.Heading3Char
{mso-style-name:"Heading 3 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 3";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#4F81BD;
mso-themecolor:accent1;
font-weight:bold;}
span.Heading4Char
{mso-style-name:"Heading 4 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 4";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#4F81BD;
mso-themecolor:accent1;
font-weight:bold;
font-style:italic;}
span.Heading5Char
{mso-style-name:"Heading 5 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 5";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#243F60;
mso-themecolor:accent1;
mso-themeshade:127;}
span.Heading6Char
{mso-style-name:"Heading 6 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 6";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#243F60;
mso-themecolor:accent1;
mso-themeshade:127;
font-style:italic;}
span.Heading7Char
{mso-style-name:"Heading 7 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 7";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#404040;
mso-themecolor:text1;
mso-themetint:191;
font-style:italic;}
span.Heading8Char
{mso-style-name:"Heading 8 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 8";
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#404040;
mso-themecolor:text1;
mso-themetint:191;}
span.Heading9Char
{mso-style-name:"Heading 9 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 9";
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#404040;
mso-themecolor:text1;
mso-themetint:191;
font-style:italic;}
span.BodyText2Char
{mso-style-name:"Body Text 2 Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Body Text 2";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
span.BodyText3Char
{mso-style-name:"Body Text 3 Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Body Text 3";
mso-ansi-font-size:8.0pt;
mso-bidi-font-size:8.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;}
p.style4, li.style4, div.style4
{mso-style-name:style4;
mso-style-unhide:no;
margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:justify;
page-break-before:always;
mso-pagination:widow-orphan;
page-break-after:avoid;
font-size:18.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
font-weight:bold;}
p.style2, li.style2, div.style2
{mso-style-name:style2;
mso-style-unhide:no;
margin-top:6.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
page-break-after:avoid;
font-size:14.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
font-weight:bold;
font-style:italic;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
<div class=WordSection1>
<p class=MsoNormal>Kodak KDS TWAIN Driver</p>
<p class=MsoNormal>Getting Started</p>
<p class=MsoNormal>20-June-2012</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal><b><u><span style='font-size:14.0pt'>Contents</span></u></b></p>
<p class=MsoToc1>1.&nbsp;&nbsp;&nbsp;&nbsp; <a href="#_Overview">Overview</a>......................................................................................................................
2</p>
<p class=MsoToc1>2.&nbsp;&nbsp;&nbsp;&nbsp; <a
href="#_GUI_Based_Applications_(the_old_way">GUI Based Applications (the old
way)</a>...........................................................................
3</p>
<p class=MsoToc1>3.&nbsp;&nbsp;&nbsp;&nbsp; <a
href="#_Programmatic_Based_Applications_(th">Programmatic Based Applications
(the newer way)</a>........................................................ 4</p>
<p class=MsoToc1>4.&nbsp;&nbsp;&nbsp;&nbsp; <a
href="#_Profile_Based_Applications_(the_bes">Profile Based Applications (the
best way)</a>......................................................................
5</p>
<p class=MsoToc1>5.&nbsp;&nbsp;&nbsp;&nbsp; <a href="#_Decoupling">Decoupling</a>....................................................................................................................
6</p>
<p class=MsoToc1>6.&nbsp;&nbsp;&nbsp;&nbsp; <a
href="#_Logging_and_the_Simulator">Logging and the Simulator</a>..............................................................................................
7</p>
<p class=MsoToc1>7.&nbsp;&nbsp;&nbsp;&nbsp; <a href="#_Sample_Code">Sample Code</a>................................................................................................................
8</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<h1 style='margin-left:.25in;text-indent:-.25in'><a name="_Toc56932519"></a><a
name="_Toc39263860"></a><a name="_Toc32301880"></a><a name="_Overview"></a><span
style='mso-fareast-font-family:"Times New Roman"'>1.</span><span
style='font-size:7.0pt;mso-fareast-font-family:"Times New Roman"'>&nbsp;&nbsp; </span><span
style='mso-fareast-font-family:"Times New Roman"'>Overview<o:p></o:p></span></h1>
<p class=MsoNormal>Developing an application using any image capture
application programming interfaces (API) is a challenge.&nbsp; The basic
premise of these systems is that the application discovers a device through its
driver, interrogates it about its capabilities, sets a session up, and then
starts scanning.&nbsp; The problem is that there are a large number of
capabilities all interacting in a variety of ways (some obvious and some not),
so that getting the driver to do exactly what is desired is not always as
straightforward as could be hoped.&nbsp; And, as with any API, things usual
work well until errors are encountered, then the amount of code increases
dramatically to accommodate all the possible results for any given operation.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>TWAIN provides ways to mitigate this work, though it may not
be obvious from reading the specification.&nbsp; This document will outline
some development strategies designed to create robust, flexible
applications.&nbsp; It is assumed that the reader has some familiarity with TWAIN,
either from previous coding experience or from reading some of the TWAIN
specification.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<h1 style='margin-left:.25in;text-indent:-.25in'><a name="_Toc56932520"></a><a
name="_GUI_Based_Applications_(the_old_way"></a><span style='mso-fareast-font-family:
"Times New Roman"'>2.</span><span style='font-size:7.0pt;mso-fareast-font-family:
"Times New Roman"'>&nbsp;&nbsp; </span><span style='mso-fareast-font-family:
"Times New Roman"'>GUI Based Applications (the old way)<o:p></o:p></span></h1>
<p class=MsoNormal>When TWAIN was developed in the early 1990<39>s the single
focus of the effort was to bring applications and drivers together.&nbsp;
Previously an application writer would select a device, like a flatbed scanner,
get the driver for it and write the application code to talk to that
device.&nbsp; Support for a new device meant getting its driver and writing
code to support it as well.&nbsp; TWAIN was designed to abstract away that
driver code, hiding it behind a common API.&nbsp; Now it was possible for an
application to start scanning and capture image data in a way that worked for
any device <span class=SpellE>the</span> came with a TWAIN driver.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>There was one area that the standard did not try to handle
at first, and that was capability negotiation.&nbsp; True, TWAIN came with a
selection of programmatic capabilities, so that it was possible to negotiate
some kinds of values, but the selection was small.&nbsp; Instead drivers came
with internally generated dialogs.&nbsp; The application invoked these dialogs
and left all the problems of negotiation to the driver.&nbsp; The benefit was
that an application could realize the full functionality of a device while
writing very little code.&nbsp; The problem was that scanner vendors all had
very different ideas about what these dialogs should look like, so a user
moving from using one scanner to another was very likely to end up working with
a very different user interface.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<h1 style='margin-left:.25in;text-indent:-.25in'><a name="_Toc56932521"></a><a
name="_Programmatic_Based_Applications_(th"></a><span style='mso-fareast-font-family:
"Times New Roman"'>3.</span><span style='font-size:7.0pt;mso-fareast-font-family:
"Times New Roman"'>&nbsp;&nbsp; </span><span style='mso-fareast-font-family:
"Times New Roman"'>Programmatic Based Applications (the newer way)<o:p></o:p></span></h1>
<p class=MsoNormal>Beginning with version 1.7 of the TWAIN specification and
continuing through 1.8 and 1.9 an attempt has been made to allow for more
sophisticated support of scanner capabilities.&nbsp; In fact the TWAIN
specification doubled in size going from 1.7 to 1.8.&nbsp; The original 1.5
description of TWAIN allowed for the following kinds of things:&nbsp; standard
and custom capability definitions, capabilities using a variety of container
types (enumerations and ranges among them), self-descriptive data types
(integers, strings, etc<74>), and access modes (read-only, read-write, etc).&nbsp;
1.8 introduced the ability to independently address the image generating
devices (for instance the front and rear cameras, or the color and <span
class=SpellE>bitonal</span> cameras).&nbsp; It made it possible to write
applications that could drive most or all of the features of a scanner without
resorting to the custom user interface provided by the driver.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>The problem was that most driver writers created their
drivers for specific applications and since these applications didn<64>t
significantly exercise the programmatic interface, the drivers often did not
perform well when accessed in this way.&nbsp; Improvements in the testing
documentation and the basic specification, and the stated desire from
applications writers has resulted in better programmatic drivers, but that
still leaves another problem.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>Programmatic interfaces must reflect the abilities of their
drivers.&nbsp; They must constrain possible values as dictated by the device,
and they must prevent illegal combinations of functionality.&nbsp; What this
means is that an application may not be limited to just asking what the allowed
values are in a range or an enumeration.&nbsp; If the application is currently
negotiating on a color camera, then ICAP_THRESHOLDING may not be available
until the camera context is changed to <span class=SpellE>bitonal</span>.&nbsp;
If the ICAP_XFERMECH is set to allow native mode transfers (bitmaps on Windows
systems) then ICAP_COMPRESSION may only report a possible value of
<EFBFBD>none<EFBFBD>.&nbsp; So the application has to conduct inquiries on permutations of
settings within the driver.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>The benefit to all this hard work is that the application
can present a single unified interface to the user, regardless of the physical
device currently in use, which means that end users do not need to be retrained
(save maybe for basic functional differences) anytime they operate a new
scanner with the application.&nbsp; Over the past several years more and more
application writers have been opting to rely on programmatic control, or in
some cases a combination of programmatic control for the most commonly used
features with the ability to raise the driver GUI for the more rarely used
features.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<h1 style='margin-left:.25in;text-indent:-.25in'><a name="_Toc56932522"></a><a
name="_Profile_Based_Applications_(the_bes"></a><span style='mso-fareast-font-family:
"Times New Roman"'>4.</span><span style='font-size:7.0pt;mso-fareast-font-family:
"Times New Roman"'>&nbsp;&nbsp; </span><span style='mso-fareast-font-family:
"Times New Roman"'>Profile Based Applications (the best way)<o:p></o:p></span></h1>
<p class=MsoNormal>There is a third alternative that was introduced with little
fanfare in the TWAIN 1.7 specification.&nbsp; The operation DAT_CUSTOMDSDATA
(if supported) can be used to take a snapshot of the current state of the
driver.&nbsp; It can also be used to restore the settings of the driver using
one of these snapshots.&nbsp; 1.7 also introduced the concept of a <20>settings
only<EFBFBD> TWAIN GUI through the DG_CONTROL / DAT_USERINTERFACE /
MSG_ENABLEDSUIONLY.&nbsp; In this mode the user can set whatever features they
want from the TWAIN supplied GUI, but their only finishing option is to select
OK or CANCEL.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>The application writer creates two programs.&nbsp; One
program raises the TWAIN GUI, allows the user to set whatever values they want,
then when OK is hit takes a snapshot of the driver using DAT_CUSTOMDSDATA and
saves the result in a file tagged with some useful name or description from the
user, like <20>photo settings<67> or <20>insurance form settings.<2E>&nbsp; The second
program is the scanning application, but all it presents to the user is a list
of these snapshot or profile descriptions.&nbsp; So the user selects <20>photo
settings,<2C> the application reads that file from disk, sends the data to the
driver using DAT_CUSTOMDSDATA, and begins scanning.&nbsp; Note that it is still
possible to raise the GUI or to programmatically negotiate values; the intention
is to minimize that need.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>In this way we get full access to the features of the device
without writing a lot of code, and protect the scanner operator from having to
be retrained anytime a new scanner shows up.&nbsp; All of the Kodak Document
Scanners (5000/7000/9000/3000/4000/i30/i40/i200/i600/i800/i900/i1100/i1200/i1300/i1400/i1800/i2000/i2900/i3000/i4000/i5000)
support this command.&nbsp; Most application writers should give serious
thought to using this technique to drive their scanner.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<h1 style='margin-left:.25in;text-indent:-.25in'><a name="_Toc56932523"></a><a
name="_Decoupling"></a><span style='mso-fareast-font-family:"Times New Roman"'>5.</span><span
style='font-size:7.0pt;mso-fareast-font-family:"Times New Roman"'>&nbsp;&nbsp; </span><span
style='mso-fareast-font-family:"Times New Roman"'>Decoupling<o:p></o:p></span></h1>
<p class=MsoNormal>One of the most powerful features in TWAIN is its ability to
totally decouple the negotiation phase (state 4/5) from the image capture phase
(state 6/7).&nbsp; From the earliest versions of the scanner the application
writer has been encouraged to look at the bitmap information for a native
transfer, the header information for a file transfer, or the DAT_IMAGEINFO
information for a memory transfer.&nbsp; Starting with version 1.7 and
continuing with 1.8 and 1.9 of the TWAIN specification we have supported the
DAT_EXTIMAGEINFO command, which allows for the collection of a block of
metadata associated with an image.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>The gist of it is: never assume that what was negotiated is
what is going to be captured by the scanner.&nbsp; This applies to the
following items (there may be more): ICAP_AUTOMATICBORDERDETECTION (custom
ICAP_CROPPINGMODE), ICAP_AUTOMATICDESKEW, and ICAP_PIXELTYPE and all related
capabilities (when using the color toggle patch).&nbsp; The application should
be ready for anything to come from the scanner.&nbsp; That does not mean it has
to accept the data it is receiving, if it cannot handle a color image when
waiting for a <span class=SpellE>bitonal</span> image, then it should throw an
error to the user.&nbsp; However, the application should not ASSUME that the
data coming from the scanner is exactly what it negotiated.&nbsp; If an
application obeys this basic rule of decoupling then it will be never be
surprised by the behavior of the scanner in a way that results in a failure or
a crash.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<h1 style='margin-left:.25in;text-indent:-.25in'><a name="_Toc56932524"></a><a
name="_Logging_and_the_Simulator"></a><span style='mso-fareast-font-family:
"Times New Roman"'>6.</span><span style='font-size:7.0pt;mso-fareast-font-family:
"Times New Roman"'>&nbsp;&nbsp; </span><span style='mso-fareast-font-family:
"Times New Roman"'>Logging and the Simulator<o:p></o:p></span></h1>
<p class=MsoNormal>Other documents in this kit talk about both of these
items.&nbsp; The purpose of this section is to show how they can be used to aid
in development.&nbsp; When first writing an application for a Kodak Document
Scanner it might be helpful to see some of the activity that occurs through
TWAIN while the device is being driven by another application.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>The Scanner Validation Tool (SVT) is not necessarily the
best application in the world for this kind of work, but at least it is
something.&nbsp; If you go into the CONST.INI file and turn on debugging so
that it traces the TWAIN activity:</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
; Versions 2/3/4</p>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Debug=1</p>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class=SpellE>DebugFilter</span>=<span class=SpellE>kdscaps</span> <span
class=SpellE>kdsdat</span></p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
; Version 5+</p>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Debug=1</p>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class=SpellE>DebugFilter</span>=TWAIN</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>Then when you run the SVT the driver will generate a log of all
the activity that takes place between it and the application.&nbsp; This
information is written using TWAIN constants that can be found in the
specification and in the TWAIN.H file.&nbsp; Use this information to understand
what is being done to setup the driver and capture the images.&nbsp; Please
note that SVT is a GUI Based Application (in fact it is a diagnostic tool), so
it<EFBFBD>s not very sophisticated in its ability to programmatically negotiate
settings.&nbsp; It is, however, very sophisticated in its ability to drive the
scanner to its maximum throughput speeds.&nbsp; It also has a variety of error
handling abilities, so it responds well to jams and <span class=SpellE>multifeeds</span>,
among the other things that can happen.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>You can use the simulator to get exactly the same results
you would with a real scanner, which is especially useful for testing against
all the varied models supported by the driver.</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<h1 style='margin-left:.25in;text-indent:-.25in'><a name="_Toc56932525"></a><a
name="_Sample_Code"></a><span style='mso-fareast-font-family:"Times New Roman"'>7.</span><span
style='font-size:7.0pt;mso-fareast-font-family:"Times New Roman"'>&nbsp;&nbsp; </span><span
style='mso-fareast-font-family:"Times New Roman"'>Sample Code<o:p></o:p></span></h1>
<p class=MsoNormal>The TWAIN Working Group website (<a
href="http://www.twain.org/">www.twain.org</a>) has sample application
code.&nbsp; We will include any sample code with this kit as it seems
appropriate.</p>
<p class=MsoNormal>&nbsp;</p>
</div>
</body>
</html>