73 lines
1.7 KiB
C#
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();
|
|
}
|
|
}
|