11

画像が埋め込まれた SSRS レポート定義ファイルがある場合、その画像 XML を抽出して元の画像ファイルを再作成できるかどうか疑問に思っています。

例:

rdlc ファイル内に、次のような xml が表示される場合があります。

<EmbeddedImage Name="tick">
  <MIMEType>image/bmp</MIMEType>
  <ImageData>Qk1mAwAAAAAAADYAAAAoAAAAEAAAABEAAAABABgA ... <<REST OF IMAGE HERE>>
  </ImageData>
</EmbeddedImage>

ImageData を取得し、元のイメージ ビットマップ バイト ストリームを再作成するために何らかの方法で変換することは可能ですか?

(これは、埋め込み画像の元になった元の画像ファイルを紛失した場合などに役立つ場合があります。)

4

4 に答える 4

19

このブログ投稿では、2 つのアプローチについて詳しく説明しています。

  1. 再利用する必要がある場合は、エンコードされた画像をあるレポートから別のレポートにコピーします。
  2. レポートのコピーを Excel にエクスポートし、スプレッドシートから画像をコピーします。

または、より直接的に画像にアクセスする必要がある場合は、XML を解析して画像を読み込んでエクスポートするこのユーティリティを見つけました。ソースコードが公開されているようです。

于 2012-04-04T13:46:30.133 に答える
9

この問題を解決するために、小さな Power Shell スクリプトを作成しました。

$ErrorActionPreference = 'Stop';
Get-ChildItem -Filter '*.rdl' | ForEach {
    $reportFile = $_;
    Write-Host $reportFile;
    $report = [xml](Get-Content $reportFile);
    $report.Report.EmbeddedImages.EmbeddedImage | Foreach {
        $imagexml = $_;
        $imageextension = $imagexml.MIMEType.Split('/')[1];
        $filename = $imagexml.Name + '.' + $imageextension;
        Write-Host '->' $filename;
        $imageContent =  [System.Convert]::FromBase64String($imagexml.ImageData);
        Set-Content -Path $filename -Encoding Byte -Value $imageContent;
    }
}

https://gist.github.com/Fabian-Schmidt/71746e8e1dbdf9db9278

このスクリプトは、現在のフォルダー内のすべてのレポートからすべての画像を抽出します。

于 2016-03-29T22:12:15.590 に答える
1

これを行う必要があり、コピーして貼り付けることはできませんが、埋め込まれた画像を切り取って貼り付けることは可能であることに気付きました。

于 2014-05-30T15:17:06.267 に答える