Files
Print_server/Inspectron.Epson.TemplateEngine/ReceiptTemplateEngine.cs
2026-02-03 14:27:13 +01:00

39 lines
1.1 KiB
C#

using System.Text.Json;
using Inspectron.Epson.PrintServer.Printers.Utils;
using Inspectron.Epson.TemplateEngine.DataBinding;
using Inspectron.Epson.TemplateEngine.Parsing;
using Inspectron.Epson.TemplateEngine.Rendering;
namespace Inspectron.Epson.TemplateEngine;
public class ReceiptTemplateEngine
{
public List<PrintCommand> Render(
string xmlTemplate,
string jsonData,
int lineWidth = 48,
int bigFontLineWidth = 24)
{
// Parse XML template into node tree
var parser = new TemplateParser();
var receiptNode = parser.Parse(xmlTemplate);
// Parse JSON data into DataContext
JsonElement root;
try
{
root = JsonDocument.Parse(jsonData).RootElement;
}
catch (JsonException ex)
{
throw new TemplateRenderingException($"Invalid JSON data: {ex.Message}", ex);
}
var context = new DataContext(root);
// Render node tree to PrintCommands
var renderer = new TemplateRenderer(lineWidth, bigFontLineWidth);
return renderer.Render(receiptNode, context);
}
}