共用方式為


用戶端轉譯的已知問題

根據預設,所有驅動程式都會啟用用戶端轉譯,因為大部分印表機驅動程式都是透明的,並且為使用者提供明確的優點。 大部分的印表機驅動程式都不會遇到此功能已啟用的任何問題。

不過,如果印表機驅動程式發生問題,您可以停用用戶端轉譯功能,印表機驅動程式會在列印伺服器上轉譯印表作業,例如舊版 Windows 操作系統。 系統管理員也可以使用伺服器組策略上的永遠轉譯列印作業來停用用戶端轉譯。

注意

如果您停用用戶端轉譯功能,列印作業轉譯將會移至列印伺服器,這可能會對列印伺服器效能造成負面影響。

安裝在驅動程式套件中的印表機驅動程式不會發生客戶端轉譯的問題。

下列清單描述客戶端轉譯的一些已知問題:

  • 如果印表機驅動程式使用自定義印表處理器,但列印處理器未安裝在用戶端電腦上,則會自動停用用戶端轉譯。

    在某些情況下,未設定為驅動程式套件的印表機驅動程式列印處理器可能不會在 Point 和 Print 期間安裝在用戶端電腦上。 如果列印後台處理程式偵測到問題,它會停用該列印佇列的用戶端轉譯。 若要避免這個問題,請建立印表機驅動程式的驅動程式套件。

  • 如果列印處理器傳回錯誤,則會停用列印佇列的用戶端轉譯。

    停用列印佇列的用戶端轉譯之後,列印後台處理程式會使用伺服器端轉譯重試列印作業。 在列印佇列的用戶端轉譯停用之後,列印佇列將不再具有任何用戶端轉譯優點,例如離線印。

  • 對於使用非標準組態數據的印表機驅動程式,列印機組態數據可能不完整。

    點和列印可能不會傳輸印表機驅動程式的完整列印機組態數據,這些驅動程式使用專屬方法來儲存和通訊此數據。 您可以使用 SetPrinterDataSetPrinterDataEx 函式來儲存印表機設定數據,以及使用 GetPrinterDataGetPrinterDataEx 函式來重新叫用印表機設定數據,來修正此問題。 如需這些函式的詳細資訊,請參閱 Microsoft Windows SDK 檔。

  • 驅動程式不符的用戶端轉譯。

    當用戶端電腦的印表機驅動程式版本與伺服器不同時,印表機驅動程式不相符。 一般而言,當印表機驅動程式不相符時,Point 和 Print 會更新用戶端電腦上的印表機驅動程式,以符合伺服器上的印表機驅動程式。 在某些情況下,您可能會想要用戶端電腦上的列印佇列使用與列印伺服器上的印表機驅動程式版本不符的列印驅動程式版本。 例如,您可能不想讓 Point 和 Print 更新用戶端電腦上的印表機驅動程式:

    • 如果在用戶端電腦上執行時,列印伺服器上的印表機驅動程式有相容性問題。
    • 減少 Point 和 Print 下載新印表機驅動程式時所產生的網路流量。
    • 偵錯或測試時。

    您可以防止 Point 和 Print 下載印表機驅動程式,並強制用戶端電腦改用已安裝在用戶端電腦上的最佳驅動程式。 若要選取此行為,請將 HKLM\SYSTEM\CurrentControlSet\Control\Print\PrinterName\PrinterDriverData\DriverPolicy 登錄機碼的值設定為印表機驅動程式的名稱。 將 PrinterName 取代為列印佇列的名稱,以使用本機可用的印表機驅動程式,而不是列印伺服器提供的印表機驅動程式。 您在此登入機碼中輸入的驅動程式名稱必須是已安裝或可在用戶端電腦上安裝的相容印表機驅動程式名稱。

    您也可以呼叫 AddPrinterConnection2,在 pConnectionInfo 自變數參考的 PRINTER_CONNECTION_MISMATCH PRINTER_CONNECTION_INFO_1結構中指定印表機驅動程式的名稱,以程式設計方式建立印表機驅動程式不相符的印表機連線。 AddPrinterConnection2 記載於 Windows SDK 檔中。

  • 從 Windows 8 開始,如果登錄中沒有EMFDespoolingSetting值,且用戶端電腦配置檔是行動平臺,則會自動停用用戶端轉譯。

    如果用戶端是膝上型電腦或平板電腦裝置等行動平臺,為了節省耗電量,多任務緩衝處理程式會在登錄中沒有此值時自動停用用戶端轉譯。 您可以藉由呼叫 SetPrinterData,將列印佇列的 EMFDespoolingSetting 值設定為 0,以在驅動程式中明確啟用行動平臺的用戶端轉譯。

    您可以使用 msinfo32.exe,確認您的電腦是否已設定為行動或桌面設定檔:

    msinfo32.exe 設定檔的螢幕快照。

如果在測試期間,您偵測到印表機驅動程式可能造成用戶端轉譯功能的問題,您可以停用驅動程式的用戶端轉譯。 您可以呼叫 SetPrinterData 將列印佇列的 EMFDespoolingSetting 值設定為 1,以停用驅動程式中的用戶端轉譯。 此值會導致連接到列印佇列的任何用戶端在伺服器上轉譯列印作業。