クライアント側で印刷する方法が見つかりませんでした。
サーバー側でどのように機能するかがわかります。
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アカウントを使用してネットワークプリンターを列挙できるようにするには、次の手順に従います。
注プロセスがネットワークサービスアカウントで実行されている場合は、新しく作成されたレジストリへの明示的なアクセス許可が必要です。
- 目的のネットワークプリンタがインストールされているユーザーとして、現在サーバーにログインしていることを確認してください。
- レジストリエディタを起動します。
- 次のキーをクリックします:HKEY_CURRENT_USER \ Printers \ Connections
- [レジストリ]メニューで、[レジストリファイルのエクスポート]をクリックします。
- [ファイル名]ボックスに「c:\printconns.reg」と入力します。
- メモ帳でprintconns.regファイルを開くには、[スタート]、[ファイル名を指定して実行]の順にクリックし、[名前]ボックスに「メモ帳printconns.reg」と入力して、[OK]をクリックします。
- テキストHKEY_CURRENT_USERをテキストHKEY_USERS.DEFAULTに置き換えます。
- ファイルを保存します。
- ファイルをレジストリにインポートするには、Windowsエクスプローラでファイルをダブルクリックします。
- PrintSpoolerサービスを再起動します。