2017-02-08 87 views
1

如何截取並更改Windows 7打印假脫機文件(.SPL),以便在打印執行期間將此文件發送到打印機之前在標頭中添加一些附加信息,如'@PJL SET NAME ='PainPoint''工作?如何以編程方式在發送到打印機之前編輯正常Windows打印隊列「假脫機文件」的假脫機文件頭?

從頂部的.SPL文件部分提取物是:

%[email protected] SET STRINGCODESET=UTF8 
@PJL COMMENT DATE=02/08/2017 
@PJL ENTER LANGUAGE=PCLXL 
) HP-PCL XL;2;1;FXXPL2-1.0.0,WINNT-6.1,XPL2DRV-6.9.1.1 
?X???........ 

回答

1

編輯假脫機文件顯然是微不足道的。訣竅是如何訪問假脫機文件。

我能想到的副手幾個方面:

  1. 後臺後暫停打印作業,對其進行編輯,然後鬆開。 See my answer here。這不是微不足道的,您可能需要根據可用的時間/努力訴諸第三方軟件。
  2. 創建打印驅動程序或spooler component(如端口或language monitor)來編輯文件。 (感謝Carey Gregory建議使用語言監視器)。這是一個很大的話題,你必須閱讀大量的文檔才能知道如何去做,但是WDK中有一個示例(Pjlmon)。請注意,適用於Windows 8/Server 2012的較新V4驅動程序型號爲doesn't support these components
  3. 如果你不需要透明地做到這一點,你可以設置RedMon(免費)來調用你的應用程序來編輯假脫機文件。然後RedMon將它發送到所需的打印機。

  4. VeryPDF有一些similar commercial products具有更多功能。

+0

那麼我是一個java/scala背景,你有什麼建議?實際的任務是將其他PJL頭文件包含到假脫機文件中,然後發送到打印機。 – PainPoints

+0

既然你暗示你想避免本地編碼,我會建議先嚐試選項3。 –

+0

我設置了RedMon,但它只能轉發到另一臺打印機/輸出。 我想我會在Visual C++或其他工作,它是完全可以達到暫停打印作業後,假脫機,編輯,然後釋放?我只需要爲1臺打印機實現此功能,但不能在其他正常工作的打印機上實現此功能。 – PainPoints

相關問題