2012-11-09 22 views
2

背景
我有一個帶有VB.NET後端的ASP.NET web應用程序。在這個應用程序中,用戶可以創建支付請求,這些支付請求必須經過經理的批准才能發送到應付賬款進行進一步處理。在我的請求頁面(用戶輸入請求信息的頁面)中,我有一個鏈接到單獨的.aspx頁面的按鈕,該頁面提供請求的打印預覽。當請求被所有需要的審批者批准時,我有一個VB.NET函數,其中包含一個WebBrowser對象,該對象導航到幕後的打印預覽頁面並快速拍攝,然後將其保存爲.tiff文件內部文件共享,然後由內部進程拾取並導入另一個名爲OnBase的內部應用程序以處理應付帳款。VB.NET WebBrowser對象在低分辨率下捕獲遠程網頁

的問題
我的問題是,當我的函數將打印預覽頁面的快照,保存的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文件的分辨率。我試圖谷歌這無數​​次找到解決方案,但沒有發現任何有用的東西。

提前致謝

回答

3

屏幕「分辨率」遠低於打印「分辨率」。通常臺式機顯示器大約爲100ppi,桌面上的普通打印機可能爲600dpi。

我得到更高分辨率的網頁渲染的唯一建議是配置什麼是抓取屏幕截圖以使用您現在使用的分辨率3x,然後將其縮放比例設置爲300%。文本元素和矢量圖形將平滑呈現。圖像仍然是他們的網絡分辨率,並且在確定尺寸時,您甚至可能會通過插值失去圖像質量。

+0

我考慮過這個,但我不知道它如何在OnBase中縮放。無論哪種方式,我會給它一個鏡頭,看看它是如何結果。再次感謝。 – ORION

+0

我還沒有找到一個好的解決方案,但我感謝您花時間回答我的問題。謝謝。 – ORION

+0

謝謝你的時間。不勝感激。 +1 – ORION

2

您可以嘗試將頁面打印到PDF格式的虛擬打印驅動程序。我發現OnBase有時會對圖像文件做奇怪的事情,它不喜歡彩色或灰度級TIFF。而是使用JPEG進行彩色/灰度。

+0

謝謝你的時間。 +1 – ORION