2012-07-26 2 views
2

저는 워드 자동화를 사용하여 docx 파일을 생성 한 다음 인쇄합니다. 여기 내 기본 코드입니다. 나는 adoc.PrintOut 이후에 약간의 시간을 기다려야한다는 것을 알았다. 그렇지 않으면 인쇄가 실패 할 수있다. 그 후로 파일을 닫았 기 때문이라고 보입니다. 파일이 닫히기 전에 word는 아직 인쇄 할 시간이 없습니다. 따라서 기본적으로 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 문서를 인쇄하는 동안 계속해서 사용자 정의 코드를 가지고 진정한 배경 ."

관련 문제