折磨我一周的问题总算解决了
现在项目需要打印各种帐单 打印机都是LQ-1600KIII针式打印机
因为每种账单大小不同,主要是纸高度不同
所以要控制打印一张的打印机卷纸长度

最开始这样设置

printDoc.DefaultPageSettings.PaperSize=new PaperSize("custom",949,300);

不成功

后来想想 是不是打印机必须添加custom这种纸才行呢,
所以到打印机和传真文件夹-->右键-->服务器属性
添加了自己定义的纸类型 名称949W300H 宽9.49in,高3.00in
然后程序修改为
printDoc.DefaultPageSettings.PaperSize=new PaperSize("949W300H",949,300);
但是还是不行

这样耽误了n天,到处试验,今天忽然想起来是不是new PaperSize不行呢
所以改了程序为

foreach(PaperSize ps in printDoc.PrinterSettings.PaperSizes)
 {
  if(ps.PaperName=="949W300H")
  {
   printDoc.PrinterSettings.DefaultPageSettings.PaperSize=ps;
   printDoc.DefaultPageSettings.PaperSize=ps;
  }
 }

就可以了 似乎纸张只能从printDoc.PrinterSettings.PaperSizes中选择
....
问题虽然解决了
但是还是要用户添加各种帐单的纸张,毕竟账单种类很多
用户都要通过打印机和传真文件夹-->右键-->服务器属性 来添加
有没有办法程序直接控制,而不用添加自定义纸张呢

我看Word是有这个功能的,可以打印的时候随便指定纸张大小,而不用添加自定义纸张类型

那位高手指点一下 谢谢了