MS Word を自動化する代わりに NetOffice を使用するようにサービスを移行している最中です。これは、開発システムよりも古い Office を使用するシステムに展開するときに Office アセンブリのバージョンの不一致を防ぐためです。
これまでのところ、すべてがうまくいっています。
ただし、Word 文書を印刷する際に問題が発生します。これは、MS Word を自動化するときには問題なく機能しましたが、NetOffice を使用しようとすると、コードでキャスト エラーが発生します。
これが私がやっていることのコードサンプルです。(appWord は NetOffice Word.Application のインスタンスです)
object paramFilePath = full_path_to_document;
object falseValue = false;
object missing = Type.Missing;
object wb = appWord.WordBasic;
int copies = 1;
object[] argValues = null;
string[] argNames = null;
// the specific printer for the print job
argValues = new object[] { "printer_name", 1 };
// do not change the default printer
argNames = new String[] { "Printer", "DoNotSetAsSysDefault" };
Word.Document doc = appWord.Documents.Open(paramFilePath, missing, falseValue, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
wb.GetType().InvokeMember("FilePrintSetup", BindingFlags.InvokeMethod, null, wb, argValues, null, null, argNames);
for (int i = 0; i < copies; i++)
{
appWord.PrintOut();
Thread.Sleep(100);
}
これは以前は MS Word で問題なく動作していました (Documents.Open メソッドのパラメーターが参照であることを除いて) が、今ではobject wb = appWord.WordBasic;の行でキャスト エラーが発生しています。.
この特定の方法の移行に成功していないため、NetOfficeを使用して(デフォルトのプリンターを変更せずに)特定のプリンターでWord文書を印刷する方法を教えてください。