image2data

Der Tech-Blog

...weitermachen, wo OCR aufhört

Plugin "Scanneransteuerung" (i2dxTWAIN)

Apr 262015

Häufig liegen Scans noch gar nicht vor, sondern müssen erst erstellt werden. Dies geschieht durch Arbeitsplatz oder Netzwerk-Scanner, die u.a. auch aus einem image2data Skript angesteuert werden können. Das ist i.d.R. einfacher für den Benutzer, der sich dann nicht mit proprietären TWAIN-Oberflächen auseinander zu setzen braucht und keine Dateien umzubenennen oder im Dateisystem hin und her schieben muß, um die Verarbeitung anzustoßen. All diese Parameter und Folgeaktionen können im Skript beschrieben werden und sind damit für den Benutzer nicht änderbar.

Das folgende Skript ermittelt alle auf dem System verfügbaren Scanner, liest einen Scan von dem ersten gefundenen ein und speichert das Bild als "c:\test.tif" ab.

// **************************************************************
// * sample_i2dxtwain.i2dspt                                    *
// *                                                            *
// * Sample script for the i2dxTwain (scanner handling) plugin  *
// * REQUIRES THE INSTALLED PLUGIN TO COMPILE AND RUN!          *
// *                                                            *
// * Press F9 to execute the code or F7/F8 to debug it          *
// *                                                            *
// * Contact www.norpa.eu if the plugin is required but missing *
// **************************************************************
 
{$I i2dxTwain}
 
// Ti2dxTwainFileFormat = (ffBMP, ffJPG, ffPNG, ffTIF);
// Ti2dxTwainImageFormat = (ifBlackWhite, ifGrayScale, ifColor, ifTrueColor);
 
var
  iCount: Integer;
 
  sAvailableScanners: String;
  oAvailableScanners: TStringList;
 
begin
  oAvailableScanners := TStringList.Create;
 
  try
    // List all scanners available on the system
    i2dxTwainGetAvailableScanners ('|', sAvailableScanners);
 
    i2dSplitString(sAvailableScanners, '|', oAvailableScanners);
    if oAvailableScanners.Count = 0 then
      i2dCancelProcess('No TWAIN-scanners were found on this system');
 
    for iCount := 0 to oAvailableScanners.Count - 1 do
      i2dDebugOut(Format('Available scanner no. %d: "%s"', [iCount, oAvailableScanners[iCount]]));
 
    // Try to acquire an image from the first scanner found
    if i2dMessageBox(Format('Trying to aquire a b/w tif-image with 200 DPI from "%s" and save it as "c:\test.tif"?', [oAvailableScanners[0]]),
       mtConfirmation, [mbYes, mbNo]) = mrYes then
      i2dxTwainScanImage(oAvailableScanners[0], ffTIF, ifBlackWhite, 0, 0, 0, 0, 200, False, True, 'c:\test.tif', 'Any more pages to scan?');
  finally
    oAvailableScanners.Free;
  end;
end.

Atom

powered by Nibbleblog