WIA Настройката на размера на страницата не работи

Опитвам се да направя приложение, което може да сканира документи с помощта на C# и WIA. Но се натъкнах на проблем при настройването на свойството размер на страницата. Когато стартирам процеса на сканиране, приложението ми извежда грешка:

Възникна необработено изключение от тип „System.Runtime.InteropServices.COMException“ в DigiKnjiga.exe

Допълнителна информация: Изключение от HRESULT: 0x80210067

Опитах това, използвайки тези свойства: PageSize(3097), PageWidth(3098) & PageHeight(3099), HorizontalExtent(6151) & VerticalExtent(6152). Но задаването на някоя от тези стойности хвърля гореспоменатото изключение.

Ето събитието, което стартира процеса на сканиране:

private void scanNew_Click(object sender, EventArgs e)
    {
        if (Scanner.ChosenDevice > 0)
        {
            Device = deviceManager.DeviceInfos[Scanner.ChosenDevice].Connect();

            switch (Scanner.ColorCode)
            {
                case 0://color
                    Device.Items[1].Properties["6146"].set_Value(1);
                    break;
                case 1://grayscale
                    Device.Items[1].Properties["6146"].set_Value(2);
                    break;
                case 2://black and white
                    Device.Items[1].Properties["6146"].set_Value(4);
                    break;
            }

            //(DPI)
            Device.Items[1].Properties["6147"].set_Value(Scanner.DPI);
            Device.Items[1].Properties["6148"].set_Value(Scanner.DPI);

            //brightness
            Device.Items[1].Properties["Brightness"].set_Value(Scanner.Brightness);

            //contrast
            Device.Items[1].Properties["Contrast"].set_Value(Scanner.Contrast);

            switch (Scanner.Format)
            {
                case 0://A3
                    Device.Items[1].Properties["3097"].set_Value(10);
                    //Device.Items[1].Properties["6151"].set_Value(11692);
                    //Device.Items[1].Properties["6152"].set_Value(16535);
                    break;
                case 1://A4
                    Device.Items[1].Properties["3097"].set_Value(0);
                    //Device.Items[1].Properties["6156"].set_Value(1);
                    //Device.Items[1].Properties["3098"].set_Value(8267);
                    //Device.Items[1].Properties["3099"].set_Value(11692);
                    ////Device.Items[1].Properties["6151"].set_Value(1165 * 2);
                    ////Device.Items[1].Properties["6152"].set_Value(1653 * 2);
                    ////Device.Items[1].Properties["3097"].set_Value("0");
                    break;
                case 2://A5
                    Device.Items[1].Properties["3097"].set_Value(11);
                    //Device.Items[1].Properties["6151"].set_Value(1165);
                    //Device.Items[1].Properties["6152"].set_Value(1653);
                    break;
            }

            switch (Scanner.FileType)
            {
                case 0://JPEG
                    image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatJPEG);
                    break;
                case 1://PNG
                    image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatPNG);
                    break;
                case 2://BMP
                    image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatBMP);
                    break;
                case 3://TIFF
                    image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatTIFF);
                    break;
            }

            byte[] imageBytes = (byte[])image.FileData.get_BinaryData();
            MemoryStream ms = new MemoryStream(imageBytes);
            Image image2 = Image.FromStream(ms);

            Bitmap smaller= new Bitmap(image2 , new Size(prikazZbirke.Width, prikazZbirke.Height));
            prikazStrani.Size = new System.Drawing.Size(image2 .Width, image2 .Height);
            prikazStrani.Location = new Point(0, 0);
            prikazStrani.Image = image2 ;
            image2 .Save("test.jpg");
        }
    }

Чудя се дали някой знае решението на този проблем и ви благодаря предварително за отговорите. И в същото време се извинявам за всички правописни грешки, тъй като не съм англичанин.


person MrSnoopy    schedule 24.07.2014    source източник
comment
Опитвали ли сте да търсите в Google 0x80210067? Това може да даде известна представа. Ето най-популярното попадение: social.msdn.microsoft.com/Forums/vstudio/en-US/   -  person RenniePet    schedule 24.07.2014
comment
Благодаря ви за отговора @RenniePet. Посещавал съм този сайт преди и единственото нещо, което мога да разбера от него, че изключението е грешка YOURERROR или нещо подобно. Не знам точно какво означава това.   -  person MrSnoopy    schedule 25.07.2014


Отговори (1)


промяна на случай на превключване, както следва, може да работи (но се уверете, че това свойство (3097) се поддържа от вашия скенер)

 switch (Scanner.Format)
        {
            case 0://A3
                Device.Properties["3097"].set_Value(10);

                break;
            case 1://A4
                Device.Properties["3097"].set_Value(0);

                break;
            case 2://A5
                Device.Properties["3097"].set_Value(11);
                break;
        }
person mohammadSayadi    schedule 11.10.2014