2

背景
我有一个带有 VB.NET 后端的 ASP.NET Web 应用程序。在此应用程序中,用户可以创建付款请求,这些请求必须由经理批准,然后才能发送到应付账款进行进一步处理。在我的请求页面(用户输入请求信息的页面)中,我有一个链接到单独的.aspx 页面的按钮,该页面提供请求的打印预览。当请求被所有必需的批准者批准时,我有一个 VB.NET 函数,其中包含一个WebBrowser对象,该对象导航到幕后的打印预览页面并对其进行快照,然后将其保存为 .tiff 文件到内部文件共享,然后由内部进程获取并导入另一个名为 OnBase 的内部应用程序,以处理应付账款。

问题
我的问题是,当我的函数拍摄打印预览页面的快照时,保存的 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。

我对获得更高分辨率的网页渲染的唯一建议是将抓取屏幕截图的内容配置为使用您现在使用的 3 倍分辨率,然后将其缩放设置为 300%。文本元素和矢量图形将被平滑渲染。图像仍然是他们的网络分辨率,你甚至可能在调整大小时通过插值损失图像质量。

于 2012-11-09T15:13:36.187 回答
2

您可以尝试将页面以 PDF 格式打印到虚拟打印驱动程序。我发现 OnBase 有时会对图像文件做一些奇怪的事情,它不喜欢彩色或灰度 TIFF。而是将 JPEG 用于彩色/灰度。

于 2013-12-18T17:24:32.527 回答