使用Word Interop和打印对话框进行打印

10
我正在尝试从我的C#代码中打印Word文档。我使用了12.0.0.0 Word Interop,我希望在文档打印之前弹出“打印对话框”。由于无法让代码正常工作,我对所有这些语法不是100%确定。 有什么建议吗?
谢谢!
2个回答

11

它应该是类似于以下内容:

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);
}

由于某些原因,这个好像不起作用了...你能给我展示一下你的所有语法吗?即使是一个简单的打印对我也不起作用!!! - yeahumok
你是说它不会打印,还是对话框不会出现? - McAden
1
我发现“if(dialogResult == 1)”块是不需要的。Show()方法会显示对话框,如果用户点击打印,它将打印。 - kad81

4

接受的答案对我没有用,所以我找到了另一种方法。这将在后台打印一个文档,位于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;

1
编译器将从此代码中抛出歧义警告。为了消除它们,请使用phoog在这里的答案:https://dev59.com/dGsy5IYBdhLWcg3w0RM5 - Jason Rae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接