Files
labelprint/views/epson.erb
T
randy 148f7dc248
deploy / deploy (push) Successful in 10s
Unified /labels page (badges, edit, preview), mnemonic ESC/POS parser for the raw receipt field
- Saved labels/receipts now show on one page instead of split across
  Shipping labels and Receipts, each with a badge for its type/printer,
  Edit (name+content, in place), Print, and Delete.
- ZPL labels get a real visual preview via Labelary's public render API;
  ESC/POS ones show their raw content (no good general preview for that).
- The Receipts free-text field only ever encoded whatever was typed as
  literal printable characters -- pasting mnemonic ESC/POS notation
  (ESC/GS/LF as command names, 0xNN as raw bytes) just printed as text
  instead of being interpreted. Added a small line-based parser for that
  notation (ReceiptBuilder#raw appends already-resolved bytes verbatim),
  verified byte-for-byte against an example with align/bold/barcode/cut.
2026-09-13 11:21:46 +02:00

50 lines
2.1 KiB
ERB

<h5>Formatted receipt</h5>
<form action="/epson/print" method="POST">
<div class="mb-3">
<label for="title" class="form-label">Title (bold, centered)</label>
<input name="title" class="form-control" type="text" id="title" />
</div>
<div class="mb-3">
<label for="body" class="form-label">Body text</label>
<textarea name="body" class="form-control" id="body" rows="8"></textarea>
</div>
<div class="mb-3">
<label for="qr" class="form-label">QR code content (optional)</label>
<input name="qr" class="form-control" type="text" id="qr" />
</div>
<button class="btn btn-secondary" type="submit">Print</button>
</form>
<hr class="mt-4">
<h5>Free text (ESC/POS mnemonic notation)</h5>
<p>
One instruction per line: <code>ESC</code>/<code>GS</code>/<code>FS</code>/<code>LF</code>/<code>CR</code>/<code>HT</code>/<code>NUL</code> as
command names, <code>0xNN</code> as a raw byte, anything else as literal text. Trailing <code># comment</code> is ignored. Example:
</p>
<pre class="bg-light p-2"><code>ESC a 0x01 # Align: Center
Hello # literal text
LF
ESC E 0x01 # Bold on
World
LF
ESC E 0x00 # Bold off
GS k 0x03 12345678 0x00 # EAN8 barcode
GS V 0x00 # Full cut</code></pre>
<form action="/epson/raw" method="POST">
<div class="mb-3">
<textarea name="content" class="form-control" rows="8" style="font-family: monospace;"></textarea>
</div>
<div class="row g-2 align-items-end">
<div class="col-auto">
<label for="save_as_escpos" class="form-label">Save as (optional)</label>
<input name="save_as" class="form-control" type="text" id="save_as_escpos" placeholder="receipt name" />
</div>
<div class="col-auto">
<button class="btn btn-secondary" type="submit">Print</button>
</div>
</div>
</form>
<p class="mt-4"><a href="/labels">See saved receipts &rarr;</a></p>