gpt4 book ai didi

C# 设置信封的打印区域

转载 作者:太空狗 更新时间:2023-10-30 01:18:47 31 4
gpt4 key购买 nike

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

  1. 获取本地打印机列表,让用户选择(知道了)

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

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

我没有使用过 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));
}
}

最佳答案

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

设置后,您不必担心将其缩小以适合。它应该会自动执行此操作。

关于C# 设置信封的打印区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727056/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com