2012-07-26 54 views
2

我正在使用字自​​动生成一个docx文件,然后打印出来。这是我的基本代码。我发现我必须等待adoc.PrintOut一段时间,否则打印可能会失败。看起来是因为我在那之后关闭了文件。在文件关闭之前,单词还没有时间打印出来。所以,基本上,adoc.PrintOut是非阻塞的(这可能不是正确的术语)。现在,我等了10秒钟,它工作正常。但是,它是否有更优雅的解决方案?我的意思是,如何等待PrintOut完成,然后关闭文档?单词自动打印:等待它完成?

感谢

object yes = true; 
object no = false;   
object missing = System.Reflection.Missing.Value; 


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

object fileName = originalFileName; 
Word.Document adoc = null; 
try 
{ 
    adoc = wordApp.Documents.Open(ref fileName, 
      ref missing, ref no, ref missing, 
      ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref missing, ref missing, ref yes, ref missing, ref missing, ref missing, ref missing); 

    adoc.Activate(); 

    /* 
     some other processing 
    */ 



    object sFile = fileName; 

    adoc.PrintOut(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); 

    // http://msdn.microsoft.com/en-us/library/b9f0ke7y 
    //adoc.PrintPreview(); 

    for (int i = 0; i < 10; i++) 
    { 
     Thread.Sleep(TimeSpan.FromSeconds(1)); 
     Application.DoEvents(); 
    } 
    //adoc.Save(); 

    object savechanges = Word.WdSaveOptions.wdDoNotSaveChanges; //.wdSaveChanges; 
    object originalFormat = Word.WdOriginalFormat.wdWordDocument; 
    object routeDocument = missing; // Type.Missing; // true; 

    ((Word._Document)adoc).Close(ref savechanges, ref originalFormat, ref routeDocument); 

    ((Word._Application)wordApp).Quit(ref savechanges, ref missing, ref missing); 

    adoc = null; 
    wordApp = null; 
} 
catch 
{ 

} 
finally 
{ 
    /* 
     some dispose work  
    */ 

    // do it twice to release all memory 
    GC.Collect(); 
    GC.WaitForPendingFinalizers(); 
    GC.Collect(); 
    GC.WaitForPendingFinalizers(); 

} 

回答

3

您可以使用打印输出的第一个参数。

object background = false; 
adoc.PrintOut(background, ref missing, ref missing, ref missing, ref missing, 
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
    ref missing); 

由于文件说: http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.printout(v=vs.80).aspx

“背景 真正有自定义代码继续,而Microsoft Office Word中打印文档。”