PDA

View Full Version : چاپ فایل با پرینتر غیر پیش فرض



Hossein Bazyan
سه شنبه 09 فروردین 1390, 11:03 صبح
سلام دوستان
من میخوام فایلی رو با پرینتری غیر از پرینتر پیش فرض چاپ کنم اما هر کاری کردم نشد.

آخر سر به این شکل عمل کردم که اول پرینتر انتخاب شده رو به پیش فرض تغییر دادم و بعد از انجام چاپ برگشت دادم به پرینتر قبلی اما راه حرفه ای این نیست و یکسری مشکلات داره مثلا اگر قبل از عمل چاپ پرینتر به پرینتر قبلی تغییر کند عمل چاپ با پرینتری غیر از پرینتر مورد نظر انجام میشه
کد زیر را هم بکار بردم . چاپ میشه اما خالی


Dim pd As PrintDocument = New PrintDocument
pd.DocumentName = "C:\bb.txt"
pd.OriginAtMargins = False
pd.PrinterSettings.PrinterName = "Brother CS 1419"
pd.PrintController() = New System.Drawing.Printing.StandardPrintController()
pd.Print()

راهی دیگری به نظر شما میرسد؟

محسن شامحمدی
سه شنبه 09 فروردین 1390, 19:09 عصر
راهی دیگری به نظر شما میرسد؟
چرا از پنجره انتخاب پرینتر استفاده نمی کنید؟

Dim pd As New PrintDocument
Dim objprinterdlg As New PrintDialog
objprinterdlg.ShowDialog()
pd.DocumentName = "C:\bb.txt"
pd.OriginAtMargins = False
'---------------------
pd.PrinterSettings = objprinterdlg.PrinterSettings
'---------------------
pd.PrintController() = New System.Drawing.Printing.StandardPrintController()
pd.Print()

Hossein Bazyan
سه شنبه 09 فروردین 1390, 22:25 عصر
چرا از پنجره انتخاب پرینتر استفاده نمی کنید؟

Dim pd As New PrintDocument
Dim objprinterdlg As New PrintDialog
objprinterdlg.ShowDialog()
pd.DocumentName = "C:\bb.txt"
pd.OriginAtMargins = False
'---------------------
pd.PrinterSettings = objprinterdlg.PrinterSettings
'---------------------
pd.PrintController() = New System.Drawing.Printing.StandardPrintController()
pd.Print()

سلام
دوست عزیز ممنون از جواب شما
اولا من چاپ فایل را برای برنامه ای بنام Opalis میسازم که باید توسط وی بی DLL ساخته بشه و توسط برنامه های مختلف به آن الصاق شود و کاربر قبل از اجرا باید پرینتر را انتخاب کند
در ضمن هیچ فرقی هم نمیکنه شما کد خودتون را امتحان کنید ببینید که فایل خروجی یه صفحه سفید چاپ میشه !

محسن شامحمدی
پنج شنبه 11 فروردین 1390, 11:03 صبح
شما کد خودتون را امتحان کنید ببینید که فایل خروجی یه صفحه سفید چاپ میشه ! خب به خاطر اینه که هیچ کدی واسه رویداد print اش ننوشتید.

نمونه کامل:

Dim WithEvents pd As New PrintDocument

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objprinterdlg As New PrintDialog
objprinterdlg.ShowDialog()
pd.DocumentName = "C:\bb.txt"
pd.OriginAtMargins = False
'---------------------
pd.PrinterSettings = objprinterdlg.PrinterSettings
'---------------------
pd.PrintController() = New System.Drawing.Printing.StandardPrintController()
pd.Print()
End Sub

Private Sub Printing(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pd.PrintPage
e.Graphics.DrawString("salam", Me.Font, Brushes.Black, 200, 200)
End Sub

پ.ن: شما می خواهید یک فایل متنی بنویسید؟ چرا از متدهای مربوط به I/O استفاده نمی کنید؟

Hossein Bazyan
پنج شنبه 11 فروردین 1390, 12:00 عصر
خب به خاطر اینه که هیچ کدی واسه رویداد print اش ننوشتید.

نمونه کامل:

Dim WithEvents pd As New PrintDocument

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objprinterdlg As New PrintDialog
objprinterdlg.ShowDialog()
pd.DocumentName = "C:\bb.txt"
pd.OriginAtMargins = False
'---------------------
pd.PrinterSettings = objprinterdlg.PrinterSettings
'---------------------
pd.PrintController() = New System.Drawing.Printing.StandardPrintController()
pd.Print()
End Sub

Private Sub Printing(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pd.PrintPage
e.Graphics.DrawString("salam", Me.Font, Brushes.Black, 200, 200)
End Sub

پ.ن: شما می خواهید یک فایل متنی بنویسید؟ چرا از متدهای مربوط به I/O استفاده نمی کنید؟

سلام
نه دیگه نشد . اینو من میدونستم . من میخوام فایلی رو انتخاب کنم و چاپ کنم حال فایل تکست باشه یا عکس یا word

محسن شامحمدی
پنج شنبه 11 فروردین 1390, 12:32 عصر
من میخوام فایلی رو انتخاب کنم و چاپ کنم حال فایل تکست باشه یا عکس یا word
و احتمالا می خواین از poperty ای به نام DocumentName استفاده کنید.
یعنی :
آدرس فایل رو به DocumentName بدیم و اون چاپگر خودش فایل رو باز کنه و محتویات داخلش رو چاپ کنه.

من فکر می کنم که این Property این قابلیت رو نداشته باشه.




PrintDocument.DocumentName Property


Gets or sets the document name to display (for example, in a print status dialog box or printer queue) while printing the document

Hossein Bazyan
پنج شنبه 11 فروردین 1390, 12:45 عصر
و احتمالا می خواین از poperty ای به نام DocumentName استفاده کنید.
یعنی :
آدرس فایل رو به DocumentName بدیم و اون چاپگر خودش فایل رو باز کنه و محتویات داخلش رو چاپ کنه.

من فکر می کنم که این Property این قابلیت رو نداشته باشه.

سلام
دقیقا"
مشکل منم همینه . راه دیگری به نظرتون نمیرسه ؟

محسن شامحمدی
پنج شنبه 11 فروردین 1390, 13:13 عصر
راه دیگری به نظرتون نمیرسه?
راه اصولیش که همه هم استفاده می کنند اینه که برای فایل های مختلف کدهای مختلفی نوشته بشه.
مثلا اگر فایل ورد بود با استفاده از microsoft word component فایل رو چاپ کنی
یا اگر فایلش txt بود فایل رو با stream reader باز کنی و خط به خطشو بفرستی به شی print document
و ...