C#控制台应用程序无法在Windows 8.1中打印

时间:2016-04-27 10:05:26

标签: c# windows printing

我一直在尝试使用以下控制台应用程序在Windows 8.1计算机上打印文档;

using System;
using System.IO;
using System.Printing;

namespace BasicPrinter
{
class Program
{
    private static void Main(string[] args)
    {
        var server = new LocalPrintServer();

        Console.WriteLine("Default printer:{0}", server.DefaultPrintQueue.Name);
        Console.WriteLine("Default spool directory:{0}",server.DefaultSpoolDirectory);

        var printQueue = server.DefaultPrintQueue;

        Console.WriteLine(printQueue.Name);

        Console.ReadLine();

        var bytes = File.ReadAllBytes("c:/Printing/Test2.pdf");

        var job = printQueue.AddJob();

        job.JobStream.Write(bytes, 0, bytes.Length);
        job.JobStream.Close();
        job.JobStream.Dispose();
        job.Dispose();
    }
  }
}

我正在使用Visual Studio 2013在Windows 7计算机上进行开发。当我在我的计算机上运行此应用程序时,它会按预期打印文档。然后我远程进入Windows 8.1机器,从我的Windows 7机器(以及test2 pdf文件)复制bin文件的内容,然后从那里再次运行它。

应用程序运行,我看到打印机的名称,当我在设备管理器中查看打印机时,我发现它正在假脱机但是然后打印它只是删除了作业。

我已经检查过我的目标是"任何CPU"两台机器都是x64。

为什么这在Windows 8.1计算机上不起作用?

这是我唯一可以访问的8.1机器。

1 个答案:

答案 0 :(得分:0)

Windows 8.1使用v4打印驱动程序。他们要求添加到作业流的文件是.xps,否则就会得到0 byte spool file

我用word创建了一个名为Test3.xps的xps文件,然后替换了

var bytes = File.ReadAllBytes("c:/Printing/Test2.pdf");

var bytes = File.ReadAllBytes("c:/Printing/Test3.xps");

这印刷了。