3

封筒 (カスタムおよび通常) を印刷するアプリケーションを作成しようとしています。印刷するサイズとページを設定していますが、印刷中または印刷のプレビューを表示している場合、ページサイズは同じです。基本的に、このアプリは 3 つのコンボボックス (0: カスタム サイズの選択、1: プリンターの選択、2: フィーダーの選択) と「印刷」ボタンです。

何か不足していますか?

PrintDocument pd = new PrintDocument();
PaperSize paperSize;

private void combo0_pick(object sender, EventArgs e)
        {
            if (comboBox0.SelectedIndex != -1)
            {
                switch (comboBox0.SelectedItem.ToString())
                {
                    //constructor "name", inch, inch
                    case "A3":
                        paperSize = new PaperSize("A3", 1170, 1650);
                        break;
                    case "A4":
                        paperSize = new PaperSize("A4", 830, 1170);
                        break;
                    case "A5":
                        paperSize = new PaperSize("A5", 580, 830);
                        break;
                    case "A6":
                        paperSize = new PaperSize("A6", 410, 580);
                        break;
                    case "A7":
                        paperSize = new PaperSize("A7", 290, 410);
                        break;
                    case "A8":
                        paperSize = new PaperSize("A8", 200, 290);
                        break;
                    case "A9":
                        paperSize = new PaperSize("A9", 150, 200);
                        break;
                    case "A10":
                        paperSize = new PaperSize("A10", 100, 150);
                        break;
                    case "B3":
                        paperSize = new PaperSize("B3", 1390, 1970);
                        break;
                    case "B4":
                        paperSize = new PaperSize("B4", 980, 1390);
                        break;
                    case "B5":
                        paperSize = new PaperSize("B5", 690, 980);
                        break;
                    case "B6":
                        paperSize = new PaperSize("B6", 490, 690);
                        break;
                    case "B7":
                        paperSize = new PaperSize("B7", 350, 490);
                        break;
                    case "B8":
                        paperSize = new PaperSize("B8", 240, 350);
                        break;
                    case "B9":
                        paperSize = new PaperSize("B9", 170, 240);
                        break;
                    case "B10":
                        paperSize = new PaperSize("B10", 120, 170);
                        break;
                    case "C3":
                        paperSize = new PaperSize("C3", 1280, 1800);
                        break;
                    case "C4":
                        paperSize = new PaperSize("C4", 900, 1280);
                        break;
                    case "C5":
                        paperSize = new PaperSize("C5", 640, 900);
                        break;
                    case "C6":
                        paperSize = new PaperSize("C6", 450, 640);
                        break;
                    case "C7":
                        paperSize = new PaperSize("C7", 320, 450);
                        break;
                    case "C8":
                        paperSize = new PaperSize("C8", 220, 320);
                        break;
                    case "C9":
                        paperSize = new PaperSize("C9", 160, 220);
                        break;
                    case "C10":
                        paperSize = new PaperSize("C10", 110, 160);
                        break;
                    case "DL":
                        paperSize = new PaperSize("C10", 430, 860);
                        break;
                    default:
                        paperSize = new PaperSize("A5", 580, 830);
                        break;
                }
                paperSize.RawKind = (int)PaperKind.Custom;

                pd.DefaultPageSettings.PaperSize = paperSize;
                pd.PrinterSettings.DefaultPageSettings.PaperSize = paperSize;
            }
        }

private void combo1_pick(object sender, EventArgs e)
        {
            comboBox2.Items.Clear();
            pd.PrinterSettings.PrinterName = comboBox1.SelectedItem.ToString();
            for (int i = 0; i < pd.PrinterSettings.PaperSources.Count; i++ )
            {
                comboBox2.Items.Add(pd.PrinterSettings.PaperSources[i].SourceName);
            }
        }
private void combo2_pick(object sender, EventArgs e)
        {
            if (comboBox2.SelectedIndex != -1)
            {
                pd.DefaultPageSettings.PaperSource = pd.PrinterSettings.PaperSources[comboBox2.SelectedIndex];
            }
        }

void Print()
        {
            pd.PrintPage += printPage;
            //PrintPreview or Print without - same results
            PrintPreviewDialog ppd = new PrintPreviewDialog();
            ppd.Document = pd;
            ppd.ShowDialog();

            //pd.Print();
        }
void printPage(object sender1, PrintPageEventArgs e1)
        {
            //just basic example to print anything
            Graphics g = e1.Graphics;
            String text = "Text font size 10";
            Font fontText = new Font("Times New Roman", 10, FontStyle.Regular);
            g.DrawString(text, fontText, Brushes.Black, new Point(10, 140));

        }
4

1 に答える 1

3

このコードを使用して printDocument PaperSize を変更してみると、100% 動作します。

for(int i=0;i<printDocument1.PrinterSettings.PaperSizes.Count; i++)
        { 
            //NASSIM LOUCHANI

            if(printDocument1.PrinterSettings.PaperSizes[i].RawKind == 11)
            {
                printDocument1.DefaultPageSettings.PaperSize = printDocument1.PrinterSettings.PaperSizes[i];
            }
        }

11 番は A5 PaperKind 用です。残りは完成させていただけると思います。

ありがとうございました 。

于 2015-02-05T14:32:15.887 に答える