Skip to content

Commit 9dd5dbd

Browse files
committed
fix: improve printing for text with new line character
1 parent f7996f1 commit 9dd5dbd

4 files changed

Lines changed: 15 additions & 5 deletions

File tree

src/Sharprinter.Demo.Cli/Commands/PrinterHelper.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ public static Task PrintAsync(this PrinterContext context)
66
{
77
return context
88
.AddImage(@".\Assets\image.jpg", x => x.Filename("7-ELEVEN Logo"))
9-
.AddText("123 Main St. Springfield, USA", x => x.Alignment(HorizontalAlignment.Center))
10-
.AddText("VATREG 123456789000", x => x.Alignment(HorizontalAlignment.Center))
9+
.AddText("123 Main St. Springfield, USA\nVATREG 123456789000", x => x.Alignment(HorizontalAlignment.Center))
1110
.FeedLine()
1211
.AddText("INVOICE", x => x.Alignment(HorizontalAlignment.Center).TextSize(TextSize.DoubleHeight))
1312
.FeedLine()

src/Sharprinter/PrinterContext.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ public PrinterContext AddText(string data, Action<IText>? action = null)
7171
/// </returns>
7272
public PrinterContext AddSeparator(char character = '─')
7373
{
74+
if (character is '\n' or '\r')
75+
{
76+
throw new ArgumentException("Separator character cannot be a newline or carriage return.", nameof(character));
77+
}
78+
7479
var separator = new string(character, _options.MaxLineCharacter);
7580
Printer.PrintText(separator);
7681
return this;

src/Sharprinter/Tables/RowItem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ internal sealed class RowItem : IRowItem
4646

4747
public RowItem(string data, int maxLength)
4848
{
49-
_data = data;
49+
_data = data.Replace("\n", " ").Replace("\r", " "); //sanitize
5050
MaxLength = maxLength;
5151
}
5252

5353
public RowItem(string data)
5454
{
55-
_data = data;
55+
_data = data.Replace("\n", " ").Replace("\r", " "); //sanitize
5656
MaxLength = null;
5757
}
5858

src/Sharprinter/Text.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,13 @@ public IText TextSize(TextSize size)
5252

5353
internal PrinterContext Add()
5454
{
55-
context.Printer.PrintText(text, _textWrap, _alignment, _textSize);
55+
var lines = text.Split('\n');
56+
57+
foreach (var line in lines)
58+
{
59+
context.Printer.PrintText(line, _textWrap, _alignment, _textSize);
60+
}
61+
5662
return context;
5763
}
5864
}

0 commit comments

Comments
 (0)