Ich arbeite mit einem Restaurant Rechnung Druck-Software.Eine Quittung mit WinForms-Anwendung formatieren
Ich habe eine Quittung entwickelt. aber sie sehen nicht wirklich wie eine Quittung aus.
Ich habe eine Lösung von CodeProject gefolgt. Hier ist mein Code zum Erstellen einer Quittung:
//Get the Graphics object
Graphics g = printTextEvArgs.Graphics;
//Create a font Arial with size 16
Font font = new Font("Arial", 10);
float fontHeight = font.GetHeight();
string underLine = "------------------------------------------";
int startX = 10;
int startY = 10;
int offset = 40;
//Create a solid brush with black color
SolidBrush brush = new SolidBrush(Color.Black);
if (RecieptType == "ktcprinter")
{
}
else if (RecieptType == "billprinter")
{
g.DrawString(restaurantInfo.name, new Font("Courier New", 16), new SolidBrush(Color.Black), startX, startY);
offset = offset + (int)fontHeight + 20;
var wc = new WebClient();
Image imgFromUrl = Image.FromStream(wc.OpenRead(b.restaurant_info.logo));
g.DrawImage(imgFromUrl, 60, 40, 150, 100);
offset = offset + (int)fontHeight + 50;
g.DrawString("Address: " + restaurantInfo.address, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Phone: " + restaurantInfo.phone, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Vat Reg. No.: " + restaurantInfo.vat_reg_no, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Served By: " + employeeInfo.served_by, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + 13;
g.DrawString(underLine, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + 13;
foreach (var item in b.items)
{
string menuTitle = item.menu_title + item.quantity + item.price;
g.DrawString(menuTitle, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
}
//Get UnderLine
offset = offset - 8;
g.DrawString(underLine, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + 15;
g.DrawString("Sub Total: " + calculation.sub_total, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Discount: " + calculation.discount, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Vat: " + calculation.vat, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Service Charge: " + calculation.service_charge, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Delivery Charge: " + calculation.delivery_charge, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
//Get UnderLine
offset = offset + 12;
g.DrawString(underLine, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + 12;
g.DrawString("Total: " + calculation.total.PadRight(30), new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
//Get UnderLine
offset = offset - 11;
g.DrawString(underLine, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + 13;
foreach (var item in b.payments)
{
string paymentMethod = item.method + item.amount;
g.DrawString(paymentMethod, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
}
g.DrawString("Change: " + calculation.change, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
g.DrawString("Pay Tip: " + calculation.pay_tip, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + offset);
offset = offset + (int)fontHeight + 5;
offset = offset + 20;
//offset = offset + 20;
//g.DrawString("Total To Pay".PadRight(30) + string.Format("{0:c}"), variable, font, new SolidBrush(Color.Black), startX, startY + offset);
}
//Draw "Hello Printer!";
//new Rectangle(margin X, margin Y, Width, Height)
//g.DrawString(printString.ToString(),
//font, brush, new Rectangle(5, 0, 350, 500));
}
Was ich habe, ist wie das Bild unten. Ich möchte es wie eine echte Quittung machen.
Die Mengen müssen in einer Spalte und der Preis in einer anderen Spalte sein.
(Man beachte, dass die Lösung, die ich für sie perfekt gefolgt gearbeitet.)
Mein Ausgang zur Zeit:
Um Spalten zu erstellen, müssen Sie einfach die verschiedenen Artikel an festen x-Positionen in derselben Zeile drucken. Oder: Da Sie eine feste Schriftart verwenden, können Sie auch den linken Teil mit Leerzeichen auf eine bestimmte Anzahl von Zeichen auffüllen. - Außerdem: Ich schlage vor, dass Sie sich beim Formatieren Ihrer Frage etwas mehr Mühe geben, wenn Sie nach Formatierung fragen. – TaW