2012-09-29 41 views
1

我試圖開發一個應用程序來檢索打印數據,編輯它的內容然後打印數據。爲此,我使用RedMon。但截至目前爲止,我在網上看到的所有教程均涉及使用RedMon將數據存儲到PDF中。獲取打印數據 - Windows(Redmon)

我希望能夠在Windows平臺上配置RedMon,使得它,因爲它是寫整個打印數據(綁定到出現在打印紙的數據)爲.txt文件或可能直接提供作爲輸入到我所做的java應用程序。

我一直沒有找到解決方案,直到現在。這是可以實現的嗎?

回答

0

您知道所有打印機的「打印數據」不同,是嗎?其文件格式取決於用於特定打印隊列的打印機驅動程序。

如果你真的遵循所有的教誰存儲的打印數據轉換成PDF的雷德曼教程,你肯定會注意到兩兩件事:

  • 首先,所有這些解決方案使用的PostScript打印機驅動;

  • 其次,所有這些解決方案使用雷德曼作爲在捕捉PostScript數據並把它利用Ghostscript將其轉換爲PDF打印監視器。

因此,爲了您的目的,您最有可能不需要Ghostscript。 您可以直接將接收到的數據保存到文件中,而不用運行Ghostscript。

但是,如果您的打印機確實是支持PostScript的設備,則只能繼續使用PostScript。當然,爲了'編輯它的內容',你必須是PostScript精明的。

如果您的打印機使用其他打印機語言(PCL,TIFF,ESC/P,ESC/POS或其他),那麼您必須用適當的替代PostScript打印機驅動程序。當然,你必須能夠理解相應的打印機LANGUAG不夠好,以「編輯內容」 ...

+0

我可能是錯的,但我相信無論redmon重定向是否獨立於打印機驅動程序?或者我錯了?我只需要用這種方法來捕獲它並在我的應用程序中使用它。可以這樣做嗎?如何? –

+0

你*錯了。 RedMon重新指導的是打印機驅動程序的輸出。 –

+0

另請參閱[**此答案**](http://stackoverflow.com/a/12659857/359307)。 –

0

這裏用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); 
}