作者:N__Z少爷_763 | 来源:互联网 | 2023-10-12 14:56
程序中设置了纸张大小,如下,打印预览也是设置的大小,但在针式打印机上打印后纸张走出很长一段(连续纸),不知如何解决?pageSetupDialog1.DocumentprintDocum
程序中设置了纸张大小,如下,打印预览也是设置的大小,但在针式打印机上打印后纸张走出很长一段(连续纸),不知如何解决?
pageSetupDialog1.Document = printDocument1;
pageSetupDialog1.PageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Bill", grp.Width-30, grp.Height);
-----------------------------------------------------------------------------------
原贴
http://community.csdn.net/Expert/TopicView.asp?id=4315567
解决一起结贴
19 个解决方案
c#用pagesize解决不了设置纸张的问题,我的解决方法是先在系统中设置一个纸张,假如是aaa,然后通过编程遍历系统纸张,传给Document,这样就可以了!!具体代码网上查!!
你的应该是网络打印机,你要在打印机所在的系统设置纸张大小。不能用程序控制纸张大小。如果是本地机的就可以。
记得我以前用foxpro和VB做小票打印机打印POS小票的时候也遇到这个问题,经常走很长一段空白,很浪费纸张。
具体忘记是如何实现的了,反正我记得跟程序是没有关系的。
小票打印机有串口的、并口的,如果是串口的,需要在操作系统的串口设置里进行一些相关设置。
记得我当时也是弄了很久没搞定,后来打电话问打印机厂家的服务电话,他的回答给了一些灵感。
建议你尝试用其它语言写个简单的打印,首先要确认这种情况是不是程序所造成的
SqlDataAdapter(小鸟): 我用的是本地打印机,如何用程序控制?
glider21cn(随风飞翔):最好完全用程序完成,否则要详细告诉客户如何设置,如果换了操作人员,新来的不会操作,也是一件麻烦事
private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
this.printDocument1.DefaultPageSettings.PaperSize =new System.Drawing.Printing.PaperSize("Bill", 30,211);
}
这样试试看
我之前做过这样一个程序,同一个程序,同样的设置。在两台打印机中打印,就是一台正常,一台不正常。到现在我也找不到原因。好在客户后来自己找两台打印机对换了。
记得应该在打印机高级设置里面改一下进纸方式就可以了,有手工,连续等等,不同打印机也不一样
我想这不是c#的问题,也不是c#能解决的问题。
应该去找打印机才对,与打印机的驱动等有很大关系。
在打印服务器中设了,打印机属性中也设了,都不管用啊,还有什么办法?
本人遇到同样的问题,在VC++中同样的环境可以按照设置的纸张正确走纸。
程序中设置的纸张大小必须是控制面板中打印机已的纸张,否则不行,
也就是说实际上自定义纸张是无效的,即使定义了,实际走纸是按控制面板中打印机默认纸张如“A4”
所以,楼如果走纸是固定大小的,可以进入控制面板定义一个纸张大小并设置为默认纸张就可,这样
在程序中自定义才有效调用这个自定义的默认纸张,否则必须调用API。
http://community.csdn.net/Expert/topic/4260/4260928.xml?temp=.717251
对于非标准的纸型,我没有进行任何别的设置,
我发现 flygoldfish(长江支流) 的MisGoldPrinter
是可以正确走纸的,可惜flygoldfish(长江支流)
没有开放GolePrinter的这一部分代码,如果还有
哪位仁兄知道,望不吝赐教,非常感谢。
www.webmis.com.cn
PrinterPageSetting 点击这里下载 源码 2005-04-18 打印页面设置、打印机设置、打印预览对话框
这个就是啊
没有开放GoldPrinter的这一部分代码
http://www.webmis.com.cn/MisGoldPrinter.htm
[开源学习版下载]
MIS金质打印通的源码
兄弟,我这里有一个控件,是可以设置纸张大小的,你要不要,MSN留下,我们不能上QQ
谢谢 flygoldfish(长江支流) ,你的程序PrintPageSetUp
给了我启发,并且解决了问题,在此与诸位共享:
在定义PrintDocument时定义纸张是会一起冲突的,即:
在PrintDocument中定义纸张可以模拟显示正确,但在打印
时,总是按照A4走纸,而且屏蔽了打印时所做的打印设置。
所以,你最好在打印时使用打印设置,象 flygoldfish(长江支流)
那样封装在PrintSettings中最好。举例如下:
PrtMyPrintDocument pd = new PrtMyPrintDocument(my); //假定为默认打印机
pd.DefaultPageSettings = this.PrtSetUp(pd);
PrintPreviewDialog dlg = new PrintPreviewDialog() ;
dlg.Document = pd;
DialogResult result = dlg.ShowDialog();
if (result == DialogResult.OK)
{
pd.Print();
}
其中PrtMyPrintDocument是我自己定义的PrintDocument继承类,由于一开始
定义了纸张,所以一直不能正确走纸,现在正常。
this.PrtSetUp(pd)方法很简单,参考flygoldfish(长江支流)的代码如下:
private PageSettings PrtSetUp(PrintDocument printDocument)
{
//声明返回值的PageSettings
PageSettings ps = new PageSettings();
//申明并实例化PageSetupDialog
PageSetupDialog psDlg = new PageSetupDialog();
try
{
//相关文档及文档页面默认设置
psDlg.Document = printDocument;
psDlg.PageSettings = printDocument.DefaultPageSettings;
//显示对话框
DialogResult result = psDlg.ShowDialog();
if (result == DialogResult.OK)
{
ps = psDlg.PageSettings;
printDocument.DefaultPageSettings = psDlg.PageSettings;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString(),"出现打印错误");
}
finally
{
psDlg.Dispose();
psDlg = null;
}
return ps;
}
你完全可以定义自己的其他参数,再一次谢谢长江支流)!
希望以上对各位有用。