程序中设置了纸张大小,如下,打印预览也是设置的大小,但在针式打印机上打印后纸张走出很长一段(连续纸),不知如何解决?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
解决一起结贴
pageSetupDialog1.PageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Bill", grp.Width-30, grp.Height);
-----------------------------------------------------------------------------------
原贴
http://community.csdn.net/Expert/TopicView.asp?id=4315567
解决一起结贴
{
this.printDocument1.DefaultPageSettings.PaperSize =new System.Drawing.Printing.PaperSize("Bill", 30,211); }
这样试试看
也就是说实际上自定义纸张是无效的,即使定义了,实际走纸是按控制面板中打印机默认纸张如“A4”所以,楼如果走纸是固定大小的,可以进入控制面板定义一个纸张大小并设置为默认纸张就可,这样
在程序中自定义才有效调用这个自定义的默认纸张,否则必须调用API。http://community.csdn.net/Expert/topic/4260/4260928.xml?temp=.717251
我发现 flygoldfish(长江支流) 的MisGoldPrinter
是可以正确走纸的,可惜flygoldfish(长江支流)
没有开放GolePrinter的这一部分代码,如果还有
哪位仁兄知道,望不吝赐教,非常感谢。
没有开放GoldPrinter的这一部分代码
http://www.webmis.com.cn/MisGoldPrinter.htm
[开源学习版下载]
MIS金质打印通的源码
给了我启发,并且解决了问题,在此与诸位共享:
在定义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;
}
你完全可以定义自己的其他参数,再一次谢谢长江支流)!
希望以上对各位有用。