我正在使用自动单词生成一个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();

}

最佳答案

您可以使用PrintOut的第一个参数。

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打印文档时继续自定义代码,则为true。”

关于c# - word自动化打印输出:WAITING其完成?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11674925/

10-14 14:56
查看更多