程序中设置了纸张大小,如下,打印预览也是设置的大小,但在针式打印机上打印后纸张走出很长一段(连续纸),不知如何解决?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
解决一起结贴

解决方案 »

  1.   

    c#用pagesize解决不了设置纸张的问题,我的解决方法是先在系统中设置一个纸张,假如是aaa,然后通过编程遍历系统纸张,传给Document,这样就可以了!!具体代码网上查!!
      

  2.   

    SqlDataAdapter(小鸟):   我用的是本地打印机,如何用程序控制? glider21cn(随风飞翔):最好完全用程序完成,否则要详细告诉客户如何设置,如果换了操作人员,新来的不会操作,也是一件麻烦事
      

  3.   

    private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
    {
    this.printDocument1.DefaultPageSettings.PaperSize =new System.Drawing.Printing.PaperSize("Bill", 30,211); }
    这样试试看
      

  4.   

    程序中设置的纸张大小必须是控制面板中打印机已的纸张,否则不行,
    也就是说实际上自定义纸张是无效的,即使定义了,实际走纸是按控制面板中打印机默认纸张如“A4”所以,楼如果走纸是固定大小的,可以进入控制面板定义一个纸张大小并设置为默认纸张就可,这样
    在程序中自定义才有效调用这个自定义的默认纸张,否则必须调用API。http://community.csdn.net/Expert/topic/4260/4260928.xml?temp=.717251
      

  5.   

    对于非标准的纸型,我没有进行任何别的设置,
    我发现 flygoldfish(长江支流) 的MisGoldPrinter
    是可以正确走纸的,可惜flygoldfish(长江支流)
    没有开放GolePrinter的这一部分代码,如果还有
    哪位仁兄知道,望不吝赐教,非常感谢。
      

  6.   

    www.webmis.com.cnPrinterPageSetting 点击这里下载 源码 2005-04-18 打印页面设置、打印机设置、打印预览对话框 这个就是啊
    没有开放GoldPrinter的这一部分代码
    http://www.webmis.com.cn/MisGoldPrinter.htm
     [开源学习版下载]
    MIS金质打印通的源码
      

  7.   

    兄弟,我这里有一个控件,是可以设置纸张大小的,你要不要,MSN留下,我们不能上QQ
      

  8.   

    谢谢  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;
    }
    你完全可以定义自己的其他参数,再一次谢谢长江支流)!
    希望以上对各位有用。