C# - LPR 命令打印 PDF 文件

Joe*_*e G 1 c# command-prompt lpr

我正在尝试运行 LPR 命令来打印 PDF。我正在使用的代码是通过在 Windows 窗体应用程序中单击按钮来执行的。

\n\n

代码:

\n\n
var command = @"lpr \xe2\x80\x93S 192.168.1.245 \xe2\x80\x93P DAILY C:\\Test.pdf";\nProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + command);\nprocStartInfo.RedirectStandardOutput = true;\nprocStartInfo.UseShellExecute = false;\nprocStartInfo.RedirectStandardError = true;\nprocStartInfo.CreateNoWindow = true;\n\n// start process\nProcess proc = new Process();\nproc.StartInfo = procStartInfo;\nproc.Start();\n\nproc.WaitForExit();\n\n// read process output\nstring cmdError = proc.StandardError.ReadToEnd();\nstring cmdOutput = proc.StandardOutput.ReadToEnd();\n
Run Code Online (Sandbox Code Playgroud)\n\n

该程序作为x64程序运行,因此可以在C:\\Windows\\System32文件夹中找到lpr程序。

\n\n

当代码执行时,错误字符串为空,输出字符串包含以下内容(与命令运行时的输出相同lpr /?

\n\n

输出:

\n\n
\n

将打印作业发送到网络打印机

\n\n

用法: lpr -S 服务器 -P 打印机 [-C 类] [-J 作业] [-o 选项] [-x] [-d] 文件名

\n\n

选项:\n -S server 提供 lpd 服务的主机的名称或 IP 地址\n -P Printer 打印队列的名称\n -C class 用于连拍页的作业分类\n -J job 要在连拍页上打印的作业名称突发页面\n -o 选项 指示文件类型(默认情况下假定为文本文件)\n -x 与 SunOS 4.1.x 及先前版本的兼容性\n -d 首先发送数据文件

\n
\n\n

如果我完全按照代码中显示的方式复制并粘贴命令并将其粘贴到命令窗口中,即使它与应用程序打开的命令窗口相同,它也可以正常工作。

\n\n

有谁知道为什么会发生这种情况?提前致谢!

\n

Joe*_*e G 5

我能够弄清楚。如果它对其他人有帮助,那么正在运行的代码是

var command = @"lpr -S 192.168.1.245 -P ""DAILY"" ""C:\Test.pdf""";
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/C " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.RedirectStandardError = true;
procStartInfo.CreateNoWindow = true;

// start process
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();

proc.WaitForExit();

// read process output
string cmdError = proc.StandardError.ReadToEnd();
string cmdOutput = proc.StandardOutput.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

请注意,队列名称和文件名用引号引起来。我的另一个问题是,我最初是从电子邮件复制命令,因此破折号是错误的,我必须删除并手动键入命令中的破折号才能识别它。如果你仔细观察原来的问题,你会发现破折号稍微长一些。

有关确保 lpr 命令可用的信息,尤其是在 64 位计算机上运行 32 位应用程序时,请参阅以下参考资料。

参考 1:lpr 命令在 Win 7 中的 C# 程序中不起作用

参考2:http ://www.tomshardware.com/forum/240019-44-error-windows