C#设置信封的打印区域

时间:2014-09-08 14:49:24

标签: c# printing

我正在尝试做一个非常简单的操作:

  1. 获取本地打印机列表,让用户选择(得到这个)

  2. 选择手动进纸信封托盘

  3. 在手动信封送纸打印机上将客户地址打印到特定信封尺寸(4 1/8 x 9 1/2 / 03982)。

  4. 我没有使用System.Drawing.Printing类的经验,所以请原谅我对这个主题的无知。

    我正在使用我在下面找到的代码,我一直在使用:Rectangle(20, 20, 200, etc.));,但无法弄清楚如何将其减去适当的边距或获取信封托盘。

    Rectangle Class

    编辑 - 工作代码(感谢icemanind指出我正确的方向。

       //Load
       foreach (String printer in PrinterSettings.InstalledPrinters) {
              printersList.Items.Add(printer.ToString());
        }
    
        private void btPrint_Click(object sender, EventArgs e)
        {
                var pd = new PrintDocument();
                //Set PrinterName as the selected printer in the printers list
                pd.PrinterSettings.PrinterName = printersList.SelectedItem.ToString();
                //pd.DefaultPageSettings.Margins = new Margins(200, 200, 200, 200);
                pd.DefaultPageSettings.Landscape = true;
                pd.DefaultPageSettings.PaperSize.RawKind = 6;
                pd.PrintPage += pd_PrintPage;
                pd.Print();
        }
    
        public void pd_PrintPage(object sender, PrintPageEventArgs ev)
        {
                //Get Address From Database or Pass In
                var vnId = Lnq.Orders.Where(a => a.ID == OrdId).Select(a => a.fk_ClientAttID).FirstOrDefault();
                var a = Lnq.Clients.Where(a => a.ID == vnId).Select(a => new {a.Name, a.Addy1, a.City, a.State, a.Zip});
                foreach (var v in e)
                {
                    var g = ev.Graphics;
                    var font = new Font("Arial", 12);
                    var brush = new SolidBrush(Color.Black);
                    g.DrawString(a.Name + "\n" + a.Addy1  + "\n" + a.City + ", " 
                                 + a.State + " " + a.Zip, font, brush,
                                 new Rectangle(500, 400, 650, 650));
                }
        }
    

1 个答案:

答案 0 :(得分:4)

C#有一个PaperSourceKind枚举,它为各种打印媒体定义。其中一个是ManualFeed,其被描述为Manually fed envelope。您应该能够将RawKind属性设置为6,即ManualFeed值。

一旦你设定了它,你就不必担心缩小它以适应。它应该自动执行此操作。