سلام دوست عزیز
تو این نمونه کد همه چی پیدا میشه . فقط من فعلا از توضیحات معذورم
خود این کد گنجه بگیرش تا در نرفت
private void btnPrint_Click(object sender, EventArgs e)
{
try
{
PrintDocument pd = new PrintDocument();
PaperSize ps = new PaperSize("", 867, 1169);
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
pd.PrintController = new StandardPrintController();
pd.DefaultPageSettings.Margins.Left = 0;
pd.DefaultPageSettings.Margins.Right = 0;
pd.DefaultPageSettings.Margins.Top = 0;
pd.DefaultPageSettings.Margins.Bottom = 0;
pd.DefaultPageSettings.PaperSize = ps;
pd.Print();
Close();
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
}
PrintDocument pd = new PrintDocument();
PaperSize ps = new PaperSize("", 867, 1169);
public int countt = 0;
void pd_PrintPage(object sender, PrintPageEventArgs e)
{
var B_yekan = new PrivateFontCollection();
var fontLength = Properties.Resources.B_Yekan.Length;
var fontData = Properties.Resources.B_Yekan;
var data = Marshal.AllocCoTaskMem(fontLength);
Marshal.Copy(fontData, 0, data, fontLength);
B_yekan.AddMemoryFont(data, fontLength);//فراخوانی فونت یکان
var B_Nazanin = new PrivateFontCollection();
var B_N_fontLength = Properties.Resources.B_Nazanin_YasDL_com.Length;
var B_N_fontData = Properties.Resources.B_Nazanin_YasDL_com;
var B_N_data = Marshal.AllocCoTaskMem(B_N_fontLength);
Marshal.Copy(B_N_fontData, 0, B_N_data, B_N_fontLength);
B_Nazanin.AddMemoryFont(B_N_data, B_N_fontLength);//فراخوانی فونت نازنین
InitializeComponent();
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Far;
Font fNazaninBold = new Font(B_Nazanin.Families[0], 14, FontStyle.Bold);
Font fNazanin = new Font(B_Nazanin.Families[0], 13, FontStyle.Regular);
Font font_title = new Font(B_yekan.Families[0], 30, FontStyle.Regular);
SolidBrush sb = new SolidBrush(Color.Black);
Graphics g = e.Graphics;
g.DrawRectangle(Pens.Black, 5, 5, 855, 1155);
var timee = DateTime.Now.ToString();
timee = timee.Remove(0, 10);
g.DrawString(DateTime.Now.ToPersianDateString() + " " + timee, fNazaninBold, sb, 230, 20, format);
g.DrawString("بسم اله الرحمن الرحیم", font_title, sb, 640, 31, format);
g.DrawString(".................................................................. گزارش نهایی از انتخابات", fNazaninBold, sb, 760, 150, format);
g.DrawString("............................................ : با مدیریت", fNazaninBold, sb, 350, 150, format);
int yUser = 220; int xUser = 760; int yCUser;
g.DrawString("تعداد کاربران : "+tedadUser+" "+Ex.Persian_Number_To_String.GET_Number_To_PersianString(tedadUser), fNazaninBold, sb, xUser, yUser, format);
using (var db = new MyContext())
{
int countt = 0; yCUser=yUser+60;
var rows = from o in db.TblUsers
select o;
foreach (var row in rows)
{
countt++;
g.DrawString(" - "+countt.ToString(), fNazaninBold, sb, xUser - 20, yCUser, format);
if (row.CodeMeli!="0")
g.DrawString(row.Name + " " + row.Family + " - " + row.CodeMeli + " - " + row.Desc , fNazanin, sb, xUser-50, yCUser, format);
else
g.DrawString(row.Name + " " + row.Family + " - " + row.CodePassport + " - " + row.Desc, fNazanin, sb, xUser - 50, yCUser, format);
yCUser += 30;
}
}
int yKandid = yCUser+50; int xKandid = 760; int yCKandid;
g.DrawString("تعداد کاندید : " + tedadKandid + " " + Ex.Persian_Number_To_String.GET_Number_To_PersianString(tedadKandid), fNazaninBold, sb, xKandid, yKandid, format);
using (var db = new MyContext())
{
int countt = 0; yCKandid = yKandid + 60;
var rows = from o in db.TblKandids.OrderByDescending(o=>o.Tarefah)
select o;
foreach (var row in rows)
{
countt++;
g.DrawString(" - " + countt.ToString(), fNazaninBold, sb, xKandid - 20, yCKandid, format);
if (row.CodeMeli !="0")
g.DrawString(row.Name + " " + row.Family + " - " + row.CodeMeli + " - " + row.Tarefah + " - " + Ex.Persian_Number_To_String.GET_Number_To_PersianString(row.Tarefah), fNazanin, sb, xKandid - 50, yCKandid, format);
else
g.DrawString(row.Name + " " + row.Family + " - " + row.CodePassport + " - " + row.Tarefah + " - " + Ex.Persian_Number_To_String.GET_Number_To_PersianString(row.Tarefah), fNazanin, sb, xKandid - 50, yCKandid, format);
yCKandid += 30;
}
}
g.DrawString("تعداد کل رای : " + tedadKol +" "+ Ex.Persian_Number_To_String.GET_Number_To_PersianString(tedadKol), fNazaninBold, sb, xKandid, yCKandid + 50, format);
g.DrawString("تعداد رای تکراری : " + tedadTekrari +" "+ Ex.Persian_Number_To_String.GET_Number_To_PersianString(tedadTekrari), fNazaninBold, sb, xKandid, yCKandid+80, format);
g.DrawString("تعداد دانشجوها : " + tedadSt +" "+ Ex.Persian_Number_To_String.GET_Number_To_PersianString(tedadSt), fNazaninBold, sb, xKandid, yCKandid+110, format);
g.DrawString(": محل امضاء" , fNazaninBold, sb, 550, 1050, format);
}