2

我的任务是创建一个文档数字化程序,因为公司提出的这个程序非常糟糕。这不好。特别糟糕。经过一番研究,我开始了一个 VB.NET WPF 程序。我已经创建了登录部分并在服务器中创建了文件将要存放的文件夹,每个文件的位置都保存在 SQL 表中。无论如何,我基本上需要三样让我头疼的东西!

1) 如何使用 WIA 扫描多个页面?这是我当前的,非常原始的扫描代码:

    Dim CD As New WIA.CommonDialog
    Dim txt As String
    Dim picture As Image

    Dim F As WIA.ImageFile = CD.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType)
    txt = txt1.Text
    F.SaveFile("\\serverlocation" + txt + "." + F.FileExtension)

Txt 基本上是用户给出的名称。问题是这段代码只扫描一个页面,我怎样才能让它将多个页面保存在同一个文件/单独的文件中?(以最有效的方式)。

  1. 本着与上一个问题相同的精神,有没有办法将这些文件转换为 JPEG/PNG(BMP 占用大量空间),或者如果用户愿意,甚至可以将它们转换为 PDF 文件?

  2. 如何在扫描后显示扫描的图片?

我正在使用 VB.NET 和 WPF(不是表单)。任何答复将不胜感激:)。

编辑:最接近我使用http://forums.codeguru.com/showthread.php?439027-Windows-Image-Acquisition-%28WIA%29-Code进行多次 ADF 扫描的事情。我将 C# 转换为 VB,但代码在编译器中引发了错误。

4

1 回答 1

0
Private Function scanMe(ByVal myDPI As Integer, ByVal myHeight As Double, ByVal myWidth As Double, ByVal ShowSelectScanner As Boolean, ByVal ShowScanPreview As Boolean) As Byte()
    Dim CD As New WIA.CommonDialog
    Dim device As WIA.Device = CD.ShowSelectDevice(WIA.WiaDeviceType.ScannerDeviceType, ShowSelectScanner, False)
    Dim item As WIA.Item = device.Items(1)
    Try
        With item
            .Properties("Horizontal Resolution").Value = myDPI
            .Properties("Vertical Resolution").Value = myDPI
            .Properties("Horizontal Extent").Value = myDPI * myWidth
            .Properties("Vertical Extent").Value = myDPI * myHeight
        End With
        Dim F As WIA.ImageFile

        If ShowScanPreview Then
            F = CD.ShowAcquireImage(WiaDeviceType.ScannerDeviceType, WiaImageIntent.ColorIntent, WiaImageBias.MaximizeQuality, WIA.FormatID.wiaFormatBMP, False, True, False)
        Else
            F = CD.ShowTransfer(item, WIA.FormatID.wiaFormatPNG, False)
        End If

        Dim myBuffer As Byte() = F.FileData.BinaryData
        Return myBuffer
    Catch ex As Exception

        MsgBox(ex.Message)
        Return Nothing
    End Try
End Function
于 2013-11-29T06:03:08.983 回答