0

SSRSエクスポートから出力を取得し、印刷ダイアログを呼び出さずにサーバー側のプリンターに直接送信しようとしています

ReportingService.ReportExporter.Export("basicHttpEndpoint", new NetworkCredential("userNmae", "*********"), reportName, parameters.ToArray(), reportFormat, out output, out extension, out mimeType, out encoding, out warnings, out streamIds);

この場合、エクスポート タイプは画像です。出力(バイト配列)を取得しようとしており、メモリストリームを設定してから、次のように直接印刷しようとしてPrintDocumen()います

Stream stream = new MemoryStream(output);
StreamReader streamToPrint = new StreamReader(stream);

var pd = new PrintDocument();
pd.PrintPage += pd_PrintPage;
pd.PrintController = new StandardPrintController();
pd.Print();

これpd_PrintPageは、Web および MSDN で十分に文書化されています。

private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
  float linesPerPage = 0;
  float yPos = 0;
  int count = 0;
  float leftMargin = ev.MarginBounds.Left;
  float topMargin = ev.MarginBounds.Top;
  string line = null;

  // Calculate the number of lines per page.
  linesPerPage = ev.MarginBounds.Height /
     printFont.GetHeight(ev.Graphics);

  // Print each line of the file. 
  while (count < linesPerPage &&
     ((line = streamToPrint.ReadLine()) != null))
  {
      yPos = topMargin + (count *
         printFont.GetHeight(ev.Graphics));
      ev.Graphics.DrawString(line, printFont, Brushes.Black,
         leftMargin, yPos, new StringFormat());
      count++;
  }

  // If more lines exist, print another page. 
  if (line != null)
      ev.HasMorePages = true;
  else
      ev.HasMorePages = false;
}

データの形式を取得できません。画像データを文字として出力するだけです。出力データを別の形式に変換する必要がありますか?

4

1 に答える 1

0

出力をレンダリングする代わりに、バイトをテキストとして表示するように印刷コマンドに指示しているためです。ストリームをプリンターにレンダリングするには、PDF 印刷ドライバー (Acrobat など) が必要です。以下にいくつかのオプションを示します。

https://stackoverflow.com/questions/8338953/print-in-memory-pdf-without-saving-directly-without-a-printer-dialog-or-user-i

ストリームを使用してC#でPDFを印刷する...それはできますか?

于 2012-10-09T20:41:58.443 に答える