私はレポート上で変更されたロゴを持つために同様のことをしますが、レポートパラメータを使用して値を渡します。画像がデータの一部であった場合、この一般的な方法がうまくいかない理由はありません。
イメージは、基本的に2つのフィールドに渡されます。最初のフィールドはMIMEタイプ値で、2番目のフィールドはイメージの内容を含むBase64エンコードされた文字列です。
ステップ1:画像をBase64エンコーディングに変換します。レポートに画像とMIMEタイプを渡します。
private static string ConvertImageToBase64(Image image, ImageFormat format)
{
byte[] imageArray;
using (System.IO.MemoryStream imageStream = new System.IO.MemoryStream())
{
image.Save(imageStream, format);
imageArray = new byte[imageStream.Length];
imageStream.Seek(0, System.IO.SeekOrigin.Begin);
imageStream.Read(imageArray, 0, imageStream.Length);
}
return Convert.ToBase64String(imageArray);
}
ステップ2を(私たちのコードは常にMIMEタイプを簡単にするために、このメソッドにImageFormat.Png
を渡します)。
reportParams[0] = new ReportParameter("ReportLogo", base64Logo);
reportParams[1] = new ReportParameter("ReportLogoMimeType", "image/png");
_reportViewer.LocalReport.SetParameters(reportParams);
ステップ3:レポートで(引用符なし)画像に次のプロパティを設定します
- MIMEタイプ:"
=Parameters!ReportLogoMimeType.Value
"
- 値:"
=System.Convert.FromBase64String(Parameters!ReportLogo.Value)
"
- 更新日: As Ger彼らはあなたがイメージに渡しているにもかかわらず、拡大縮小してきたように 多くの場合、画像は恐ろしい外観となります:ARDOのは、イメージソースは、若い選手のための「データベース」
トラップに設定する必要があり、以下語りますこれは「正しいサイズ」と思われる。これは、レポートは印刷(300 dpi)で表示され、画面では表示されない(通常72または92 dpi)ためです。この問題を解決するには、画像を約3倍大きく送信し、レポートのサイズを正しく設定し、画像の「Sizing
」プロパティを「FitProportional
」に変更します。
Thnxたくさん、私は非常に助けて! – Martijn
Image Sourceを** Database **に設定する必要があることを明確にしたかっただけです。 Sourceプロパティを正しい値に設定するまで、このソリューションを動作させることができませんでした。あなたが注意を払わなければ逃すかもしれない少し詳細。 –
@Adrian:私は同じ問題を抱えていますが、ここで説明したように私はしていますが、私のために働いていない私の質問[ここ]を確認してください(http://stackoverflow.com/questions/42020490/base64-image-doesnt- display-on-render-pdf-from-rdlc-report) –