我正在尝试使用iTextSharp
dll 从我的项目中的 Windows 应用程序打印 pdf ..
但是,到目前为止我使用的方法似乎并不可靠。(有时有效,有时无效)
我将整个过程组合在一个 Process 类中并编写以下代码。
printProcess = new Process[noOfCopies];
// Print number of copies specified in configuration file
for (int counter = 0; counter < noOfCopies; counter++)
{
printProcess[counter] = new Process();
// Set the process information
printProcess[counter].StartInfo = new ProcessStartInfo()
{
CreateNoWindow = true,
Verb = "Print",
FileName = pdfFilePath,
ErrorDialog = false,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = true,
};
// Start the printing process and wait for exit for 7 seconds
printProcess[counter].Start();
// printProcess[counter].WaitForInputIdle(waitTimeForPrintOut);
printProcess[counter].WaitForExit(waitTimeForPrintOut); //<--**This is line for discussion**
if (!printProcess[counter].HasExited)
{
printProcess[counter].Kill();
}
}
// Delete the file before showing any message for security reason
File.Delete(pdfFilePath);
问题是,如果没有打开 pdf,则该过程可以正常工作...(打印效果很好)。但是如果打开WaitForExit(..)
了任何 pdf,则方法不会等待该过程退出..因此该过程也运行快速并且当我在打印后删除文件时,如果打印报告的计数器(次数..)不止一次,它会给出错误..
我也曾经Timer
放慢这个过程,但它不起作用。我不知道为什么。也使用了睡眠命令..但它使主线程进入睡眠状态,因此也不适合我。
请建议我一些非常可靠的方法来做到这一点..:)