Files
point_of_sale/PointOfSale/Pos.EpsonPrinter/ReceiptFormatter.cs
Bjarne Pedersen 41e23b6184 Initial commit
Initial commit til Git.
V2 er deployed
2026-06-13 17:31:50 +02:00

73 lines
1.7 KiB
C#

namespace EpsonReceiptPrinter;
public static class ReceiptFormatter
{
public static byte[] Format(Receipt receipt, PrinterCodePage codePage = PrinterCodePage.PC865_Nordic)
{
ArgumentNullException.ThrowIfNull(receipt);
var width = receipt.PaperWidthCharacters <= 0 ? 42 : receipt.PaperWidthCharacters;
var builder = new EscPosBuilder(codePage)
.Initialize()
.AlignCenter();
if (!string.IsNullOrWhiteSpace(receipt.Header))
{
builder
.SetTextSize(TextSize.DoubleWidthAndHeight)
.BoldOn()
.WriteLine(receipt.Header)
.BoldOff()
.SetTextSize(TextSize.Normal);
}
if (!string.IsNullOrWhiteSpace(receipt.SubHeader))
{
builder.WriteLine(receipt.SubHeader);
}
builder
.Feed(1)
.AlignLeft()
.Separator(width);
foreach (var line in receipt.Lines)
{
builder.SetTextSize(line.TextSize);
if (line.Emphasize)
{
builder.BoldOn();
}
else
{
builder.BoldOff();
}
builder.WriteColumns(line.Left, line.Right, width);
builder.SetTextSize(TextSize.Normal);
builder.BoldOff();
}
builder
.Separator(width)
.Feed(1)
.AlignCenter();
if (!string.IsNullOrWhiteSpace(receipt.Footer))
{
builder.WriteLine(receipt.Footer);
}
builder.Feed(3);
if (receipt.CutPaper)
{
builder.Cut();
}
return builder.Build();
}
}