gpt4 book ai didi

c# - 如何通过一个进程调用将多个文件发送到打印机

转载 作者:行者123 更新时间:2023-11-30 23:24:56 25 4
gpt4 key购买 nike

我需要从硬盘打印多个 PDF 文件。我发现了这个美丽的solution如何将文件发送到打印机。此解决方案的问题在于,如果您想打印多个文件,则必须等待每个文件完成该过程。

在命令行界面中,可以对多个文件名使用相同的命令:print/D:printerName file1.pdf file2.pdf一次调用即可将它们全部打印出来。

不幸的是,仅仅将所有文件名放入 ProcessStartInfo 是行不通的

string filenames = @"file1.pdf file2.pdf file3.pdf"
ProcessStartInfo info = new ProcessStartInfo();
info.Verb = "print";
info.FileName = filenames;

也不会将文件名作为 ProcessArguments

info.Arguments = filename;

我总是收到错误:找不到文件!

如何通过一次流程调用打印多个文件?

这是我现在如何使用它的示例:

public void printWithPrinter(string filename, string printerName)
{

var procInfo = new ProcessStartInfo();
// the file name is a string of multiple filenames separated by space
procInfo.FileName = filename;
procInfo.Verb = "printto";
procInfo.WindowStyle = ProcessWindowStyle.Hidden;
procInfo.CreateNoWindow = true;

// select the printer
procInfo.Arguments = "\"" + printerName + "\"";
// doesn't work
//procInfo.Arguments = "\"" + printerName + "\"" + " " + filename;

Process p = new Process();
p.StartInfo = procInfo;

p.Start();

p.WaitForInputIdle();
//Thread.Sleep(3000;)
if (!p.CloseMainWindow()) p.Kill();
}

最佳答案

以下应该有效:

public void PrintFiles(string printerName, params string[] fileNames)
{
var files = String.Join(" ", fileNames);
var command = String.Format("/C print /D:{0} {1}", printerName, files);
var process = new Process();
var startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "cmd.exe",
Arguments = command
};

process.StartInfo = startInfo;
process.Start();
}

//CALL
PrintFiles("YourPrinterName", "file1.pdf", "file2.pdf", "file3.pdf");

关于c# - 如何通过一个进程调用将多个文件发送到打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com