Hallo,
ich habe hier einen Broterh QL-720NW Label Printer mit dem mein erster Druck-Versuch problemlos geklappt hat.
PrintDocument pd = new PrintDocument();
pd.PrinterSettings.DefaultPageSettings.Landscape
wird in C-Sharp auch korrekt ausgegeben. Nun möchte ich aber die Ausrichtung in meinem Programm steuern. Unter Windows ist der Drucker als Hochformat eingestellt, daher ergibt Landscape = false. Nun ändere ich den Wert auf true und trotzdem wird die Seite im Hochformat ausgedruck.
PrintDocument pd = new PrintDocument();
pd.PrintPage += printDocument1_PrintPage;
pd.PrinterSettings.DefaultPageSettings.Landscape = true;
pd.Print();
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
g.PageUnit = GraphicsUnit.Millimeter;
Pen pen = new Pen(Brushes.Black);
pen.Width = 1;
g.DrawRectangle(pen, 0, 0, 10, 10);
}
Was mache ich falsch?
(pd.PrinterSettings.DefaultPageSettings.PaperSize.Height * 0.254).ToString() // = 89,916 mm
(pd.PrinterSettings.DefaultPageSettings.PaperSize.Width * 0.254).ToString() // = 61,976 mm
stehen unter den Windows-Drucker-Einstellungen auch:
Papierformat: 62mm
Länge: 89,8mm
oberer Rand: 3,0mm
Entsprechend stimmen auch die Werte für pd.PrinterSettings.DefaultPageSettings.PrintableArea.Left.
Nun möchte ich die Länge (Height) des Papiers beeinflussen. Dafür habe ich folgenden Code hinzugefügt:
pd.PrinterSettings.DefaultPageSettings.PaperSize = new PaperSize("Custom", (int) (62/0.254), (int) (150 / 0.254));
Dem Drucker scheint auch dies egal - das Papier wird nach 9cm abgeschnitten und nicht nach 15cm. Interessant ist, dass die Option
pd.PrinterSettings.DefaultPageSettings.PrintableArea.Bottom
trotzdem die Ausgabe 86,952mm hat. Die Seite sollte wg. der geänderten PaperSize ja höher sein und somit sollte auch die PrintableArea länger sein, also irgendwas bei 136mm.
Hat jemand n' Idee, wie ich den Drucker dazu motiviert bekomme entsprechend meinen Wünschen zu Drucken. Bin für jeden Tipp dankbar!!!
Gruß
Stefan