以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于专业报表设置纸张尺寸的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=129099)

--  作者:rogen
--  发布时间:2018/12/21 13:57:00
--  关于专业报表设置纸张尺寸的问题
一般针打的三联纸,会有三种尺寸,如下图
二等分的相当于发票、面单大小
三等分的,单位用来打印工资单

我用专业报表指定了三等分的尺寸,但打出来还是A4纸大小
打印机除了打工资单,还要打发票
若在打印机设置里指定一个纸张尺寸,每次打印时去选择,会很麻烦
为何专业报表打出来的尺寸不能按代码里指定的尺寸来呢?
然后这个横向打印也是个问题,预览是横向的,打出来又是纵向了
只能参考其他帖子的,直接打印,不预览,这样体验也欠佳。
而且直接打印,也就不能选取打印机设置的纸张尺寸了



图片点击可在新窗口打开查看此主题相关图片如下:qq截图20181221134716.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:代码.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:效果.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2018/12/21 14:17:00
--  

预览窗口自己做

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=122281&skin=0

 


--  作者:rogen
--  发布时间:2018/12/21 14:34:00
--  
老师,我这帖子的核心问题是:打印时为啥不能按代码设定的纸张尺寸来打印?
--  作者:有点甜
--  发布时间:2018/12/21 15:34:00
--  
以下是引用rogen在2018/12/21 14:34:00的发言:
老师,我这帖子的核心问题是:打印时为啥不能按代码设定的纸张尺寸来打印?

 

兼容性问题,专业报表有点问题。

 

你可以这样添加纸张,然后查找纸张,设置纸张,如 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=54472&replyID=&skin=1

 


--  作者:rogen
--  发布时间:2018/12/21 18:17:00
--  
以下是引用有点甜在2018/12/21 15:34:00的发言:

 

兼容性问题,专业报表有点问题。

 

你可以这样添加纸张,然后查找纸张,设置纸张,如 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=54472&replyID=&skin=1

 

参考这个帖子加了代码,指定了打印机,设置了纸张尺寸

运行后报错,然后在打印机属性里看,添加的纸张尺寸也和设置的不符

请问是哪的问题?

 


图片点击可在新窗口打开查看此主题相关图片如下:代码1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:打印机.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/12/21 18:28:00
--  

我测试代码没问题,如果报错,说明你这打印机不能正确添加自定义纸张。

 

Dim cps As new CustomPaperSize.CustomPaperSize()
cps.SetPrintForm(e.Form.Controls("ComboBox1").Text,"我新增的自定义纸张", 100*38, 100*27)
msgbox("添加成功")

Dim prtdoc As new Printing.PrintDocument()
prtdoc.PrinterSettings.PrinterName = e.Form.Controls("ComboBox1").Text
Dim i As Integer = 9
For Each ps As System.Drawing.Printing.PaperSize In prtdoc.PrinterSettings.PaperSizes  \'生成打印机的纸张下拉列表
    If ps.PaperName = "我新增的自定义纸张" Then
        msgbox("paperkind = " & ps.RawKind )
        i = ps.rawkind
        Exit For
    End If
Next

Dim doc As New PrintDoc
Dim rt As New prt.RenderText
rt.Text = "Hello Foxtable"
doc.Body.Children.Add(rt)
Doc.PrinterName = e.Form.Controls("ComboBox1").Text
doc.PageSetting.PaperKind = i
doc.Preview


--  作者:rogen
--  发布时间:2018/12/21 19:22:00
--  

cps.SetPrintForm(e.Form.Controls("ComboBox1").Text,"我新增的自定义纸张", 100*38, 100*27)

为啥有2个尺寸呢?


--  作者:rogen
--  发布时间:2018/12/21 19:25:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:kind.jpg
图片点击可在新窗口打开查看

 

但是可以弹窗显示kind呀


--  作者:有点蓝
--  发布时间:2018/12/21 20:26:00
--  
如果不兼容,就算设置了一样无法起效果的。这种情况只能是到打印机服务属性中手工添加尺寸,然后设置为默认打印尺寸。
--  作者:rogen
--  发布时间:2018/12/21 21:04:00
--  
那能不能我在打印机里添加一个尺寸,然后用代码指定使用这个打印机的这个尺寸呢?