我試圖開發一個應用程序來檢索打印數據,編輯它的內容然後打印數據。爲此,我使用RedMon
。但截至目前爲止,我在網上看到的所有教程均涉及使用RedMon
將數據存儲到PDF
中。獲取打印數據 - Windows(Redmon)
我希望能夠在Windows平臺上配置RedMon
,使得它,因爲它是寫整個打印數據(綁定到出現在打印紙的數據)爲.txt
文件或可能直接提供作爲輸入到我所做的java
應用程序。
我一直沒有找到解決方案,直到現在。這是可以實現的嗎?
我試圖開發一個應用程序來檢索打印數據,編輯它的內容然後打印數據。爲此,我使用RedMon
。但截至目前爲止,我在網上看到的所有教程均涉及使用RedMon
將數據存儲到PDF
中。獲取打印數據 - Windows(Redmon)
我希望能夠在Windows平臺上配置RedMon
,使得它,因爲它是寫整個打印數據(綁定到出現在打印紙的數據)爲.txt
文件或可能直接提供作爲輸入到我所做的java
應用程序。
我一直沒有找到解決方案,直到現在。這是可以實現的嗎?
您知道所有打印機的「打印數據」不同,是嗎?其文件格式取決於用於特定打印隊列的打印機驅動程序。
如果你真的遵循所有的教誰存儲的打印數據轉換成PDF的雷德曼教程,你肯定會注意到兩兩件事:
首先,所有這些解決方案使用的PostScript打印機驅動;
其次,所有這些解決方案使用雷德曼作爲在捕捉PostScript數據並把它利用Ghostscript將其轉換爲PDF打印監視器。
因此,爲了您的目的,您最有可能不需要Ghostscript。 您可以直接將接收到的數據保存到文件中,而不用運行Ghostscript。
但是,如果您的打印機確實是支持PostScript的設備,則只能繼續使用PostScript。當然,爲了'編輯它的內容',你必須是PostScript精明的。
如果您的打印機使用其他打印機語言(PCL,TIFF,ESC/P,ESC/POS或其他),那麼您必須用適當的替代PostScript打印機驅動程序。當然,你必須能夠理解相應的打印機LANGUAG不夠好,以「編輯內容」 ...
這裏用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重新指導的是打印機驅動程序的輸出。 –
另請參閱[**此答案**](http://stackoverflow.com/a/12659857/359307)。 –