Как напечатать любой документ на выбранном принтере - PullRequest
5 голосов
/ 29 июня 2010

Я хотел бы напечатать любой документ, такой как PDF, Word, Excel или текстовые файлы, на выбранном принтере, используя .net. У меня есть успех, чтобы сделать такую ​​печать на принтере по умолчанию. Единственная проблема сейчас заключается в печати в выбранный принтер.

Вот код для печати. ​​

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 ]

9 голосов
/ 23 ноября 2010
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 голос
/ 29 июня 2010

Какой формат файла вы успешно тестируете на принтере по умолчанию?

Невозможно просто отправить «любой» документ на принтер, как правило, конкретный формат файла должен интерпретироваться приложением, которое можетпрочитайте формат файла, затем отобразите его на принтере или в файле, который может быть интерпретирован принтером.

В большинстве случаев, если вы можете выполнить рендеринг в PostScript или PDF, вы можете распечатать его с помощью одного интерпретатора.

...