[gelöst] PrinterSettings
-
Ich erstelle eine Textdatei, die mit einem Buttonklick ausgedruckt werden kann.
Hier der dafür verwendete Code:using System.Diagnostics; public void Drucken(string Datei) { // Dateinahme und Seitennummer unterdrücken? // // MessageBox.Show("Drucken / Datei " + Datei); PrinterSettings ps = new PrinterSettings(); ps.DefaultPageSettings.Landscape = false; var printProcess = new Process(); printProcess.StartInfo.FileName = Datei; printProcess.StartInfo.UseShellExecute = true; printProcess.StartInfo.Verb = "print"; printProcess.Start(); }
Ich möchte im Ausdruck die Angaben des Dateinamens (oben) und der Seitennummer (unten)
unterdrücken bzw. im Text selbst platzieren.
-
berniebutt schrieb:
Ich möchte im Ausdruck die Angaben des Dateinamens (oben) und der Seitennummer (unten)
unterdrücken bzw. im Text selbst platzieren.Dann druck die Datei selbst aus und lass es nicht notepad.exe tun.
-
Danke!
Habe folgende Lösung mit printDocument gefunden:private System.IO.StreamReader fileToPrint; private System.Drawing.Font printFont; private void button1_Click(object sender, EventArgs e) { string path = Directory.GetCurrentDirectory() + "\\" + textBox1.Text; textBox2.Text = path; fileToPrint = new System.IO.StreamReader(path); printFont = new System.Drawing.Font("Courier New", 10); printDocument1.DocumentName = path; printDocument1.Print(); fileToPrint.Close(); } private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { float yPos = 0; int count = 0; float leftMargin = e.MarginBounds.Left; float topMargin = e.MarginBounds.Top; string line = null; float linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics); while (count < linesPerPage) { line = fileToPrint.ReadLine(); if (line == null) break; yPos = topMargin + count * printFont.GetHeight(e.Graphics); e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); count++; } if (line != null) e.HasMorePages = true; }
Läuft wie gewünscht.
-
Hallo,
folgende Anmerkung:
string path = Directory.GetCurrentDirectory() + "\\" + textBox1.Text;
Verwende stattdessen besser:
string path = Path.Combine(Directory.GetCurrentDirectory(), textBox1.Text);
Damit spars du dir das unschöne String zusammen gehacke. Intern passiert da zwar vermutlich auch nix anderes, aber's sieht einfach schöner aus.