我正在使用NTwain将文档扫描到内存中,并且除了一部分以外,我都可以正常工作:当尝试设置要扫描的页面大小时,它将扫描整个宽度和高度,而不是仅扫描指定的大小。
我去查看了当前源上NTwain功能的详细信息,发现ICapSupportedSizes不支持任何操作。
这是我设置功能的方式(这是在开放的有效来源中)
_twain.CurrentSource.Capabilities.ICapXResolution.SetValue(new TWFix32() { Whole = 600 });
_twain.CurrentSource.Capabilities.ICapYResolution.SetValue(new TWFix32() { Whole = 600 });
_twain.CurrentSource.Capabilities.ICapPixelType.SetValue(PixelType.BlackWhite);
_twain.CurrentSource.Capabilities.ICapSupportedSizes.SetValue(SupportedSize.USLegal);
_twain.CurrentSource.Capabilities.CapDuplexEnabled.SetValue(BoolType.False);
更新:
我发现实际上所有设置都不起作用。我将其设置为黑白,即使它在设置中显示为黑白,也显示为彩色。不管什么DPI我都将其设置为默认值300,无论如何。我已经对其进行了更新,以获取源代码并使用它来更改设置并调用“启用”,但是它仍然无法正常工作。
感谢您的帮助。
谢谢!
环境信息
答案 0 :(得分:0)
您将需要使用DGImage.ImageLayout属性以通常支持的方式设置页面大小。
例如:
var ds = _twain.CurrentSource;
ds.Capabilities.ICapUnits.SetValue(Unit.Inches);
ds.DGImage.ImageLayout.Get(out TWImageLayout imageLayout);
imageLayout.Frame = new TWFrame
{
Left = 0,
Right = pageWidthInInches,
Top = 0,
Bottom = pageHeightInInches
};
ds.DGImage.ImageLayout.Set(imageLayout);