私のプロジェクトの1つには、次のコードを使用して1ページあたりのストリームを取得します。残念ながら私はVB.NETを使用しませんが、これをC#からVBに変換できるはずです。注:これはSSRS2005で動作します - SSRS2008でも動作しているかどうかはわかりません。また、レポートビューアを使用せずにレポートを直接印刷するコードを使用しているため、EMFデバイス情報を作成しています。これを変更する必要があります。
このベースコードは、グーグルで何時間もウェブ上で見つかったものです。著者にはクレジットを入れたいと思いますが、リンクをブックマークしませんでした。
CultureInfo us = new CultureInfo("en-US");
string deviceInfo = String.Format(
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>{0}cm</PageWidth>" +
" <PageHeight>{1}cm</PageHeight>" +
" <MarginTop>{2}cm</MarginTop>" +
" <MarginLeft>{3}cm</MarginLeft>" +
" <MarginRight>{4}cm</MarginRight>" +
" <MarginBottom>{5}cm</MarginBottom>" +
"</DeviceInfo>",
Math.Round(m_pageSize.Width, 2).ToString(us),
Math.Round(m_pageSize.Height, 2).ToString(us),
Math.Round(m_marginTop, 2).ToString(us),
Math.Round(m_marginLeft, 2).ToString(us),
Math.Round(m_marginRight, 2).ToString(us),
Math.Round(m_marginBottom, 2).ToString(us));
m_reportStreams = new List<Stream>();
try
{
// Tell SSRS to store one stream per page on server
NameValueCollection urlAccessParameters = new NameValueCollection();
urlAccessParameters.Add("rs:PersistStreams", "True");
// Render first page
Stream s = viewer.ServerReport.Render("IMAGE", deviceInfo, urlAccessParameters, out mime, out extension);
m_reportStreams.Add(s);
// Loop to get other streams
urlAccessParameters.Remove("rs:PersistStreams");
urlAccessParameters.Add("rs:GetNextStream", "True");
do
{
s = viewer.ServerReport.Render("IMAGE", deviceInfo, urlAccessParameters, out mime, out extension);
if (s.Length != 0) m_reportStreams.Add(s);
}
while (s.Length > 0);
// Now there's one stream per page - do stuff with it
}
finally
{
foreach (Stream s in m_reportStreams)
{
s.Close();
s.Dispose();
}
m_reportStreams = null;
}
EDITは
はviewer
あなたは/印刷、保存しようとしているレポートを表示するように初期化ReportViewer
制御のプログラムで作成されたインスタンスであることを言及するのを忘れました。
私はこれを試しましたが、エラーが表示されます。実行 ''が見つかりません –
Googleが迅速に対応してくれた次のURLを示しました。あなたがエラーメッセージをGoogleにグーグルで伝えると他のものも利用できます: http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices/thread/0ab399df-56b3-4ac8-a703-4001e7a5fb18 –
私は、私は提案されたすべての推奨ソリューションを試しました。私はあなたの答えを正しいものとして受け入れ、問題の新しい質問を投稿します。 –