3270 資料流並非為比例字型設計。 這可能會在某些列印工作中造成問題,導致字元重疊。 列印伺服器屬性頁面的進階設定允許你設定主機列印服務使用不同的字元定位方式。
表單訂閱的問題
Host Print Service 常見的問題之一是多餘或缺少換頁符號(FF)。 其中一些問題涉及 SNA Print 如何處理明確表單動態。 其他問題包括使用每頁行數代替全頁字元,導致頁碼分隔(表單切換)。
當主機列印服務接收到主機資料串流中的 FF 字元(「0x0C」)時,會保留該字元,直到收到額外資料,可能是控制碼(SCS 或 3270 指令)或可列印字元。 若接收到額外資料,FF 會送達印表機並處理這些額外資料。 如果沒有收到更多資料,也就是工作結束,FF 就會被丟棄。 此時,SNA 列印會透過呼叫 EndDoc (非使用 PDT 的會話)或 EndDocPrinter(使用 PDT 的會話)來完成未完成的工作。 當呼叫 EndDoc 時,會在工作末尾加入一個 FF。 當呼叫 EndDocPrinter 時,不會新增 FF。 在後者情況下,SNA Print 是否會在工作末端加入 FF,取決於 PDT 中 END_JOB 參數的配置方式。 使用 PDT 的另一種方法是在 Windows 印表機屬性中更改列印處理器的預設資料型別。 若預設資料型態設為 RAW [自動 FF],列印驅動程式會檢查是否有 FF,必要時會新增一個。
在使用 PDT 的情況下,可以強制 SNA Print 保留最終的 FF。 這需要新增登錄檔項目 FlushFF 並設定為 TRUE。
FlushFF: REG_SZ
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
SnaPrint
Parameters
| 工作結束時的 FF | PDT | FF 補充 | 最終成果 |
|---|---|---|---|
| 是的 | No | 是的 | FF |
| No | No | 是的 | FF |
| 是的 | 是的 | No | (視PDT而定) |
| No | 是的 | No | (視PDT而定) |
許多較舊的主機列印工作依賴每頁行數來決定換頁。 他們假設某個工作每頁會用66行,所以在文字後面加足夠的空行,讓總行數達到66行,然後再開始下一頁應該有的文字。 如果有30行文字,則會在下一頁的文字前加入36行空白。 此方法的缺點是會依照印表機可列印面積、每英吋行數、每頁行數以及工作設定的頂邊距而定。 如果預設每頁只能容納 65 行,列印出來的列印結果會顯示「頁面蠕動」,也就是最後一行空行被推到下一頁頂端,接著兩行被推到第三頁頂端,依此類推。 這個「頁面蠕動」可以在 PDT 檔案中解決,方法是將 START_JOB 參數設定為上邊距為零,每頁行數設為 66。 此外,印表機會話屬性應該會將每英吋線數設為 6。
例如,使用 HP PCL 的印表機會在 PDF 中新增以下內容:
在巨量區:
TOP EQU 1B 26 6C 30 45 /* Top Margin set to 0 */
STL EQU 1B 26 6C 36 36 46 /* Set Text Length to 66 */
為了開始工作
START_JOB = TOP0 STL
主機列印服務設計用於在符合以下任一條件時,執行包含在 LU 3 列印工作中的表單輸入(FF):
如果在 3270 的 Erase/Write 或 Erase/Write Alternate 指令中,FF 被作為 WCC 之後的第一個字元插入,則...
如果FF位於有效的NL(新行)訂單之後。
如果 FF 位於任何列印行的最後一個可列印字元位置之後,
有一個登錄檔條目可強制主機列印服務在 LU 3 列印工作中承認所有表單輸入字元,即使不符合上述條件。 要新增此條目,請使用 Regedit.exe找到以下鍵:
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
SnaPrint
Parameters
在此鑰匙中新增以下條目:
Value Name:
Data Type:
String:
DoAllLU3FFs 應該設為 TRUE。 系統會檢查這個登錄資料是否存在。 輸入任何字串的值都會啟用此功能。