サーバー側のワード文書をネットワークプリンターに印刷する必要があります。私の Web ページは、ドキュメントとファイルの場所をサーバーに送信して、差し込み印刷アイテムを開いて置換し、優先 (デフォルトではない) ネットワーク プリンタでドキュメントを印刷します。Web ページで選択されたドキュメントが変更されると、優先プリンター名が変更されます
Windows Server 2008 R2 で Word 14.0 オブジェクト ライブラリ、Asp.Net MVC 4.0、.Net Framework 4.0、IIS 7 を使用しています。IIS で、特定のアカウント ID (accountName@DomainName) で実行されるアプリ プールを作成しました。ユーザー プロファイルを true に設定して読み込み、ネットワーク プリンター接続をレジストリに読み込みます。COM 相互運用サービスという単語を実行する権限をアカウントに許可しました。ドキュメントを開き、差し込み印刷フィールドを置き換えて、pdf として保存し、ファイルを電子メールの添付ファイルとして送信することに成功しました。
word アプリケーションのActivePrinter
プロパティには既定のプリンターがあるため、既定のプリンターにも印刷できます。しかし、私の最終的な目標は、単語アプリケーションとアクティブなドキュメントを閉じる前に、優先ネットワーク プリンターに単語を印刷することです。
ActivePrinter
プロパティを変更しようとすると、次の 2 つのメソッドで例外が発生していました。
Word.Application wordApp = new Word.Application();
最初の方法:
wordApp.ActivePrinter = "preferredPrinterName";
第二の方法;
object[] oWordDialogParams = { "\\<serverName>\<PrinterName>", true };
string[] argNames = { "Printer", "DoNotSetAsSysDefault" };
object wordBasic = wordApp.WordBasic;
wordBasic.GetType().InvokeMember("FilePrintSetup"
, System.Reflection.BindingFlags.InvokeMethod
, null
, wordBasic
, oWordDialogParams
, null
, null
, argNames);
Word アプリケーション オブジェクトが、ユーザー アカウントにインストールされているすべてのプリンターを読み込んでいないことがわかりました。デフォルトのプリンターのみをロードします。設定しようとしているプリンターがアクティブなプリンターのリストに見つからなかったため、上記の 2 つのメソッドが優先プリンターをアプリケーション オブジェクトに変更または追加しようとしたときに、例外が発生したと想定しています。
Word アプリケーション オブジェクトにロードされたユーザー プロファイルの下にインストールされているすべての共有プリンターを取得するにはどうすればよいですか?