2

私はドキュメントのデジタル化プログラムを作成する任務を負っていました。会社が購入したものはひどいものに近いからです。これは悪いです。すごく悪い。いくつかの調査の後、VB.NET WPF プログラムを開始しました。すでにログイン セクションを作成し、ファイルが保存されるサーバーにフォルダーを作成し、各ファイルの場所を SQL テーブルに保存しました。とにかく、私は基本的に私に頭痛の種を与えている3つのものが必要です!

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 つのページしかスキャンしないことです。複数のページを同じファイルまたは別のファイルに保存するにはどうすればよいですか? (どちらが最もうまくいくか)。

  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 に答える