2012-12-07 24 views
6

我想使用背景圖像,當我將它放入Reporting Services 2008 R2中時,圖像dpi會降低到96 dpi。 (而不是300)在Reporting Services中,將背景圖像的質量提高到96 dpi以上

這太低了,用戶不可讀,我擔心。

當我去上網,我覺得這樣的結果:

http://social.technet.microsoft.com/Forums/en-US/sqlreportingservices/thread/48de91f9-1844-40c1-9614-5ead0b4b69a5#P1Q14

問題14:如何提高在報告2005年服務出口報告的PDF質量?

:在Reporting Services 2005的PDF渲染器調整大小,這是在96 DPI給出無論什麼dpi的圖像時 你把它傳遞給渲染的所有圖像。這意味着,PDF中的300 DPI圖像或者甚至是600 DPI圖像的尺寸將被確定爲只有96 DPI。在 換句話說,你的高DPI圖像可能會比預期的大。
儘管將圖像大小設置爲96 DPI,PDF渲染器 似乎以高於96 DPI的質量渲染更高的DPI圖像。 即使尺寸錯誤,圖像實際上也會以更高的質量呈現。一個必要的解決方法是根據96 DPI計算將圖像的大小設置爲適當的英寸數 。然後使用 Bitmap.SetResolution將圖像設置爲至少300 DPI。這可能是 提供更高質量的圖像,這是合適的 在報告中正確適合的像素數。

但我不知道如何使用Bitmap.SetResolution,我使用經典的報表查看器Web控件,我需要一個功能完整的PDF導出。

PS:也許這個問題已在Reporting Services 2012中解決。有人有一些信息嗎?

Regards

回答

4

我發現了一個網頁,解釋如何導出PDF與良好的dpi。 http://codeproject.com/Articles/95750/High-fidelity-printing-through-the-SSRS-Report-Vie

的關鍵是用XML代碼

 var sb = new System.Text.StringBuilder(1024); 
     var xr = System.Xml.XmlWriter.Create(sb); 
     xr.WriteStartElement("DeviceInfo"); 
     xr.WriteElementString("DpiX", "296"); 
     xr.WriteElementString("DpiY", "296"); 
     xr.Close(); 

     deviceInfo = sb.ToString(); 

     rsExec.SetExecutionParameters(parameters, "fr-fr"); 

     results = rsExec.Render(format, deviceInfo, 
        out extension, out encoding, 
        out mimeType, out warnings, out streamIDs); 

在這種情況下初始化字符串deviceInfo,該解決方案的工作。我可以生成具有良好dpi的pdf文件,但帶有activex的打印按鈕不起作用(這應該不是問題),也可以使用導出按鈕。我必須添加一個下載按鈕才能打印。這是一個部分解決方案恕我直言

0

如果您使用的WebAPI接口報表服務,我發現這種方式運行:

爲了得到圖片的PDF更好的渲染,通過設備信息是這樣的:http://serverName/ReportServer?/pathtoReport/ReportName&InvoiceIdOrOtherParameter=24013&rs:Command=Render&rs:Format=PDF&rs:DeviceInfo=<DpiX>300<%2FDpiX><DpiY>300<%2FDpiY>