0

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文書を印刷する方法を教えてください。

4

1 に答える 1