我正在通过RDLC文件生成报告。我的报告中有一些带有条形图的图表。当我将报告导出为PDF时,图表的分辨率非常差,并且条形图变得像素化。是否可以为RDLC中以本地模式运行的报告定义更高的PDF分辨率?
我发现这个链接表明通过ReportServer生成的pdf可以获得更高的分辨率。但我无法在任何地方找到此配置文件。 http://msdn.microsoft.com/en-us/library/ms154682.aspx
是RDLC文件的限制吗? RDLC文件是否可行?
谢谢!
答案 0 :(得分: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 :(得分:1)
可以在rsreportserver.config中更改这些设置,查看属于报表服务器实例的设置。
此处的示例:http://technet.microsoft.com/en-us/library/ms156281.aspx
希望对你有所帮助。
答案 2 :(得分:-2)
PDF导出中的图表是导出为PDF的位图。您可能无法使用RDLC控制它们。使用RDL,您可以使用DeviceInfo进行额外控制。
更正: 我的印象是无法为RDLC设置设备信息,但当然我错了。快速查找并找到these PDF渲染器的可能设备信息设置