Java 获取打印数据-Windows(Redmon)

Java 获取打印数据-Windows(Redmon),java,windows,pdf,printing,redmon,Java,Windows,Pdf,Printing,Redmon,我正在尝试开发一个应用程序来检索打印数据,编辑其内容,然后打印数据。我使用RedMon就是为了这个目的。但到目前为止,我在网上看到的所有教程都涉及使用RedMon将数据存储到PDF中 我希望能够在windows平台上配置RedMon,以便它将整个打印数据(即绑定在打印纸上的数据)写入.txt文件,或者直接作为我制作的java应用程序的输入 到目前为止,我还没有找到解决这个问题的办法。这是可以实现的吗?您知道您的“打印数据”对于所有打印机都不相同,是吗?其文件格式取决于用于特定打印队列的打印机驱动

我正在尝试开发一个应用程序来检索打印数据,编辑其内容,然后打印数据。我使用RedMon就是为了这个目的。但到目前为止,我在网上看到的所有教程都涉及使用RedMon将数据存储到PDF中

我希望能够在windows平台上配置RedMon,以便它将整个打印数据(即绑定在打印纸上的数据)写入.txt文件,或者直接作为我制作的java应用程序的输入


到目前为止,我还没有找到解决这个问题的办法。这是可以实现的吗?

您知道您的“打印数据”对于所有打印机都不相同,是吗?其文件格式取决于用于特定打印队列的打印机驱动程序

如果您真的遵循了所有教谁将打印数据存储到PDF中的RedMon教程,您肯定会注意到两件事:

首先,所有这些解决方案都使用PostScript打印机驱动程序

其次,所有这些解决方案都使用RedMon作为打印监视器,捕获PostScript数据并将其交给Ghostscript以将其转换为PDF

因此,出于您的目的,您很可能不需要Ghostscript。您可以直接将接收到的数据原样保存到文件,而不是运行Ghostscript

但是,只有当打印机真正支持PostScript时,才能继续使用PostScript。当然,为了“编辑内容”,你必须精通PostScript

如果您的打印机使用另一种打印机语言PCL、TIFF、ESC/p、ESC/POS或其他任何语言,则必须使用适当的语言替换PostScript打印机驱动程序。当然,为了“编辑其内容”,您必须能够充分理解相应的打印机语言……

这里有一个C语言的解决方案:

int main(int argc, char** argv)
{
    HANDLE handle;
    unsigned char ucBuffer[1024];
    FILE *pFileTarget;
    DeleteFile("c:\\toprint.txt");
    pFileTarget=fopen("c:\\toprint.txt","wb");
  handle = GetStdHandle(STD_INPUT_HANDLE);

    while (1)
    {
        DWORD dwBytesRead=0;
        if(ReadFile(  handle,ucBuffer,1024, &dwBytesRead,NULL) == 0)
    {
            break;
        }else
            fwrite(ucBuffer,dwBytesRead,1,pFileTarget);
    }
    fclose(pFileTarget);
  CloseHandle(handle);
    return (EXIT_SUCCESS);
}

我可能错了,但我相信无论redmon重定向什么,它都独立于打印机驱动程序,对吗?还是我错了?我只是需要一种方法来捕捉它,并在我的应用程序中使用它。那能做到吗?怎么做?你错了。RedMon重新引导的是打印机驱动程序的输出。您能为实时环境发布类似的答案吗?我还需要捕获应该打印的数据。不仅仅是其他数据。可以追踪吗?@AnuragRamdasan:对不起,我不知道你的“实时环境”。在windows系统中,每次发出打印命令时,我都希望打印的内容被发送到txt文件或我制作的java应用程序。可能的