0

我正在尝试复制打印作业(这意味着当有人打印文档时,该文档也会自动打印在另一台打印机上)。目的是我想将所有打印的文档转换为 pdf 并将它们发送到服务器。

我能够使用检索所有打印作业,FindFirstPrinterChangeNotification并且能够使用检索作业内容ReadPrinter

作业采用 EMF 形式。

但是当我想将此作业写入另一台打印机时,使用WritePrinter,作业似乎到达打印机,在新打印机的状态窗口中写入Printed,但它没有发生任何事情。作业未到达打印机。

复制作业的代码是:

do{
    if (!ReadPrinter(hPrinterJob, lpBytes, BUFSIZE, &dwBytesRead))
    {
        return FALSE;
    }

    else
    {
        if (!WritePrinter(hPrinterNew, lpBytes, dwBytesRead, &dwBytesWritten))
        {
            return FALSE;
        }
    }
}while(dwBytesRead!=0);

有谁知道它出了什么问题以及如何解决?

执行此类操作的软件示例是: link

谢谢

4

1 回答 1

2

这是行不通的。请阅读文档。

打印作业的顺序如下:

  1. 要开始打印作业,请调用 StartDocPrinter。
  2. 要开始每一页,请调用 StartPagePrinter。
  3. 要将数据写入页面,请调用 WritePrinter。
  4. 要结束每一页,请调用 EndPagePrinter。
  5. 根据需要对尽可能多的页面重复 2、3 和 4。
  6. 要结束打印作业,请调用 EndDocPrinter。
于 2013-10-01T12:00:03.223 回答