1

HTML としてレンダリングするように構成されたフィールドを含む SSRS 2008 レポートがあります。このフィールドのテキストの一部に IMG タグが含まれている場合がありますが、IMG タグは、SSRS が HTML 表示拡張機能内でネイティブにサポートするタグには含まれていません。

IMG タグを取得し、SRC URL を抽出してSSRS が受け入れる方法でオンザフライで挿入する画像の未加工のバイトですが、SSRS がレンダリングする HTML を保持します。

私がこれまでに読んで見たことから、フィールドが HTML としてレンダリングするようにマークされている場合、SSRS プロセッサはそれを取得し、ハンドラーがそれを変更する前に完全に解析します。つまり、IMG タグは私ができる前に破棄されますそれを使って何かをします(またはそれが存在することさえ知っています)。私が見る唯一のオプションは、HTML レンダリングを完全にオフにすることです。これにより、SSRS認識できるタグの利点が失われます。

編集:以下のジェイミーの回答によると、この問題の「後半」は、私が思っていたよりも難しいかもしれないと思い始めています:実行時にSSRSレポートにイメージをプログラムで追加することさえ可能ですか? )? つまり、次のようなコード (疑似コード) を書きたいと思います。

'Conceptual Pseudocode I'd like to be able to write
'for dynamic addition of Image element in SSRS report
'Is this even possible?? Is there a documented Report 
'object model??

Public Function AddImage(imageBytes() as Byte) as Image

    Dim newImage as New Image()
    newImage.SetBytes(imageBytes)
    Report.Add(newImage)

    return newImage

End Function

生の未処理のHTMLを取得できない単純なものを見落としているだけで、他の誰かがそれを取得する方法について正しい方向に向けることができるかもしれません。

4

2 に答える 2

1

私は似たようなことを成功させました。Web フォームで収集された HTML の「コメント」フィールドがありました。特定のレポートでは、このフィールドを最初の 1000 文字程度に切り詰め、有効な HTML を保持したいと考えました。

そこで、パブリック関数を使用して C# .dll & クラスを作成しました。

public static string TruncateHtml(string html, int characters)
{
   ...
}

(コンテンツの長さを追跡しながら、ほとんどの HTML 解析にHtmlAgilityPackを使用し、新しい HTML 文字列を作成して終了しました。)

次に、SSRS 式の関数への完全修飾パスを使用してそのコードを呼び出すことができます。

=ReportHtmlHandler.HtmlTruncate.TruncateHtml(Fields!Comment.Value, 1000)

これを使用してデータセットに計算フィールドを追加することもできましたが、この値を 1 つのフィールドにしか使用していなかったため、フィールド式レベルのままにしました。

このコードはすべて、SSRS によって HTML が処理またはレンダリングされるかなり前に呼び出されます。元の IMG タグが文字列に含まれていると確信しています。

このアプローチはうまくいくかもしれません。おそらくExtractImg、レポートの img のソースとして設定できる関数を作成します。あなたの要件のトリッキーなビットのいくつかは、抽出された画像を埋め込むだけでなく、複数の画像を処理することになると思います。ただし、画像への外部参照を使用するだけでこれを実行できる場合があります。私は、SSRS で外部イメージをあまり処理していません。

SSRS からのカスタム DLL の呼び出しに関する MSDN ブログ エントリ: http://support.microsoft.com/kb/920769

于 2013-11-12T15:16:46.970 に答える