2013-07-25 40 views
2

我正在通過RDLC文件生成報告。我在報告中使用條形圖繪製了一些圖表。當我將報告導出爲PDF時,圖表的分辨率非常糟糕,條形圖變得像素化。是否可以爲在RDLC中以本地模式運行的報告定義更高的PDF分辨率?我可以更改RDLC中的PDF分辨率嗎

我發現這個鏈接,說通過ReportServer生成的PDF可以得到更高的分辨率。但是我無法在任何地方找到這個配置文件。 http://msdn.microsoft.com/en-us/library/ms154682.aspx

這是RDLC文件的限制嗎? RDLC文件可行嗎?

謝謝!

回答

2

我找到了解決此問題的解決方法。通過reportviewer設置可能無法更改PDF的dpiX和dpiY,但我們可以通過手動導出或通過C#呈現PDF來實現。 Report.Render()執行此操作,並在其XML的<deviceinfo>參數中使用dpiX和dpiY值。 這是這樣的代碼:

 string reportype = "PDF"; 
     string mimeType; 
     string encoding; 
     string fileNameExtension; 

     string devinfo = "<DeviceInfo><ColorDepth>32</ColorDepth><DpiX>350</DpiX><DpiY>350</DpiY><OutputFormat>PDF</OutputFormat>"+ 
     " <PageWidth>8.5in</PageWidth>" + 
     " <PageHeight>11in</PageHeight>" + 
     " <MarginTop>0.5in</MarginTop>" + 
     " <MarginLeft>0.5in</MarginLeft>" + 
      " <MarginRight>0in</MarginRight>" + 
      " <MarginBottom>0in</MarginBottom>" + 
     "</DeviceInfo>"; 

     Warning[] warnings; 
     string[] streams; 
     byte[] renderedBytes; 

     renderedBytes = this.reportViewer1.LocalReport.Render(reportype, devinfo, out mimeType, 

    out encoding, 

    out fileNameExtension, 

    out streams, 

    out warnings); 

     using (FileStream fs = new FileStream("output3.pdf", FileMode.Create)) 
     { 
      fs.Write(renderedBytes, 0, renderedBytes.Length); 
     } 
+1

太棒了,我的印象是無法爲RDLC設置設備信息,但我當然錯了。快速查看並找到了PDF渲染器的這些可能的設備信息設置http://technet.microsoft.com/en-in/library/ms154682.aspx – Ron5504

+0

如果您需要使用不同的紙張尺寸渲染不同的報告,會發生什麼情況 – Smith

1

這些設置可以在rsreportserver.config中更改,請查看屬於您的報表服務器實例的設置。

例子在這裏:http://technet.microsoft.com/en-us/library/ms156281.aspx

希望幫助你。

+0

嗨,謝謝你的回答。我檢查了頁面,似乎可以爲ReportServer更改這些設置。我以本地模式運行報告。我可以更改RDLC文件的本地模式的PDF設置嗎? –

-2

PDF導出中的圖表是導出爲PDF的位圖。使用RDLC可能無法控制它們。使用RDL,您可以使用DeviceInfo進行額外的控制。

更正: 我的印象是,無法爲RDLC設置設備信息,但當然我錯了。快速查找並找到these PDF渲染器可能的設備信息設置