我只发送了打印一页的命令,为什么打印机经常打出多个相同的页面?

LEONARD0824 2008-04-25 11:25:00
各位大虾,我的问题如下:

我用了拷屏的方法,然后打印剪贴板内容,代码如下:

Public Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
On Error Resume Next

SendKeys.SendWait("%{PRTSC}")
If PRI.PrinterSettings.IsValid Then
PRI.PrinterSettings.Copies = 1
PRI.DefaultPageSettings.Landscape = True
PRI.Print()
End If
End Sub

Private Sub PRI_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PRI.PrintPage
Dim mclipboardDataObject As IDataObject = Clipboard.GetDataObject
Dim mBitmap As Bitmap

If mclipboardDataObject.GetDataPresent(DataFormats.Bitmap) Then
mBitmap = mclipboardDataObject.GetData(DataFormats.Bitmap)
e.Graphics.DrawImage(mBitmap, PRI.DefaultPageSettings.Bounds.Left, PRI.DefaultPageSettings.Bounds.Top)
End If

End Sub

我在一台电脑上用,打印都正常,用了另外一台电脑(不一样的打印机),打出来经常是几页相同的纸,5页,7页都有,就是没有偶数页,看打印机任务管理器,也确实有这么多打印任务,我就不明白,这个问题出在哪?我的程序,windows的GDI模块和打印池,还是打印驱动程序?

从道理上讲,我认为应该是windows的问题,可是到底什么原因?不知道
...全文
1674 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
没遇到过这种情况.
LEONARD0824 2008-04-30
  • 打赏
  • 举报
回复
我在PRI_PrintPage方法中增加一句:e.hasmorepages=false 不知道是否有用处?
LEONARD0824 2008-04-29
  • 打赏
  • 举报
回复
呵呵,总算看到了

我看了windows相关的介绍,打印过程(通过打印池而不是直接发送到打印机)应该是这样的。

1,windows确认打印机UI驱动程序(我想应该是确定打印机驱动程序是否存在)
2,windows通过打印池客户和GDI生成打印机任务管理器的任务(EMF文件等),这个时候你的应用程序可以自由了。
3,打印处理器将EMF文件生成最后的原始数据格式,打印机开始打印。

如果是这样的话,我想应该和打印机驱动程序没什么关系,而且我确实在打印机任务管理器中看到很多任务。

奇怪的是,用Excel打印报表从来不出现这种问题。

我的代码是否有问题呢
LEONARD0824 2008-04-29
  • 打赏
  • 举报
回复
回复数有四个,怎么看不到?
Plougher 2008-04-25
  • 打赏
  • 举报
回复
这个应该是打印的驱动程序兼容问题
chuxue1342 2008-04-25
  • 打赏
  • 举报
回复
是不是你打印机设置的问题呀?
tjficcbw 2008-04-25
  • 打赏
  • 举报
回复
是驱动程序的问题和你这个程序有相关的东西。
Ny-6000 2008-04-25
  • 打赏
  • 举报
回复
或者是,打印机的默认设置,
或者是,打印软件的默认设置问题。

再或者是,软件和硬件的配合问题。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧