Windows:如何告诉打印机在打印期间发出FormFeed?

时间:2010-12-30 19:39:25

标签: windows printing xps

3 个答案:

答案 0 :(得分:4)

是的,那不起作用。您故意绕过打印机驱动程序,这是为任何打印机提供通用接口的代码块。这使您无法处理每种特定打印机型号的特性。

有一些常见的接口,您在代码中使用的接口是旧的点阵打印机。 PCL在Hewlett Packard激光打印机上很常见。 Postscript在高端打印机上很常见。后两者有自己的咒语来获取换页。

然后是便宜的激光和喷墨打印机的海洋。它们通常根本没有明确定义的界面。它们不是让打印机内部的处理器将打印机命令转换为纸上的点,而是让打印机驱动程序完成所有艰苦的工作。你永远不会得到其中一个,界面是专有的,没有文档。

打印机驱动程序是您的朋友。 PrintDocument类使用它。获取换页很简单,只需设置e.HasMorePages = true并退出PrintPage事件处理程序即可。您已经看到我链接的StreamPrinter类。

答案 1 :(得分:0)

我不熟悉TEXT文档类型,但我认为它只是一个最小的共同点“哑打印机”表示。如果是这样,它可能会识别换页符,除非您使用了错误的字符 - 它不是0x120xFF,而是0x0c。见http://en.wikipedia.org/wiki/Ascii

答案 2 :(得分:0)

由于我的上一个答案没有帮助,让我们试试看。您是否在需要分页时尝试EndPagePrinter后跟StartPagePrinter

如果仍然无效,您可能需要使用GDI以艰难的方式完成。该堆栈与您正在使用的堆栈略有不同:

  • CreateDC
  • CreateFont
  • SelectObject
  • StartDoc
    • StartPage
      • TextOut
    • EndPage
  • EndDoc
  • DeleteDC

您需要管理字体并在每个行位置自己将文本放在页面上。