Печать с использованием Word Interop с диалоговым окном печати - PullRequest
9 голосов
/ 18 мая 2009

Я пытаюсь напечатать слово doc из моего кода C #. Я использовал Word Interop 12.0.0.0, и я пытаюсь сделать так, чтобы диалоговое окно Print всплыло до того, как документ будет напечатан. Я не уверен на 100% в синтаксисе всего этого, так как не могу заставить мой код работать :( Есть идеи?

Заранее спасибо!

Ответы [ 2 ]

10 голосов
/ 18 мая 2009

Это должно быть что-то вроде:

object nullobj = Missing.Value;
doc = wordApp.Documents.Open(ref file,
                             ref nullobj, ref nullobj, ref nullobj,
                             ref nullobj, ref nullobj, ref nullobj,
                             ref nullobj, ref nullobj, ref nullobj,
                             ref nullobj, ref nullobj, ref nullobj,
                             ref nullobj, ref nullobj, ref nullobj);

doc.Activate();
doc.Visible = true;
int dialogResult = wordApp.Dialogs[Microsoft.Office.Interop.Word.WdWordDialog.wdDialogFilePrint].Show(ref nullobj);

if (dialogResult == 1)
{
    doc.PrintOut(ref nullobj, ref nullobj, ref nullobj, ref nullobj, 
                 ref nullobj, ref nullobj, ref nullobj, ref nullobj, 
                 ref nullobj, ref nullobj, ref nullobj, ref nullobj, 
                 ref nullobj, ref nullobj, ref nullobj, ref nullobj, 
                 ref nullobj, ref nullobj);
}
4 голосов
/ 20 сентября 2012

Принятый ответ не сработал для меня, поэтому я нашел другой путь. При этом документ будет печататься в фоновом режиме c:\temp.docx, а Word скрыт от глаз

Используется Microsoft.Office.Interop.Word.

Word.Application wordApp = new Word.Application();
wordApp.Visible = false;

PrintDialog pDialog = new PrintDialog();
if (pDialog.ShowDialog() == DialogResult.OK)
{
  Word.Document doc = wordApp.Documents.Add(@"c:\temp.docx");
  wordApp.ActivePrinter = pDialog.PrinterSettings.PrinterName;
  wordApp.ActiveDocument.PrintOut(); //this will also work: doc.PrintOut();
  doc.Close(SaveChanges: false);
  doc = null;
}

// <EDIT to include Jason's suggestion>
((Word._Application)wordApp).Quit(SaveChanges: false); 
// </EDIT>

// Original: wordApp.Quit(SaveChanges: false);
wordApp = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...