我们的 C++ 应用程序使用 cups 打印出由 XRT XrtTblVaDrawPS 命令生成的 postscript 文件。但是当我打印 2 份副本并设置 cups collate 选项时,文件不会打印为已整理。
1 回答
我们的项目使用 XRT 主题库从使用主题的表格布局生成 postscript 文件。XrtTblVaDrawPS 生成的后记文件是使用杯子打印的,但在测试期间,当我们打印超过 1 个副本时,杯子整理选项似乎不起作用。网络搜索没有返回 ps 文件未整理的任何原因,但经过大量实验后,我们发现了 cups 未按预期工作的原因。生成 ps 文件的 XrtTblVaDrawPS 调用和使用的选项之一是“XRTTBL_PS_NUM_COPIES, 2”来设置 postscript 文件将打印出的副本数。在我们的 cups 类中,我们正在执行 cupsAddOption("copies", "2",.. 和 cupsAddOption("Collate", "True", .. 命令(参见下面的示例)。结果是杯子“副本” 如果设置为 2,则命令正在杀死 Collating。就像方向 postscript/cups 冲突一样,您需要将 cups 副本值设置为 1 才能使整理工作。postscript 文件已经知道它会被打印出来,例如 2 个副本。如果您不希望它被整理,则将杯子副本设置为 2 个。如果您以其他方式生成后记文件,则此问题可能不会发生在您身上,但如果您使用的是 XrtTblVaDrawPS 调用。
pgs = XrtTblVaDrawPS(myTable, fp, XRTTBL_PS_NUM_COPIES, num, <= set to 2 XRTTBL_PS_CELL_RANGE, rng, XRTTBL_PS_COLOR, clr, XRTTBL_PS_ORIENTATION, ornt, XRTTBL_PS_SCALE, FIT_TO_PAGE_HEIGHT, XRTTBL_PS_SHOW_ROW_LABELS, XRTTBL_PS_ALL, XRTTBL_PS_SHOW_FROZEN_ROWS, XRTTBL_PS_ALL, XRTTBL_PS_SHOW_COL_LABELS, XRTTBL_PS_ALL, XRTTBL_PS_SHOW_FROZEN_COLS, XRTTBL_PS_ALL, XRTTBL_PS_PAPERSIZE_WIDTH , media_sz.width, XRTTBL_PS_PAPERSIZE_HEIGHT, media_sz.length, XRTTBL_PS_MARGIN_LEFT, 1.00, XRTTBL_PS_MARGIN_RIGHT, 1.00, XRTTBL_PS_MARGIN_TOP, 0.75, XRTTBL_PS_MARGIN_BOTTOM, 0.75, XRTTBL_PS_HEADER_FONT, "Adobe 10", XRTTBL_PS_HEADER, hdr, XRTTBL_PS_HEADER_MARGIN, 0.55, XRTTBL_PS_FOOTER_FONT, "Adobe 10", XRTTBL_PS_FOOTER , "页码", XRTTBL_PS_FOOTER_MARGIN, 0.25, NULL);
myNumOptions = cupsAddOption("Collate", "True", myNumOptions, &myOptions); myNumOptions = cupsAddOption("副本", oss.str().c_str(), myNumOptions, &myOptions);
oss.str().c_str() 是“2”,整理失败,我得到 (1-1-2-2) oss.str().c_str() 是“1”,整理工作,我得到 (1- 2-1-2) oss.str().c_str() 为“2”,cups Collate 设置为“False” 我得到了 (1-1-2-2) 的预期