C# RDLC导出为具有高分辨率背景图像的pdf
最近,对于我当前的一个客户,我不得不创建一个RDLC报告。更具体地说,是数字固定纸上的发票。(参见“stational\u paper\u example.png”) 问题 将高分辨率图像设置为报告背景时,图像的缩放将完全关闭。请参阅“静止的\u纸张\u错误的\u缩放.png” 以前的解决方法 由于使用数字固定纸的报告之前只是一个项目,我们通过在背景中设置图像元素(z索引)并设置高分辨率图像使其工作。但这次我们有了一些新的隐含限制 隐含限制C# RDLC导出为具有高分辨率背景图像的pdf,c#,background-image,rdlc,export-to-pdf,high-resolution,C#,Background Image,Rdlc,Export To Pdf,High Resolution,最近,对于我当前的一个客户,我不得不创建一个RDLC报告。更具体地说,是数字固定纸上的发票。(参见“stational\u paper\u example.png”) 问题 将高分辨率图像设置为报告背景时,图像的缩放将完全关闭。请参阅“静止的\u纸张\u错误的\u缩放.png” 以前的解决方法 由于使用数字固定纸的报告之前只是一个项目,我们通过在背景中设置图像元素(z索引)并设置高分辨率图像使其工作。但这次我们有了一些新的隐含限制 隐含限制 当前页码 客户希望在invoice articles表
如果您将低分辨率图像设置为背景,您将(可能)看到一种模糊背景,如“stational_paper_low_res.png”中所示。当您使用“pdf打印机”(如“Microsoft print to pdf”)导出此解决方案时,也会发生这种情况。经过一些挖掘和测试,我终于让它工作了(至少在imo) 解决方案
Source: External
Value: ="file:" + Parameters!PathToStationeryPaper.Value
MIMEType: image/jpeg
private void reportViewer1\u ReportExport(对象发送方,ReportExportEventArgs e)
{
如果(reportUsesStationaryPaper())
{
//将报告重置为高分辨率模式以进行打印
字符串设备信息=
@"
300
300
";
e、 设备信息=设备信息;
var pathToStationaryPaper=“[…]”/stational_highres.png”;
reportViewer1.LocalReport.SetParameters(新的Microsoft.Reporting.WinForms.ReportParameter(“PathToStationeryPaper”,pathToStationaryPaper));
}
}
private bool reportUsesStationaryPaper()
{
var result = false;
foreach (var param in reportViewer1.LocalReport.GetParameters())
{
if (param.Name.Equals("UsesStationeryPaper"))
{
result = true;
break;
}
}
return result;
}
private void reportViewer1_RenderingBegin(object sender, CancelEventArgs e)
{
if (reportUsesStationaryPaper())
{
//Reset report to low-resolution mode for screen rendering
var pathToStationaryPaper = "[…]/stationary_lowres.png";
reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("PathToStationeryPaper", pathToStationaryPaper));
}
}
private void reportViewer1_ReportExport(object sender, ReportExportEventArgs e)
{
if (reportUsesStationaryPaper())
{
//Reset report to high-resolution mode for printing
string deviceInfo =
@"<DeviceInfo>
<DpiX>300</DpiX>
<DpiY>300</DpiY>
</DeviceInfo>";
e.DeviceInfo = deviceInfo;
var pathToStationaryPaper = "[…]/stationary_highres.png";
reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("PathToStationeryPaper", pathToStationaryPaper));
}
}