c# - 以编程方式打印 word 文档的目录...总是跳过最后一个文件

标签 c# .net printing word-automation page-setup

我在尝试以编程方式打印 word 文档目录时遇到问题。在这个例子中,我试图只打印带有“3_”前缀的文件。问题是除非有两个带有 3_ 前缀的文件,否则该文件不会打印。我一直在四处寻找解决这个问题。我打开文件的方式有问题吗?它仅在目录中有两个文件时才有效,在这种情况下,它只会打印出两个文件之一。

编辑:我确实尝试了一个消息框,路径是正确的。文件名是正确的。此外,如果我正在打印机文件夹中查看打印机,文档将闪现一秒钟然后消失(我已暂停打印以便可以看到输出)。如果 word 给我一个错误,为什么不显示?如果目录中有两个前缀为 3_ 的文件,为什么这会起作用?

编辑:我认为这是 printout() 方法的问题。当我将应用程序设置为可见并运行它时,文档可以正常打开,但没有打印任何内容。我可以手动打开文档并打印(效果很好)。

编辑:谢谢大家的回答。 printout() 方法中的背景参数是问题所在。该程序将在打印完全假脱机之前退出(这就是为什么我会看到打印队列中的文档闪烁并消失的原因。关闭后台打印需要文档保持打开状态并进行打印,这是关键。谢谢

string[] filesToCheck = Directory.GetFiles(clientDirectoryPath);
    Object filename = null;
        for (int i = 0; i < filesToCheck.Count();i++ )
        {
            if(filesToCheck[i].Contains("3_"))
            {
                filename = filesToCheck[i];
                wrdDoc = wrdApp.Documents.Open(ref filename, ref oMissing, ref oTrue, ref oFalse,
                                               ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing);
                wrdDoc.PageSetup.FirstPageTray = letterHeadTray;
                wrdDoc.PageSetup.OtherPagesTray = defaultTray;
                wrdDoc.PrintOut(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing);
                wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
                wrdDoc = null;
            }
        }

最佳答案

尝试设置 PrintOut 的背景参数(第一个参数) () 调用 False。

可能由于 Word COM 对象释放得太早,最后的打印作业没有完全假脱机和取消。

关于c# - 以编程方式打印 word 文档的目录...总是跳过最后一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670060/

相关文章:

c# - dpiAware 导致部署无效

c# - 从 Flurl HttpResponseMessage 获取响应正文

c# - 如何在 ASP MVC 的所有 View 中保存用户名称?

c# - 遍历 C# 中的所有查询值

html - 用于打印的 HTML/PDF 文档的最佳宽度

c# - 简单的喷油器 : Registering a dynamically created delegate

c# - 如何等待 Func<Task<string>>?

.net - 使用 Mailchimp.net API 检查电子邮件是否存在

printing - 标签打印机的自定义纸张尺寸(Brother QL 570)

java - 选择打印机(带对话框)打印 .xls 文件到