如何设置 自定义纸张

blue_apple 2004-05-04 11:51:24
我用下面的方法设置了自定义纸张,但打印时,打印机不能按 高度 300 的来分页,为了这

个我已两晚没睡好了,希望高手帮帮啦,,,

PrintDocument1.DefaultPageSettings.PaperSize = New PaperSize("Custom Paper Size", 433, 300)
...全文
958 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
kikosisi 2004-09-21
  • 打赏
  • 举报
回复
和打印机有关系,设置了吗?
打印机不同,打的效果也不同
  • 打赏
  • 举报
回复
帮你up一下。和你同感!
blue_apple 2004-09-20
  • 打赏
  • 举报
回复
up,这个问题没有人能解决吗,.NET也太差了
blue_apple 2004-09-19
  • 打赏
  • 举报
回复
up
wangjunhua22 2004-09-19
  • 打赏
  • 举报
回复
在操作系统中打印机-->属性--自定义纸张就0k了。
blue_apple 2004-09-02
  • 打赏
  • 举报
回复
up
blue_apple 2004-06-17
  • 打赏
  • 举报
回复
楼上,能不能给个例程呀?
webmasterss 2004-06-16
  • 打赏
  • 举报
回复
再补充一下,调API不是对所有打印机都管用,我试过,但用直接给打印家发字串的方式肯定能成功!
webmasterss 2004-06-16
  • 打赏
  • 举报
回复
最简单的就是在系统里设置服务器属性,定义新的纸张格式。
程序控制不是对所有型号和品牌的打印机都管用,可以调API或者你可以看看打印机说明书,过纸的时候直接发送给他16进制字串,控制过纸长度!
blue_apple 2004-06-16
  • 打赏
  • 举报
回复
请问楼上 “动态添加动态删除”是怎样实现的呀,

还有,'jhnhu(玩的就是技术) ' 说的那种方法 在win98是怎样设置的呀???
allanli 2004-06-14
  • 打赏
  • 举报
回复
不是说了嘛!在现阶段的.NET版本是不能像word一样随便自定义纸张大小的(尽管你设置自定义纸张后预览可以正常显示,但打印时走纸还是没能按照预览纸张走纸,不过用些小技巧也可达到表面上可以),只能通过API动态添加我们需要的纸张格式,也就是'jhnhu(玩的就是技术) '说的那几个步骤用代码实现就可以了.这个方法我们公司已经使用很久了,效果很好,只要打印机本身支持自定义纸张大小和你添加的纸张格式能够被你的打印机所支持(具体就是能够通过'jhnhu(玩的就是技术) '的办法正常打印).这种办法有几个缺点,就是如果打印机是网络打印机的话,那么必须先在打印机所在机器先添加纸张格式(你可以先在那台电脑运行程序定义所有可能的打印纸格式),还有就是如果用户用到的纸张格式很多,那么就会在电脑添加了很多纸张格式了(不过可以通过动态添加动态删除的就可以做到word一样效果了)
qqws 2004-06-14
  • 打赏
  • 举报
回复
难道就没有办法解决自定义纸张了吗?WIN API有没有什么设置纸张的函数啊
njhyh 2004-06-11
  • 打赏
  • 举报
回复
呵呵!!up
blue_apple 2004-06-10
  • 打赏
  • 举报
回复
94 没有提到换页
jhnhu 2004-06-09
  • 打赏
  • 举报
回复
njhyh(小辉)给的只不过是msdn中的代码罢了,和纸张没有任何关系
njhyh 2004-06-09
  • 打赏
  • 举报
回复
Private Sub PrintDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDoc.PrintPage
'定义指向Graphics的指针
Dim g As Graphics
'每页中可打印的文本行数
Dim linesPerPage As Long
'记录打印的当前行
Dim Current As Long
'当前的纵坐标
Dim y As Double
'页的左边距
Dim left As Double
'页的顶边距
Dim top As Double
'要输出的文本
Dim strOutput As String
'打印字体
Dim PrintFont As System.Drawing.Font
'打印时使用的刷子
Dim brush As New System.Drawing.SolidBrush(Color.Black)
'当前活动的子窗体
Dim activeChild As Form = Me.ActiveMdiChild
'子窗体中的RichTextBox控件
Dim theBox As RichTextBox

'获得当前活动的子窗体
activeChild = Me.ActiveMdiChild
'获得子窗体的RichTextBox控件
theBox = CType(activeChild.ActiveControl, RichTextBox)
'设置打印字体
PrintFont = theBox.Font
'获得Graphics对象
g = e.Graphics
'设置页面的左边距
left = e.MarginBounds.Left
'获得页面的上边距
top = e.MarginBounds.Top
'计算每页能打印的行数
'顶端留出两行用于打印标题,底端留出两行用于打印注脚
linesPerPage = e.MarginBounds.Height / PrintFont.GetHeight(g) - 4
'设置打印的起始位置
y = top
'输出标题
g.DrawString(activeChild.Text, PrintFont, brush, left, y)
'设置正文的输出位置
y = top + 2 * PrintFont.GetHeight(g)
'循环输出正文
While Current < linesPerPage
'读取要输出的内容
strOutput = line.ReadLine()
'如果没有要打印的内容,则中止循环
If Not strOutput Is Nothing Then
'计算要输出的纵坐标位置
y = y + PrintFont.GetHeight(g)
'输出正文
g.DrawString(strOutput, PrintFont, brush, left, y)
Else
Exit While
End If
End While
'设置注脚的输出位置
y = e.MarginBounds.Bottom - PrintFont.GetHeight(g)
'输出注脚
g.DrawString("Footer", PrintFont, brush, e.MarginBounds.Width / 2, y)
'如果这一页没有打完正文,将HasMorePages属性设置为True,
'这将再次激发PrintPage事件
If Not strOutput Is Nothing Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
你试试???
jhnhu 2004-06-08
  • 打赏
  • 举报
回复
水晶报表 for .net
在设计界面上 右键 设计xx(菜单忘了)
然后选择打印机,选择在打印机上设置的自定义纸张,界面上的纸马上就变成自定义大小了

还是上面说的原理,把换页交给打印机
AntingZ 2004-06-07
  • 打赏
  • 举报
回复
不知道水晶报表的打印可不可以自定义纸张?
allanli 2004-06-07
  • 打赏
  • 举报
回复
可以解决的,我公司现在用的打印类就可以实现自定义纸张打印.
不过必须动态添加纸张格式,也就是用程序完成'jhnhu(玩的就是技术) '所说的步骤
qqws 2004-06-07
  • 打赏
  • 举报
回复
这个难题难道没有人解决吗?
加载更多回复(11)

16,554

社区成员

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

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