日期:2014-05-18  浏览次数:21084 次

word文档printout后关闭,无法打印
C# winform ,代码生成 WORD 文档,并打印,打印完后关闭 Word ,需要完全后台,用户看不到Word程序,dc为Document

object m_true = true;
object m_miss = Type.Missing;

app.visible=false ;
try
{
  Docment dc=app.documents.add(...)
  ......//写入文档内容。

  dc.PrintOut(ref m_true, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss, ref m_miss);
  dc.Close(ref m_false, ref m_null, ref m_null);
}
  finally
  {
  if (app != null)
  {
  if (app.Documents.Count == 0)
  {
  app.Quit(ref m_false, ref m_null, ref m_null);
  app = null;
  }
  else app.Visible = true;
  }
  GC.Collect(); GC.WaitForPendingFinalizers();
  }

问题出在:如果事先未打开Word程序,则打印不出任何东西,是调用 PrintOut 后马上 dc.Close()的缘故,如果去掉 dc.close()及app.quit语句,能正常打印。
printout的第一个参数是后台打印,无论为true 或false ,均不能打印,但如果事先打开 Word程序,哪怕是个空文档,又可以打印。

请教:如何等PrintOut打印完后再关闭?(别跟我说 Sleep,机子有快有慢,谁知道要 Sleep 多久?)

------解决方案--------------------
第一个参数就是用 false 啊,我一直都是这样做的,没出过任何问题啊!!!!