获取打印数据-Windows(Redmon)



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

我希望能够在windows平台上配置RedMon,使其能够将整个打印数据(必然会出现在打印纸上的数据)原样写入.txt文件,或者直接提供给我制作的java应用程序作为输入。

到目前为止,我一直未能找到解决这个问题的办法。这是可以实现的吗?

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

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

  • 首先,所有这些解决方案都使用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);
}

最新更新