Files
labelpi/docs/ANLEITUNG.en.md
T
2026-10-25 10:59:40 +01:00

143 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LabelPi – User guide
## 1. Basics
**Top bar:** printer (only shown if several are connected) · roll · length (continuous rolls only) · *rotated* · copies · dithering · auto-cut (models with a cutter only) · cut mark · **Print**.
- **The roll selected here must match the roll that is loaded.** LabelPi asks if you change the roll compared with the last print.
- **rotated:** On continuous rolls the length is shown horizontally and the label is rotated by 90° when printing, so you read it like on screen.
- **Dithering:** Only useful for photos/greys. Keep it **off** for text, QR codes and barcodes.
- **Cut mark** (continuous rolls without a cutter): prints a dashed line at the end of the label so you cut in the right place by hand (e.g. QL-500).
**Working in the designer**
- **View:** By default only the most important functions are shown. **Advanced view** (bar at the top right) adds rotate, dithering, auto-cut, cut mark, series, grid and zoom. More elements (PDF, shapes, symbols) are in the **+ More …** menu, saving/export under **File ▾**.
- Add elements from the toolbar, **tap** = select, **drag** = move, **bottom-right corner** = resize.
- The **properties** are in the bar at the bottom, which always stays visible. It also has buttons to align the element to the label.
- Elements **snap** to the edge, centre and other elements while moving (pink guide lines).
- **↶ / ↷** undo and redo (last 25 steps).
## 2. Elements
| Element | Notes |
|---|---|
| **Text** | Multi-line. *Auto size* fills the box with the largest possible font (set the box height). |
| **Symbol** | Warning, hazard, recycling signs etc. – they are text in a symbol font, so freely scalable. |
| **QR code** | Any text or link; placeholders allowed. The *QR assistant* builds Wi-Fi, vCard, email … for you. |
| **Barcode** | Choose a type (see below). With invalid content a red warning appears and **nothing is printed**. |
| **Image** | Photo/logo from your device. Switch dithering on for photos. |
| **PDF** | The page size selects the matching roll. Multi-page PDFs can be printed as a series (one page per label). |
| **Shapes** | Circle, line, arrow, triangle – filled or outline, rotatable in 45° steps (properties → Rotation). |
| **Table** | See section 3. |
**Barcode types**
| Type | Input |
|---|---|
| Code 128 | Any characters |
| EAN-13 | 12 digits (check digit is added) |
| EAN-8 | 7 digits |
| Code 39 | Capital letters, digits, `- . $ / + %` and space |
| GS1-128 | With brackets, e.g. `(01)09501101530003(17)271231(10)AB12` |
| Data Matrix | Any text, square |
## 3. Tables
- **Tap a cell** = select it (blue). **Double-click or double-tap** = type directly into the cell. *Enter* accepts, *Tab* jumps to the next cell, *Esc* cancels.
- In the properties: add/remove rows and columns, font, line width, *first row bold*.
- **Table border:** all lines · outside only · row lines · none.
- **Border of a single cell:** select the cell and tick *top / bottom / left / right*. This is in addition to the table border – with “none (cell borders only)” just the marked cells get lines (e.g. a single underline).
- Texts that are too long shrink automatically to fit the cell.
- You can also edit the content as text: one line per table row, columns separated by `;`.
## 4. Placeholders
Placeholders work in **text, QR codes, barcodes and table cells**. The names are German; English short forms exist.
| Placeholder | Meaning | Example |
|---|---|---|
| `{n}` | Counter within the series | 1, 2, 3 … |
| `{n:5}` | Counter, 5 digits with leading zeros | 00001 |
| `{gesamt}` / `{total}` | Number of labels in the series | `{n}/{gesamt}` → 3/10 |
| `{lfd}`, `{lfd:5}` | **Running counter that remembers** (stored on the Pi, survives restarts and device changes) | 1001, 1002 … |
| `{lfd.invoice}` | Named counter, as many as you like | independent of `{lfd}` |
| `{datum}` / `{date}` | Today's date | 24.10.2026 |
| `{datum:JJJJ-MM-TT}` | Date with a custom format (`JJJJ`/`YYYY`, `JJ`/`YY`, `MM`, `TT`/`DD`) | 2026-10-24 |
| `{datum+30}` | Date plus 30 days (also `-7`; units `d` days, `w` weeks, `m` months, `j`/`y` years) | 23.11.2026 · `{datum+6m:MM/JJJJ}` → 04/2027 |
| `{zeit}`, `{zeit:HH:MM:SS}` | Time | 14:35 |
| `{jahr}` `{monat}` `{tag}` | Single date parts (also with offset, e.g. `{jahr+1j}`) | 2026 · 10 · 24 |
| `{kw}` / `{cw}` | ISO calendar week (e.g. `{kw+2w}` = week in two weeks) | 43 |
| `{wochentag}` `{monatname}` | Name in the interface language | Saturday |
| `{zufall:8}` / `{random:8}` | Random code (8 characters, without easily confused ones like 0/O and 1/I); every label of a series gets a different one | K7HT3QWZ |
| `{uuid}` | Random UUID | 3f2a9c1e-… |
| `{ColumnName}` | Value from the CSV column (CSV series only) | `{Name}` |
**English short forms:** `{date}` `{time}` `{year}` `{month}` `{day}` `{weekday}` `{cw}` `{random}` `{total}` `{seq}`.
**Filters** (append with `|`, combinable): `{Name|gross}` UPPERCASE · `{Name|klein}` lowercase · `{Name|titel}` Title Case (English: `|upper` `|lower` `|title`) · `{n:8|luhn}` appends a Luhn check digit · `{n:12|gtin}` appends the EAN/GTIN check digit.
**Notes**
- Date and time come from the device you print from. Unknown placeholders are left unchanged.
- `{lfd}` reserves the numbers when printing. If printing fails the counter is reset (no gaps). You see the next value in the preview and under *Settings → Counter*, where you can also change it.
- Examples: `SN-{jahr}-{lfd:4}` → `SN-2026-0001` · `Best before {datum+30}` · `CW {kw}/{jahr}` · `{n:11|gtin}` as EAN content.
## 5. Series (“Series…”)
- **Counter:** set start, step and count. Example: start 100, step 5, count 10 → 100, 105, …, 145.
- **CSV file:** first row = column names, then one label per row. Separator `;` or `,`, UTF-8.
```
Name;Item;Number
Miller;Screw M4;1001
Smith;Nut M4;1002
```
Use `{Name}`, `{Item}`, `{Number}` in the designer.
- **PDF pages:** created when you import a multi-page PDF.
- **Copies** apply per label of the series. Printing happens in blocks; the history only shows the first label of the series.
- The preview first shows label 1; use **‹ ›** next to “Series…” to page through all labels.
## 6. Grid (“Grid…”)
Continuous rolls only. Several labels side by side and below each other on one strip:
1. Set the *label width* in mm (e.g. 28 mm on a 62 mm roll for two columns).
2. Set *columns × rows* and *gap*.
3. When printing, consecutive labels (copies or series) fill the grid. If the grid does not fit the roll an error appears.
## 7. Templates, history, export, backup
- **Templates:** save with “Save as template”, sort into **folders**, edit (name/folder) and export.
- **History:** every print and every “Save” ends up here. *Print again*, *Edit*, or use *Select* to delete/export several.
- **Export/import:** labels and templates as a JSON file, e.g. to share. **⬇ PNG/PDF** exports the current label as an image or PDF.
- **Backup:** *Settings → Save database* stores everything (including printers and password), *Restore backup* puts it back.
## 8. Printers and security
- **USB printers** are detected automatically. Several identical models are told apart by their USB port.
- **Network printers** (LAN/Wi-Fi): *Settings → Add network printer* (name, IP, model).
- **Password protection:** *Settings → Password protection*. Without it anyone on the network can print – use it only in trusted networks.
## 9. Form mode, QR assistant
- **Form mode:** every template has an **Form** button. It shows only a small form with one field per custom placeholder (e.g. `{Name}`, `{Room}`), a preview and the number of copies – no designer. Ideal for colleagues who only need to print.
- **QR assistant:** select the QR code and click *QR assistant…* in the properties. Types: link, Wi-Fi access, contact (vCard), email, phone, SMS, location, free text. You fill in the fields and the content is built correctly. Placeholders are allowed here too.
## 9a. Keyboard shortcuts
| Key | Action |
|---|---|
| `Del` | Delete the selected element |
| `Ctrl+Z` | Undo |
| `Ctrl+Y` or `Ctrl+Shift+Z` | Redo |
| `Enter` / `Tab` / `Esc` | In a table cell: accept / next cell / cancel |
## 10. Common problems
| Problem | Solution |
|---|---|
| Label cut off or misplaced | Is the roll in the app the same as the loaded one? Check “rotated”. |
| Barcode is not printed | Check the input (e.g. EAN-13 needs 12 digits). |
| Text looks different on paper | Dithering off; font not too small (below about 6 pt). |
| Page not reachable | Pi and device on the same network? Use the IP instead of `labelpi.local`. |
| More help | `docs/INSTALL.md` (installation, troubleshooting) |
## 11. Languages
The interface is available in German and English. Choose the language in the bar at the top right; it is remembered per device (the browser language is used on first start).
**Adding a new language**
1. *Settings → Languages → Download template for a new language* (`neue-sprache.json`).
2. Open the file: the German text on the left must not be changed, enter your translation on the right. `{}` are placeholders for numbers/names and must stay in the same number and order. Empty entries are shown in German.
3. Set `"_name"` at the top to the name of the language, e.g. `"Français"`.
4. Save the file as **languagecode.json**, e.g. `fr.json`.
5. *Add language file (.json)* – or put the file into the `lang/` folder on the Pi. Custom files survive updates and take precedence over built-in ones.
**Translating this guide (optional):** put it into the `lang/` folder (or `docs/`) as `ANLEITUNG.fr.md` – it is then shown under *Help* when that language is active. Without a translation the German guide is shown.
Placeholders such as `{datum}` keep their names; English short forms exist (`{date}` …). Dates, weekdays and month names appear in the selected language. If you would like to share your translation, the project welcomes a pull request.