3270 打印问题
3270 数据流不是针对比例字体设计的。 这可能会导致某些打印作业出现问题,导致字符重叠。 使用“打印服务器属性”页的高级设置,可以将主机打印服务配置为使用不同的字符定位方法。
表单源问题
主机打印服务的一个常见问题是 FF) (窗体源多余或缺失。 其中一些问题涉及 SNA Print 如何处理显式表单源。 其他问题与使用每页行数(代替 FF 字符)导致分页符 (窗体源) 有关。
当主机打印服务收到主机数据流中的 FF 字符 ('0x0C') 时,它会保留此字符,直到收到其他数据(控制代码 (SCS 或 3270 订单) 或可打印字符)。 如果它收到其他数据,则会将 FF 发送到打印机并处理其他数据。 如果没有收到进一步的数据,这意味着我们在作业结束时,将删除 FF。 此时,SNA 打印将通过调用未使用 PDT 的会话的 EndDoc 或 EndDocPrinter(对于使用 PDT 的会话)来完成未完成的作业。 调用 EndDoc 时,作业末尾会添加一个 FF。 调用 EndDocPrinter 时,不会添加 FF。 在后一种情况下,SNA Print 是否将 FF 添加到作业末尾取决于 PDT 中END_JOB参数的配置方式。 使用 PDT 的替代方法是在 Windows 打印机属性中更改打印处理器的默认数据类型。 如果默认数据类型设置为 RAW [auto FF],则打印驱动程序会检查是否存在 FF,并在必要时添加 FF。
使用 PDT 时,可以强制 SNA Print 不删除最终 FF。 这需要添加注册表项 FlushFF 并将其设置为 TRUE。
FlushFF: REG_SZ
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
SnaPrint
Parameters
作业结束时的 FF | PDT | 已添加 FF | 结束结果 |
---|---|---|---|
是 | 否 | 是 | FF |
否 | 否 | 是 | FF |
是 | 是 | 否 | (依赖于 PDT) |
否 | 是 | 否 | (依赖于 PDT) |
许多较旧的主机打印作业依赖于每页的行数来确定分页符。 例如,假设作业每页使用 66 行,因此在文本后面添加足够的空白行,使总行数达到 66 行,然后再开始下一页的文本。 如果有 30 行文本,则会在用于下一页的文本之前添加 36 个空白行。 此方法的缺点是取决于打印机的可打印区域、每英寸的行数、每页的行数以及作业的上边距设置。 如果每页默认只有 65 行,则生成的打印输出将显示“页面爬行”,其中最后一个空白行将推送到下一页的顶部,然后向第三页的顶部推送两行,依此推。 可以通过将 START_JOB 参数的上边距设置为零,将每页的行数设置为 66,在 PDT 文件中修复此“页面爬行”。 此外,打印机会话属性应将每英寸行数设置为 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:
DoAllLU3FF 应设置为 TRUE。 系统会检查此注册表项是否存在。 为字符串输入的任何值都将启用此功能。