Сканирование нескольких документов с помощью WIA - PullRequest
0 голосов
/ 06 марта 2012

Я хочу сканировать несколько документов.И я написал код для сканирования, но я не понимаю, как сканировать несколько документов в C #.

 private void BtnScan_Click(object sender, EventArgs e)
    {
        // Scanner selected?
        var device = Devices.SelectedItem as Scanner;
        if (device == null)
        {
            MessageBox.Show("Please select a device.", "Warning",
                            MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }
 Devices.SelectedIndex = 0;
        var image = device.Scan();
    // Scan
        var image = device.Scan();

        // Save the image
           var path = @"c:\scan.jpeg";
        if (File.Exists(path))
        {
            File.Delete(path);
        }
        image.SaveFile(path);
    }

Ответы [ 2 ]

1 голос
/ 06 марта 2012
bool hasMorePages = true;
int numPages = 0;
while ( hasMorePages )
{
    WIA.ImageFile img = null;
    WIA.Item Item = WiaDev.Items[1] as WIA.Item;

    img = (ImageFile)WiaCommonDialog.ShowTransfer(Item, wiaFormatJPEG, false);


    //process image here

    //maybe save to file

    numPages++;
    img = null;
    Item = null;

    //determine if there are any more pages waiting
    Property documentHandlingSelect = null;
    Property documentHandlingStatus = null;
    foreach (Property prop in WiaDev.Properties)
    {
        if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
            documentHandlingSelect = prop;
        if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
            documentHandlingStatus = prop;
    }

    hasMorePages = false; 
    if ( documentHandlingSelect != null )
    {
        //check for document feeder
        if ( (Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0 )
        {
            hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
        }
    }

}
0 голосов
/ 06 марта 2012

Вы можете изменить свой код, чтобы продолжить сканирование, пока пользователь этого хочет:

//Initialization...
bool continueScanning = true;
while(continueScanning)
{
    //Scan and save (modify path accordingly)
    continueScanning = (MessageBox.Show("Continue scanning?", "Scan", MessageBoxButton.YesNo) == MessageBoxResult.Yes);
}
...