2010-02-11 182 views
8

我正在使用WIA从C#扫描仪获取图像。我可以扫描纸张,但无法正确设置页面大小,它始终默认为A4,我有时需要使用Letter或Legal。使用WIA设置页面大小(使用扫描仪)

我试着用WIA_DPS_PAGE_SIZE属性,但是当我尝试设置一个值时,我总是得到一个错误,说明该值超出了间隔(尝试了很多可能的值)。

我不能使用WIA_DPS_PAGE_SIZE = WIA_PAGE_AUTO(用于自动页面大小),但我无法在网络上找到与此相关的任何内容。

有谁知道解决方案吗?谢谢!

回答

10

我知道这实际上可能已经太晚了,但实际上可以帮助你,但它可能会变得方便以供将来参考。为了改变扫描物品属性使用这样的代码:

WIA.CommonDialog wiaDlg; 
WIA.Device wiaDevice; 
WIA.DeviceManager wiaManager = new DeviceManager(); 

wiaDlg = new WIA.CommonDialog(); 
wiaDevice = wiaDlg.ShowSelectDevice(WiaDeviceType.ScannerDeviceType, false, false); 

foreach (WIA.Item item in wiaDevice.Items) 
{ 
    StringBuilder propsbuilder = new StringBuilder(); 

    foreach (WIA.Property itemProperty in item.Properties) 
    { 
     IProperty tempProperty; 
     Object tempNewProperty; 

     if (itemProperty.Name.Equals("Horizontal Resolution")) 
     { 
      tempNewProperty = 75; 
      ((IProperty)itemProperty).set_Value(ref tempNewProperty); 
     } 
     else if (itemProperty.Name.Equals("Vertical Resolution")) 
     { 
      tempNewProperty = 75; 
      ((IProperty)itemProperty).set_Value(ref tempNewProperty); 
     } 
     else if (itemProperty.Name.Equals("Horizontal Extent")) 
     { 
      tempNewProperty = 619; 
      ((IProperty)itemProperty).set_Value(ref tempNewProperty); 
     } 
     else if (itemProperty.Name.Equals("Vertical Extent")) 
     { 
      tempNewProperty = 876; 
      ((IProperty)itemProperty).set_Value(ref tempNewProperty); 
     } 
    } 

    image = (ImageFile)item.Transfer(WIA.FormatID.wiaFormatPNG); 
} 

这意味着扫描文件将大小A4尺寸为619 X 876