'指定的可执行文件不是此OS平台的有效应用程序

时间:2019-09-25 16:19:33

标签: c# printing process

我想从C#代码中打印PDF文件,而无需用户交互。

我尝试了this accepted answer,但它对我不起作用。

这是我尝试的代码:

Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
     CreateNoWindow = true,
     Verb = "print",
     FileName = @"G:\Visual Studio Projects\PrintWithoutGUI\PrintWithoutGUI\Courses.pdf" //put the correct path here
};
p.Start();

我得到这个例外情况:

  

System.ComponentModel.Win32Exception:'指定的可执行文件不是此OS平台的有效应用程序。'

3 个答案:

答案 0 :(得分:0)

这里肯定有错:FileName不应是您要打印的pdf,而应是您要执行的可执行过程的路径,因此错误消息< / p>

答案 1 :(得分:0)

这是编写代码的正确方法

Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
    CreateNoWindow = true,
    Verb = "print",
    FileName = "PDfReader.exe", //put the path to the pdf reading software e.g. Adobe Acrobat
    Arguments = "PdfFile.pdf" // put the path of the pdf file you want to print
};
p.Start();

答案 2 :(得分:0)

通过添加 UseShellExecute=true 尝试此操作,它将打印到默认打印机,但如果您想打印到特定打印,请将 verb 打印更改为动词 printTo,方法是指定打印机名称参数属性。

 private static void PrintByProcess()
    {
        using (Process p = new Process())
        {
            p.StartInfo = new ProcessStartInfo()
            {
                CreateNoWindow = true,
                UseShellExecute=true,
                Verb = "print",
                FileName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\doc.pdf"
            };

            p.Start();
        }