2012-07-26 55 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中打印文檔。」