如何在所选打印机上打印任何文档

6
我想在.NET中选择打印机并打印任何文档,例如pdf、word、excel或文本文件。我已经成功地在默认打印机中进行了打印。现在唯一的问题是如何在所选打印机中打印。
以下是打印代码:
public bool Print(string FilePath)
    {
        if (File.Exists(FilePath)) {
            if (ShellExecute((System.IntPtr )1, "Print", FilePath, "", Directory.GetDirectoryRoot(FilePath), SW_SHOWNORMAL).ToInt32() <= 32) {
                return false;
            } else {
                return true;
            }
        } else {
            return false;
        }
    }
2个回答

10
Process printJob = new Process();
printJob.StartInfo.FileName = path;
printJob.StartInfo.UseShellExecute = true;
printJob.StartInfo.Verb = "printto";
printJob.StartInfo.CreateNoWindow = true;
printJob.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
printJob.StartInfo.Arguments = "\"" + printerAddress + "\"" + " " + printerExtraParameters;
printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(path);
printJob.Start();

1
你正在测试哪种文件格式以成功地发送到默认打印机?
通常不可能只是将“任何”文档发送到打印机,一般需要由能够读取文件格式并将其呈现给打印机或可被打印机解释的文件的应用程序来解释特定的文件格式。
在大多数情况下,如果您可以呈现为PostScript或PDF,则可以使用单个解释器进行打印。

我正在测试PDF、Word和Excel文件。你是正确的,任何文件都不能被打印,但如果安装了该文件的软件,则可以打印它,而不需要指定文件类型。这由Windows处理。 - Thunder
打印文件的问题已经在问题中得到解决。现在只剩下指定打印机的问题。 - Thunder
嗨,好的,虽然不知道如何指定特定的打印机,但在打印之前更改默认打印机可能值得探究一下。 - Mark Redman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接