2

背景
VB.NETバックエンドを備えたASP.NETWebアプリケーションがあります。このアプリケーションでは、ユーザーは支払い要求を作成できます。支払い要求は、さらに処理するために買掛金に送られる前に、マネージャーによって承認される必要があります。リクエストページ(ユーザーがリクエスト情報を入力するページ)内に、リクエストの印刷プレビューを提供する別の.aspxページにリンクするボタンがあります。要求が必要なすべての承認者によって承認されると、VB.NET関数が作成されます。この関数にはWebBrowser、舞台裏で印刷プレビューページに移動してスナップショットを撮り、それを.tiffファイルとして保存するオブジェクトが含まれています。内部ファイル共有は、内部プロセスによって取得され、OnBaseと呼ばれる別の内部アプリケーションにインポートされて、買掛金の処理を実行します。

問題
私の問題は、my関数が印刷プレビューページのスナップショットを撮るときに、保存されたtiffの解像度が希望よりも低くなることです。つまり、OnBaseで表示したり、印刷したりすると、ちょっとくだらないように見えます。

質問
ウェブページのスナップショットが生成されるときに、生成された.tiffファイルの解像度を上げるにはどうすればよいですか?

コード

    Private Sub CaptureWebPage()
    Try
        Dim tiffFileName As String
        tiffFileName = OnBasePath & "CheckRequest_" & CurrentRequestId & ".tiff"

        Dim impersonateCode As New AliasAccount("TheUsername", "ThePassword")
        impersonateCode.BeginImpersonation()

        Dim browser As Windows.Forms.WebBrowser = New Windows.Forms.WebBrowser
        browser.ScrollBarsEnabled = False
        browser.ScriptErrorsSuppressed = True
        browser.Navigate(OnBasePath & htmlFileName)

        While browser.ReadyState <> Windows.Forms.WebBrowserReadyState.Complete
            System.Windows.Forms.Application.DoEvents()
        End While

        System.Threading.Thread.Sleep(1500)
        browser.ClientSize = New Size(950, 768)
        Dim Height As Integer = browser.Document.Body.ScrollRectangle.Bottom
        browser.ClientSize = New Size(950, Height)
        Dim bmp As Bitmap = New Bitmap(browser.Bounds.Width, Height)

        browser.DrawToBitmap(bmp, browser.Bounds)

        If File.Exists(tiffFileName) Then
            File.Delete(tiffFileName)
        End If

        If File.Exists(OnBasePath & htmlFileName) Then
            File.Delete(OnBasePath & htmlFileName)
        End If

        bmp.Save(tiffFileName.ToString(), ImageFormat.Tiff)
        bmp.Dispose()

        impersonateCode.EndImpersonation()

    Catch ex As Exception
        Throw
    End Try
End Sub

追加情報
ビットマップオブジェクト のメソッドを使用しようとしました.SetResolutionが、生成された.tiffファイルの解像度は実際には変更されません。私はこれを何度もグーグルで解決策を見つけようとしましたが、有用なものは何も見つかりませんでした。

前もって感謝します

4

2 に答える 2

3

画面の「解像度」は、印刷の「解像度」よりもはるかに低くなります。通常、デスクトップモニターは約100ppiであり、机の上の通常のプリンターは600dpiである可能性があります。

Webページの高解像度レンダリングを取得するための唯一の提案は、現在使用している解像度の3倍の解像度を使用するようにスクリーンショットを取得するものを構成し、ズームを300%に設定することです。テキスト要素とベクターグラフィックがスムーズにレンダリングされます。画像は引き続きWeb解像度であり、サイズを変更するときに補間によって画質が低下する場合もあります。

于 2012-11-09T15:13:36.187 に答える
2

ページをPDF形式の仮想プリンタードライバーに印刷してみてください。OnBaseは、画像ファイルに対して奇妙なことをすることがあります。カラーやグレースケールのTIFFは好きではありません。代わりに、カラー/グレースケールにJPEGを使用してください。

于 2013-12-18T17:24:32.527 に答える