Github URL: https://github.com/s53zo/ADIF-to-QSL-label
There is a html and python version of the tool.
Generate print-ready QSL labels from your ADIF log.
columns
.Tip: In the printer dialog select Actual size / 100% (no page scaling).
pip install reportlab pyyaml
python make_qsl_labels.py --adif "log.adi" --out "qsl_labels.pdf"
What you get by default:
Columns: **Date | Time | Band | QSL | Mode** |
Open make_qsl_labels.py
and edit the CONFIG
dict at the top. Settings are grouped in the order you’ll calibrate:
You can also supply a YAML file and override any fields:
python make_qsl_labels.py --config config.yaml --adif "log.adi" --out "qsl_labels.pdf"
Edit CONFIG["columns"]
and add new entries:
"columns": [
{"header": "Date", "source": "DATE"},
{"header": "Time", "source": "TIME"},
{"header": "Band", "source": "BAND"},
{"header": "RSTs", "source": "RST_SENT"},
{"header": "RSTr", "source": "RST_RCVD"},
{"header": "QSL", "source": "QSL"},
{"header": "Mode", "source": "MODE"},
]
"min_col_mm": [12, 10, 10, 6, 6, 6, 10]
"static_col_mm":[20, 12, 12, 8, 8, 8, 18]
No other code changes are required.
# Debug aids
--outline # draw label outlines
--guides # draw row baselines
--left-ticks # draw left edge tick inside each column (visual left alignment)
# Page margins and global offsets
--left-margin-mm 3 # override left page margin
--right-margin-mm 3 # override right page margin
--x-offset-mm -1.5 # global shift left/right
--y-offset-mm 6 # global shift up/down
# Fine-tuning per column/row
--col-offsets "0,0,0" # mm per column (3 values)
--row-offsets "0,0,0,0,0,0,0,0" # mm per row (8 values)
# Columns sizing
--static-cols # disable dynamic widths; use CONFIG.static_col_mm
Example:
python make_qsl_labels.py \
--adif "log.adi" \
--out "labels.pdf" \
--left-margin-mm 3 --right-margin-mm 3 \
--x-offset-mm -1.5 --y-offset-mm 6 \
--outline --left-ticks
Create config.yaml
to override any fields in CONFIG
:
# config.yaml
left_margin_mm: 3.0
right_margin_mm: 3.0
x_offset_mm: -1.0
y_offset_mm: 6.0
rows_per_label: 4
columns:
- { header: "Date", source: "DATE" }
- { header: "Time", source: "TIME" }
- { header: "Band", source: "BAND" }
- { header: "RSTs", source: "RST_SENT" }
- { header: "RSTr", source: "RST_RCVD" }
- { header: "QSL", source: "QSL" }
- { header: "Mode", source: "MODE" }
min_col_mm: [12, 10, 10, 6, 6, 6, 10]
static_col_mm:[20, 12, 12, 8, 8, 8, 18]
Run with:
python make_qsl_labels.py --config config.yaml --adif "log.adi" --out "labels.pdf"
A tiny sample.adif
is included for quick testing:
python make_qsl_labels.py --adif sample.adif --out sample_labels.pdf --outline
MIT – free to use, fork, and adapt.