我使用Foxit Reader(PDF阅读器)并传递命令行参数以编程方式打印pdf。我知道我们无法通过命令行指定副本数量,因为this discussion.
我正在开发一个win-forms桌面应用程序,并且打印PDF文档的多个副本我正在使用以下代码
string foxitReaderInstalledPath = GetFoxitReaderInstalledPath();
while (noOfCopies > 0)
{
Process process = new System.Diagnostics.Process();
process.EnableRaisingEvents = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = foxitReaderInstalledPath;
string arguments = String.Format(@"-t ""{0}"" ""{1}""", this.Path, printerName);
process.StartInfo.Arguments = arguments;
process.Start();
process.WaitForExit();
noOfCopies = noOfCopies - 1;
}
当多个用户将多个打印副本提供给同一台打印机时,会出现问题。问题是打印的文档按照打印顺序混淆。有人请告诉我如何避免这个问题?
非常感谢。
答案 0 :(得分:1)
你无法避免这个客户端......
如果你真的想要避免它,那么用户使用的“客户端”应用程序必须将文件发送到一些带有所有相关参数的“集中式服务器进程”...这个“集中式进程”可以“序列化” “打印所以它按正确顺序发生......
但是如果您要打印到的打印机可以从用户系统访问,那么用户仍然可能会向打印机发送内容(如图像或word文档......),这些内容将被打印并干扰订单a位...
我认为如果你描述了你的目标是更有意义的...也许有更好的方法可以解决所有这些...你是否正在实施打印服务器?
编辑 - 根据评论:
将PDF文件的位置放在网络共享上...并在提供共享的同一台机器上运行您的打印代码...理想情况下,打印机直接连接到该机器...这应该提供足够的性能并且由于它只是一个访问打印机的中央应用程序,它应该可以正常工作......
我强烈建议您使用PDF库或Acrobat Reader,以便打印可以使用NumberOfCopies的参数!
编辑2 - 根据评论:
一些PDF库: