Сканирование нескольких страниц с использованием WIA на windows 7 - PullRequest
6 голосов
/ 24 февраля 2020

Я пытаюсь отсканировать несколько страниц из устройства подачи, хотя сканер автоматически сканирует все страницы, когда я вызываю функцию ShowTransfer (без использования al oop), я получаю только первую страницу.

что я делаю не так?

вот мой код:

  WIA.Item item = device.Items[1] as WIA.Item;

            if (pages > 1)
            {
                // Set to feeder
                SetWIAProperty(device.Properties, 44, 1);
            }

            SetWIAProperty(device.Properties, WIA_DEVICE_PROPERTY_PAGES_ID, 1);

            AdjustScannerSettings(item, 150, 0, 0, 1250, 1700, 0, 0, 1);
            try
            {

                // scan image
                WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();
                WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item, wiaFormatBMP, false);

                // save to temp file
                string fileName = Path.GetTempFileName();
                File.Delete(fileName);
                image.SaveFile(fileName);
                image = null;
                // add file to output list
                images.Add(Image.FromFile(fileName));
            }
            catch (Exception exc)
            {
                throw exc;
            }

1 Ответ

3 голосов
/ 27 февраля 2020

Я думаю, что эта ссылка делает то, что вы хотите сделать

http://forums.codeguru.com/showthread.php?439027-Windows-Image-Acquisition- (WIA) -Код

По сути, вам необходимо проверить после сохранения каждого страница, чтобы увидеть, есть ли еще страницы и продолжать цикл

                hasMorePages = false; //assume there are no more pages
                if (documentHandlingSelect != null)
                    //may not exist on flatbed scanner but required for feeder
                {
                    //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);
                    }
                }
...