簡體   English   中英

從RDLC報告中的Render PDF上不顯示Base64圖像

[英]Base64 image doesn't display on Render PDF from RDLC report

我正在嘗試在RDLC報告中使用參數( @CustomerSign )顯示圖像(base64字符串) (我從報告中呈現PDF文件,我看到的是PDF文件)

我已經配置了如下圖像屬性:

選擇圖像源: Database
使用此字段:

=Convert.FromBase64String(Parameters!CustomerSign.Value)

使用此MIME類型: image/png

並傳遞參數:

ReportParameter CustomerSign = new ReportParameter("CustomerSign", obj.SignImage);
rptvw.LocalReport.SetParameters(CustomerSign);

但圖像顯示紅十字[X]而不是圖像,並沒有給出錯誤!

可能是什么問題?

我也嘗試過: 如何將PNG圖像(作為內存流)渲染到.NET ReportViewer報表界面上

對圖像的支持非常有限, 這篇MSDN文章討論了你可以做什么。

從將問題嵌入報告中的問題看起來有點顯而易見。 但您可以指定外部dbase作為源。 請注意必須設置的EnableExternalImages屬性,如MSDN文章所述。 似乎要走的路,問題不夠詳細,您可能需要在代碼中提供包含所需圖像的合適表格。

首先,檢查Visual Studio輸出窗口。 調試時,您應該出現任何RDLC錯誤。

例如,我收到一條錯誤消息,說我傳遞了無效的base64字符串。

如果你看到:

警告:圖像“Image”的ImageData屬性值為“= Convert.From ...”,這不是有效的ImageData。 (rsInvalidDatabaseImageProperty)

這似乎意味着拋出異常,因此表達式沒有評估並作為原始文本傳遞(因此此消息表明原始文本不是有效的圖像數據)。 輸出窗口中的上一行應包含導致問題的實際錯誤。

在我的情況下,按照你正在使用的模式(謝謝),我的問題最終是我的數據庫中的base64以data:image/png;base64,為前綴data:image/png;base64,因為它是從html圖像元素中提取和寫入的。

要刪除該前綴,請將我的RDLC表達式轉換為:

=Convert.FromBase64String(CStr(Parameters!Base64.Value).Substring(22))

我建議從數據庫中提取一個64字符串並確認它確實可以用作圖像。 嘗試將其放入base64圖像查看器中(例如: https//codebeautify.org/base64-to-image-converter )。 (雖然在我的情況下,我猜這不會有幫助,因為即使使用該前綴,該網站仍然有效。)

=System.Convert.FromBase64String(Parameters!Logo.Value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM