答案 0 :(得分:4)
是的,那不起作用。您故意绕过打印机驱动程序,这是为任何打印机提供通用接口的代码块。这使您无法处理每种特定打印机型号的特性。
有一些常见的接口,您在代码中使用的接口是旧的点阵打印机。 PCL在Hewlett Packard激光打印机上很常见。 Postscript在高端打印机上很常见。后两者有自己的咒语来获取换页。
然后是便宜的激光和喷墨打印机的海洋。它们通常根本没有明确定义的界面。它们不是让打印机内部的处理器将打印机命令转换为纸上的点,而是让打印机驱动程序完成所有艰苦的工作。你永远不会得到其中一个,界面是专有的,没有文档。
打印机驱动程序是您的朋友。 PrintDocument类使用它。获取换页很简单,只需设置e.HasMorePages = true并退出PrintPage事件处理程序即可。您已经看到我链接的StreamPrinter类。
答案 1 :(得分:0)
我不熟悉TEXT
文档类型,但我认为它只是一个最小的共同点“哑打印机”表示。如果是这样,它可能会识别换页符,除非您使用了错误的字符 - 它不是0x12
或0xFF
,而是0x0c
。见http://en.wikipedia.org/wiki/Ascii
答案 2 :(得分:0)
由于我的上一个答案没有帮助,让我们试试看。您是否在需要分页时尝试EndPagePrinter
后跟StartPagePrinter
?
如果仍然无效,您可能需要使用GDI以艰难的方式完成。该堆栈与您正在使用的堆栈略有不同:
CreateDC
CreateFont
SelectObject
StartDoc
StartPage
TextOut
EndPage
EndDoc
DeleteDC
您需要管理字体并在每个行位置自己将文本放在页面上。