PDA

View Full Version : سوال: استفاده از كنترل Print Dialog



oshnood
سه شنبه 18 اسفند 1388, 14:51 عصر
دوستان چطور ميشه براي چاپ سند ورد در سي شارپ از كنترلPrint Dialog استفاده كرد؟؟؟؟؟؟؟؟:گیج::گیج:

oshnood
سه شنبه 18 اسفند 1388, 16:36 عصر
دوستان چطور ميشه براي چاپ سند ورد در سي شارپ از كنترلPrint Dialog استفاده كرد؟؟؟؟؟؟؟؟:گیج::گیج:

اين كد منه.تا يه جاهاييش درسته اما متن رو عجيب غريب چاپ ميكنه.نميدونم اشكال از متن فارسيه يا...
لطفا راهنمايي كنيد


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Printing;

namespace Azmoon
{
public partial class PrintForm : Form
{
private StreamReader objstreamtoprint;
private Font objPrintFont;
private string filename;
public PrintForm()
{
InitializeComponent();
}
private void PrintForm_Load(object sender, EventArgs e)
{
filename = Application.StartupPath + "\\filename.doc";
button1.Cursor = Cursors.Hand;
button2.Cursor = Cursors.Hand;
}
private void button1_Click(object sender, EventArgs e)
{
PrintDocument objprintdocument = new PrintDocument();
objprintdocument.DocumentName = "چاپ";
printDialog1.Document = objprintdocument;
if (printDialog1.ShowDialog() == DialogResult.OK)
{
objstreamtoprint = new StreamReader(filename);
objPrintFont=new Font("Tahoma",10);
objprintdocument.PrinterSettings = printDialog1.PrinterSettings;
objprintdocument.PrintPage += new PrintPageEventHandler(prtpage);
objprintdocument.Print();
objstreamtoprint.Close();
objstreamtoprint = null;
}
}
private void prtpage(object sender, PrintPageEventArgs e)
{
float sngLinesPerpage=0;
float sngVerticalPosition=0;
int intLineCount=0;
float sngLeftMargin=e.MarginBounds.Left;
float sngTopMargin=e.MarginBounds.Top;
string strLine;
sngLinesPerpage=e.MarginBounds.Height;
objPrintFont.GetHeight(e.Graphics);
strLine=objstreamtoprint.ReadLine();
while((intLineCount<sngLinesPerpage)&&(strLine!=null))
{
sngVerticalPosition = sngTopMargin + (intLineCount * objPrintFont.GetHeight(e.Graphics));
e.Graphics.DrawString(strLine, objPrintFont, Brushes.Black, sngLeftMargin, sngVerticalPosition, new StringFormat());
intLineCount = intLineCount + 1;
if (intLineCount < sngLinesPerpage)
{
strLine = objstreamtoprint.ReadLine();
}
}
if (strLine!=null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;}
}
}

}

haftado3
شنبه 29 تیر 1392, 16:36 عصر
این کدو هم من نوشتم ولی درست چاپ نمیکنه نمیدونم مشکل از کجاس





private void Printbtn_Click(object sender, EventArgs e)
{
print();
}

private void prtPage(object sender, PrintPageEventArgs e)
{
float sngLinesPerpage = 0;
float sngVerticalPosition = 0;
int intLineCount = 0;
float sngLeftMargin = e.MarginBounds.Left;
float sngTopMargin = e.MarginBounds.Top;
string strLine;
sngLinesPerpage = e.MarginBounds.Height / (objPrintFont).GetHeight(e.Graphics);
strLine = objStreamToPrint.ReadLine();
while ((intLineCount < sngLinesPerpage) && (strLine != null))
{
sngVerticalPosition = sngTopMargin + (intLineCount * (this.Txtbox.Font).GetHeight(e.Graphics));
e.Graphics.DrawString(this.Txtbox.Text, objPrintFont, Brushes.Black, sngLeftMargin, sngVerticalPosition);
intLineCount = intLineCount + 1;
if (intLineCount < sngLinesPerpage)
{
strLine = objStreamToPrint.ReadLine();
}
}
if (strLine != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}



}
private Font objPrintFont;
private StreamReader objStreamToPrint;
private void print()
{
PrintDocument docToPrint = new PrintDocument();
docToPrint.DocumentName = "Text File Print";
Statuslbl.Text = "Text Printing ...";
prtdialog.AllowSomePages = true;
prtdialog.AllowPrintToFile = true;
prtdialog.AllowSelection = true;
prtdialog.ShowHelp = true;
prtdialog.Document = docToPrint;
if (prtdialog.ShowDialog() == DialogResult.OK)
{
objStreamToPrint = new StreamReader(OpenDirectory);
objPrintFont = new Font("Arial",10,FontStyle.Regular);
docToPrint.PrinterSettings = prtdialog.PrinterSettings;
docToPrint.PrintPage +=new PrintPageEventHandler(prtPage);
docToPrint.Print();
objStreamToPrint.Close();
objStreamToPrint = null;
Statuslbl.Text = "Text Print Done! ";
}
else
{
Statuslbl.Text = "Text Print Calnceled!";
}

}

Nikpendar1
یک شنبه 16 اردیبهشت 1397, 08:31 صبح
دوستان سلام
من یک فرم دارم که تعدادی لیبل داخلش هست و بوسیله printDialog میخوام فرم رو به همون شکل چاپ کنم.
در مورد چاپ فرم بدون printDialog مشکلی ندارم ولی با خود پرینت دیالوگ و نحوه جاگذاریش در برنامه مشکل دارم.
لطفا راهنمایی کنید.