在打印机设置中已经设置了自定义大小,并且默认也为自定义大小。
但在使用crystalReportViewer控件上的工具栏打印按钮时,弹出打印机设置框。在高级选项中,纸张规格每次默认是LETTER。
解决方法,自己写个打印Button。代码如下:
1 private void button1_Click(object sender, EventArgs e) 2 { 3 if (DialogResult.OK == printDialog1.ShowDialog()) 4 { 5 6 PrinterSettings ps=new PrinterSettings(); 7 ps=printDialog1.PrinterSettings; 8 crystorage.PrintOptions.PrinterName =ps.PrinterName; 9 int rawKind=1; 10 System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument(); 11 for (int i = 0; i < doc.PrinterSettings.PaperSizes.Count; i++) 12 { 13 //找到自定义的纸张 14 if (doc.PrinterSettings.PaperSizes[i].PaperName == "21x9.5") 15 { 16 17 rawKind = doc.PrinterSettings.PaperSizes[i].RawKind; 18 19 20 //MessageBox.Show(doc.PrinterSettings.PaperSizes[i].PaperName); 21 } 22 } 23 crystorage.PrintOptions.PaperSize =(CrystalDecisions.Shared.PaperSize)rawKind; 24 crystorage.PrintToPrinter(1, true, 1, 1); 25 26 27 }