写了一个程序实现套打功能。所用纸张是连续的打印纸。在机器的已有的纸张格式中不存在。
   一开始的时候在打印机设置那里添加一种新格式的纸张,再在水晶报表中设置纸张,此时在本机上打印是正确的,但是发布到其它没有添加这个纸张格式的机器的时候走纸就出错了。
   后来采用 activereports ,千辛万苦才设置好打印的页面,在预揽的时候显示的页面是正确的,但是到了打印的时候打印机还是按照A4格式走纸。
------------------------active reports 代码---------------------------------
reppreparelabel1 rep1=new reppreparelabel1();//active reports报表
rep1.Document.Printer.PrinterSettings.DefaultPageSettings.PaperSize=new System.Drawing.Printing.PaperSize("preparelabel",672,376);
rep1.Document.Printer.DefaultPageSettings.PaperSize=new System.Drawing.Printing.PaperSize("preparelabel",672,376);//设置默认纸张大小,但是打印时还是按a4格式打印。
rep1.Run(false);
this.initprint(rep1);
rep1.Document.Print(false,false,false);//直接打印
//this.viewer1.Document = rep1.Document;//预揽
----------------------------------------------------------------------------
   还有一种方法是调用api,每次打印之前用 addform 生成一种新格式纸张,再把它设置为打印机的默认纸张格式。可惜我找到的是VB6 的源代码,而我不会用C#调用api。
VB用API  http://support.microsoft.com/default.aspx?scid=kb;zh-cn;282474
   
   望各位能够给我指点迷津,解决这个问题。