[英]RDLC export to pdf with high resolution background image
最近,對於我目前的一位客戶,我不得不創建一份 RDLC 報告。 更具體地說,是數字文具紙上的發票。 (參見“stationary_paper_example.png” 1 )。
當高分辨率圖像設置為報告背景時,圖像的縮放完全關閉。 參見“stationary_paper_falsely_scaled.png” 2
由於使用數字靜止紙的報告之前只是一個項目,我們通過在背景中設置圖像元素(z-index)並設置高分辨率圖像來使其工作。 但是這次我們得到了一些新的隱式限制。
客戶希望在發票文章表上方顯示當前頁碼(請參閱“stationary_paper_page_number.png” 3 )。 您只能在報告的頁眉或頁腳部分獲取此信息
我設置為“報告背景”的圖像元素不能放在報告的頁眉、正文和頁腳中(參見“stationary_paper_image_as_background.png” 4 )
所以要么客戶會改變他們的報告布局,要么我讓這件事繼續下去。
如前所述,當您簡單地將高分辨率圖像設置為背景時,您(可能)會遇到“縮放”錯誤,如“stationary_paper_falsely_scaled.png” 2 中所示。 圖像幾乎完全超出了范圍。
如果您將低分辨率圖像設置為背景,您(可能)會看到一種模糊的背景,如“stationary_paper_low_res.png” 5 中所示。 當您使用“pdf 打印機”(例如“Microsoft 打印到 pdf”)導出此解決方案時,也會發生這種情況。
經過一些挖掘和測試,我終於讓它工作了(至少在imo)
我將報告的背景設置如下:
Source: External
Value: ="file:" + Parameters!PathToStationeryPaper.Value
MIMEType: image/jpeg
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));
}
}
可以設置作為較低分辨率的更高性能,如果需要,還可以設置“預覽”水印1
仍然模糊,因為我們無法在“reportviewer_PrintingBegin”或“reportviewer_Print”中設置分辨率
當通過導出報表查看器控件導出時,您現在將獲得一個漂亮的高分辨率圖像作為報告的背景😊
由於我客戶端的用戶習慣於“打印為 pdf”,因此客戶端現在要么需要培訓用戶使用報表查看器導出按鈕,要么將在視圖中引入一個單獨的按鈕“導出為 PDF”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.