0

SSRS WebサービスへのSoapコールを行うためにSavonrbを使用してレポートするために、Rails 3.2アプリとSSRSを統合しています。すべては最終的に働いていると私は正常に次の呼び出しを行うことができます。Rails 3.2 SSRSとSavonRD

  1. LoadReport
  2. SetExecutionParameters

レンダリング呼び出しは(私の場合はPDFに)形式のパラメータを受け取り、返しをレンダリングXMLレスポンス。私はこの呼び出しがpdfでレンダリングされるレポートになると思ったが、そうはしなかった。レポートをレンダリングするためにレスポンスオブジェクトで何を行う必要がありますか?以下

コード:

response = @client.call(:load_report, message: {report: "/path/to/report"}) 

response = @client.call(:set_execution_parameters, message: { "Parameters" => param1}) 

response = @client.call(:render, message: {"Format" => "PDF"}) 

ありがとう!

答えて

0

答えは、レンダリング呼び出しから返されたXML文字列をBase64にデコードしてファイルに書き込んだ後、send_fileを使用してファイルをブラウザにストリームする必要があるということです。これで今動作します。コード:

response = @newClient.call(:render, message: {"Format" => "PDF"}) 
@results = response.to_hash 

@report = @results[:render_response][:result] 
@extension = @results[:render_response][:extension] 
@mime_type = @results[:render_response][:mime_type] 
@report_name = "MyReportName.pdf" # this should be dynamically generated from a param passed in the call to run_report 

File.open(@report_name, "wb+") do |f| 
    f.puts Base64.decode64(@report) 
end 



@file = File.open(@report_name, 'r') 

    send_file @file, :filename => @report_name, :type => "application/pdf; charset=utf-8", :disposition => "attachment"