0

ユーザー入力なしで、多くのドキュメントを自動的に印刷できるようにする必要があります。

アプリケーションはサーバー上に置かれ、毎日特定の時点で印刷されます。一部のドキュメントを1台のプリンターに印刷し、一部を別のプリンターに印刷する必要があります。

デフォルト以外のプリンターがMicrosoftXPSドキュメントライターでない限り、コードをデフォルト以外のプリンターに印刷できません。これにより、アクセス許可が疑われるようになります。

でプリンタを設定してPrinterSettings.PrinterName = "*printername*"いますが、設定が正しくないというprinterexceptionエラーが発生します。

私は似たようなエラーを取り上げた記事を見つけましたが、これはC#ではなくASP.Netでした-それはWindowsの偽装と関係がありましたが、C#で動作させるために何をすべきか本当にわかりません。

インストールされているすべてのプリンターを表示するMSコードを少し取得し、提供されたリストから名前をコピーしたので、ネットワークプリンター名が正しいことを知っていることを追加する必要があります。

4

2 に答える 2

3

default-printerを設定したい場合は、winapiで次のように設定できます。

[DllImport("winspool.drv", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetDefaultPrinter(string Name);

コードの終了後にdefaultprinterをリセットする場合は、おそらくwinapiの別のメソッドが必要です。

[DllImport("winspool.drv", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetDefaultPrinter(StringBuilder pszBuffer, ref int size);

あなたが得ることができるすべての利用可能なプリンターのリスト:

List<string> printers = PrinterSettings.InstalledPrinters.Cast<string>().ToList();
于 2013-03-25T10:28:37.793 に答える
0

コントロールパネルに表示されているプリンタの名前に印刷するのではなく、\ servername\printernameに印刷すると機能することがわかりました。私は今、別の問題を抱えています-デフォルトのプリンターに印刷する場合、つまりプリンターを指定しない場合、それはすぐにそれらを吐き出します。プリンタを指定した場合、約1分待ってから印刷し、次に1分待ってから次のプリンタを印刷するなど、この方法で時間がかかるのはなぜですか。

于 2013-03-25T10:37:18.687 に答える