PDA

View Full Version : چگونه یک paper ایجاد کنیم که در Pagesetup نمایش بده (مثل سایز A4)



ali_autumnal
جمعه 12 آذر 1389, 23:11 عصر
با سلام و خسته نباشید به همه بزرگان و دوستداران حضرت #C

من میخوام یک paper ایجاد کنم مثلا با ابعاد 170*85 میلیمتر

دستورات زیر رو مینویسم paper با size مورد نظر درست میشه اما Document مورد نظرم رو تو PrintPreview در داخل این paper نمایش نمیده.

و از طرفی paper ایجاد شده فقط در داخل برنامه تعریف شده به لیست paper های موجود ویندوز هم اضافه نشد.

واقعیت رو بخواین حالت های متعددی رو بررسی کردم اما هیچکدوم جواب نداد. مثلا کد زیر یکی از حالت های بررسی شده من بود:




System.Drawing.Printing.PrintDocument PrintDoc = new System.Drawing.Printing.PrintDocument();
PrintPreviewDialog PreviewDialog = new PrintPreviewDialog();
System.Drawing.Printing.PaperSize Custom = new System.Drawing.Printing.PaperSize("PaeiziSoft", 85, 170);

PrintDoc.OriginAtMargins = true;
PrintDoc.DefaultPageSettings.Landscape = true;
PrintDoc.DefaultPageSettings.PaperSize = Custom;
PrintDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(Prin tDoc_Print);
PreviewDialog.Document = PrintDoc;
PreviewDialog.AllowTransparency = true;
PreviewDialog.WindowState = System.Windows.Forms.FormWindowState.Maximized;
PreviewDialog.ShowDialog();


یا مثلا این یکی:




System.Drawing.Printing.PageSettings sdpp = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.QueryPageSettingsEventArgs ee = new System.Drawing.Printing.QueryPageSettingsEventArgs (sdpp);
prdPrint_QueryPageSettings(null, ee);


private void prdPrint_QueryPageSettings(object sender, System.Drawing.Printing.QueryPageSettingsEventArgs e)
{
System.Drawing.Printing.PaperSize custom;

custom = new System.Drawing.Printing.PaperSize("PaeiziSoft", 85, 170);

e.PageSettings.PaperSize = custom;
e.PageSettings.PrinterSettings.DefaultPageSettings .PaperSize = custom;
}



چیکار باید انجام بدم؟

با تشکر
علی پائیزی

ali_autumnal
یک شنبه 14 آذر 1389, 23:22 عصر
دوستان کسی نظری نداره؟

tooraj_azizi_1035
دوشنبه 15 آذر 1389, 13:25 عصر
سلام،
تست کن: http://www.codeproject.com/KB/printing/custom_paper_sizes.aspx :قلب:

علیرضا حسن زاده
دوشنبه 15 آذر 1389, 16:29 عصر
باید از توابع API استفاده کنی من از این روش برای برنامم استفاده می کنم و خوب جواب میده مشکل درست نشون ندادن هم اینکه چاپگر اندازه کاغذ رو درست تشخیص نمیده بهترین روش هم همون تعریف اندازه کاغذ هست
اگه اندازه کاغذ ثابته بدون اینکه از API هم استفاده کنی می تونی این کار رو انجام بدی توی Printer&Fax راست کلیک کن و Server Properties رو انتخاب کن و اونجا یه فرم جدید با اندازه های دلخواه ایجاد کن(همون کاغذ جدید) حالا تو کد برنامه اندازه کاغذ رو به اندازه هایی که برای فرم تعریف کردی ست کن(فقط طول و عرض) و اطلاعات رو چاپ کن پون دیگه چاپگر اون اندازه ای رو که دادی با اندازه های موجود (که یکیش همون فرم تعریف شده توسط شما هست) انتخاب و چاپ می کنه و نیازی به تعریف کاغذ تو برنامه ندارین
اگه برای کار با API هم مثال خواستین بگین تا بزارم

ali_autumnal
دوشنبه 15 آذر 1389, 23:21 عصر
باید از توابع API استفاده کنی من از این روش برای برنامم استفاده می کنم و خوب جواب میده مشکل درست نشون ندادن هم اینکه چاپگر اندازه کاغذ رو درست تشخیص نمیده بهترین روش هم همون تعریف اندازه کاغذ هست
اگه اندازه کاغذ ثابته بدون اینکه از API هم استفاده کنی می تونی این کار رو انجام بدی توی Printer&Fax راست کلیک کن و Server Properties رو انتخاب کن و اونجا یه فرم جدید با اندازه های دلخواه ایجاد کن(همون کاغذ جدید) حالا تو کد برنامه اندازه کاغذ رو به اندازه هایی که برای فرم تعریف کردی ست کن(فقط طول و عرض) و اطلاعات رو چاپ کن پون دیگه چاپگر اون اندازه ای رو که دادی با اندازه های موجود (که یکیش همون فرم تعریف شده توسط شما هست) انتخاب و چاپ می کنه و نیازی به تعریف کاغذ تو برنامه ندارین
اگه برای کار با API هم مثال خواستین بگین تا بزارم

با سلام دوباره

متشکرم که پاسخ دادید.

من نمیخوام کابر بخودش زحمت بده و بره تو بخش DevicesandPrinters و یه کاغذ با ابعاد مورد نیازش تعریف کنه. من میخوام تو برنامه ام 2 تا TextBox بزارم و فقط کاربر سایز مورد نظرش رو بده و برنامه واسش کاغذی با اون ابعاد تعریف کنه. و البته این کار رو یکبار انجام بده و از دفعات بعدی نیازی به تعریف کاغذ نباشه.

یه برنامه ساده تجاری نوشتم اگه خدا بخواد میخوام بفروشمش. چون برنامه کوچک و همه گیره در نتیجه بهتره تو برنامه کاغذ مورد نظر تعریف بشه تا کاربران مبتدی راحت بتونن کارکنند.

متشکرم
علی پائیزی

علیرضا حسن زاده
سه شنبه 16 آذر 1389, 10:33 صبح
می تونی از کلاسی که گذاشتم استفاده کنی و توسط توابع اون کاغذ رو ایجاد کنی
توابع هم استاتیک هستن