0

「プリンタがインストールされていません」というメッセージで例外が発生しました。当社のウェブサイトのデポリリリースのレポートを印刷している間。
_rptDocument.PrintToPrinter(1, false, 0, 0);はレポートを印刷するために使用します。

マシンに複数のプリンタをインストールしていても、その例外が発生しました。また、開発中はその例外は発生しません。開発中はすべて順調に進んでいます。

「Webサイトの公開」および「Webプロジェクトの展開」オプションを使用してWebサイトを公開/展開しましたが、同じ結果が得られました。

助言がありますか?

編集

サンプルコード

DataSet dsResult = null;
rptDocument = new ReportDocument();
rptDocument.Load(Server.MapPath("WINGR0040.rpt"));

// Fetch report data.
...

rptDocument.SetDataSource(dsResult);

// Print report.
rptDocument.PrintToPrinter(1, false, 0, 0);
4

3 に答える 3

0

サイトが実行されているユーザーアカウントでWebサーバーにプリンターを追加しましたか?

最初にプリンター名を設定してみましたか?

Report.PrintOptions.PrinterName = printerName;

サイトがDOMAIN\WebServiceなどのアカウントで実行されている場合は、このユーザーアカウントにデフォルトのプリンターがあることを確認する必要があります。

次のようにプリンタ名を設定することもできます。

Report.PrintOptions.PrinterName = this.printDocument1.PrinterSettings.PrinterName;

これにより、デフォルトのプリンタが取得されます。

この記事は、これを機能させるのに役立つ場合があります。

編集:

MSDNのこの記事では、CrystalReportsとASP.NETを使用して印刷を実現する方法について説明します。これらのソリューションのいずれも実装していない場合は、クライアント側を印刷できないと思います。

MSDNリンクに記載されている.cabファイルは次の場所にあります。

VisualStudio2005 または VisualStudio2008

あなたがさらにコードを投稿し、あなたがどのようにレポートを生成しているかについての詳細を投稿しなければ、私はあなたの質問に完全に答えることができないでしょう。

ありがとう

于 2010-06-07T10:56:57.927 に答える
0

ユーザーがデスクトッププリンターで印刷できるように、実際にレポートをPDFにエクスポートします。ただし、iisサーバーでPrint Spooler Serviceが停止しているため、crytsalが混乱している可能性があります。

于 2010-06-11T05:29:58.633 に答える
-1

クライアント側で印刷する方法が見つかりませんでした。

サーバー側でどのように機能するかがわかります。

Page_Loadで私はこれを手に入れました:

foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
    DropDownList1.Items.Add(printer);
}

今button_clickで:

var dsTela = (DataSet)Session["dsTela"];

var cr = new ReportDocument();

var rpt = Request.QueryString["nomeRel"];
cr.Load(Server.MapPath("~/Crystal/" + rpt));

    //----------Crystal Reports---------------//

    // carrega o reltório
cr.SetDataSource(dsTela);

System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();

printerSettings.PrinterName = DropDownList1.SelectedValue;

cr.PrintToPrinter(printerSettings, new PageSettings(), false);

//これは私のために働きます

プリンタがサーバー側に表示されない場合は、次の方法を試してください。

ソース:(https://support2.microsoft.com/default.aspx?scid=kb;en-us;184291

IISがSYSTEMアカウントを使用してネットワークプリンターを列挙できるようにするには、次の手順に従います。

注プロセスがネットワークサービスアカウントで実行されている場合は、新しく作成されたレジストリへの明示的なアクセス許可が必要です。

  1. 目的のネットワークプリンタがインストールされているユーザーとして、現在サーバーにログインしていることを確認してください。
  2. レジストリエディタを起動します。
  3. 次のキーをクリックします:HKEY_CURRENT_USER \ Printers \ Connections
  4. [レジストリ]メニューで、[レジストリファイルのエクスポート]をクリックします。
  5. [ファイル名]ボックスに「c:\printconns.reg」と入力します。
  6. メモ帳でprintconns.regファイルを開くには、[スタート]、[ファイル名を指定して実行]の順にクリックし、[名前]ボックスに「メモ帳printconns.reg」と入力して、[OK]をクリックします。
  7. テキストHKEY_CURRENT_USERをテキストHKEY_USERS.DEFAULTに置き換えます。
  8. ファイルを保存します。
  9. ファイルをレジストリにインポートするには、Windowsエクスプローラでファイルをダブルクリックします。
  10. PrintSpoolerサービスを再起動します。
于 2015-07-08T18:25:49.107 に答える