Find a file
2026-01-22 17:45:53 +00:00
.forgejo/workflows chore(deps): update codeberg.org/margau/buildenv-uv:latest docker digest to 209521f 2026-01-22 17:45:53 +00:00
paperless_asn_qr_codes feat: default value for textsize 2026-01-16 18:58:56 +01:00
.commitlintrc.yaml chore: migration to codeberg, use margau's copier boilerplate 2026-01-13 17:50:04 +01:00
.copier-answers.yml chore(deps): update dependency https://codeberg.org/margau/copier-python-uv.git to v0.0.165 2026-01-19 22:48:20 +00:00
.gitignore feat: add printing on generic a4 label paper, introduce variable textsize 2026-01-16 18:58:52 +01:00
.pre-commit-config.yaml chore(deps): update dependency https://codeberg.org/margau/copier-python-uv.git to v0.0.162 (#92) 2026-01-17 11:50:34 +01:00
LICENSE initial commit 2023-11-18 17:59:00 +01:00
pyproject.toml fix(deps): update dependency reportlab to v4.4.9 2026-01-15 19:12:22 +01:00
README.md docs: add documentation for genericA4large 2026-01-16 18:58:56 +01:00
renovate.json chore: migration to codeberg, use margau's copier boilerplate 2026-01-13 17:50:04 +01:00
uv.lock chore(deps): lock file maintenance 2026-01-20 20:25:07 +01:00

paperless-asn-qr-codes

paperless-asn-qr-codes is a command line utility for generating ASN labels for paperless with both a human-readable representation and a QR code for machine consumption. The labels are Avery 4731 labels by default.

Installation

pip install paperless-asn-qr-codes

In case you wanna use unrelease features, we also publish the main branch as development version to PyPi.

Usage

Run with uvx:

uvx paperless-asn-qr-codes

Run with uvx with a specific version, e.g. for pre-releases:

uvx --from paperless-asn-qr-codes==<version>

E.g. for dev15:

uvx --from paperless-asn-qr-codes==0.4.1dev15

Command Line Arguments:

usage: paperless-asn-qr-codes [-h] [--format {averyL4731,avery5160,avery5161,avery5163,avery5167,avery5371,herma10003}]
                              [--digits DIGITS] [--border] [--row-wise] [--num-labels NUM_LABELS] [--pages PAGES]
                              [--start-position START_POSITION]
                              start_asn output_file

CLI Tool for generating paperless ASN labels with QR codes

positional arguments:
  start_asn             The value of the first ASN
  output_file           The output file to write to (default: labels.pdf)

options:
  -h, --help            show this help message and exit
  --format, -f {avery5160,avery5161,avery5163,avery5167,avery5371,averyL4731,averyL4732,herma10003,herma4201,herma4346}
  --digits, -d DIGITS   Number of digits in the ASN (default: 7, produces 'ASN0000001')
  --border, -b          Display borders around labels, useful for debugging the printer alignment
  --row-wise, -r        Increment the ASNs row-wise, go from left to right
  --num-labels, -n NUM_LABELS
                        Number of labels to be printed on the sheet
  --pages, -p PAGES     Number of pages to be printed, ignored if NUM_LABELS is set (default: 1)
  --start-position, -s START_POSITION
                        Define the starting position on the sheet, eighter as ROW:COLUMN or COUNT, both starting from 1 (default: 1:1 or 1)

Mandatory arguments

  • <start_asn>: The value of the first ASN to generate

Optional arguments

  • <output_file>: The name of the output file to write to (default: labels.pdf)

  • -h, --help: Shows the help message
  • -f, --format: Selects the format of the output sheet (see Supported Sheets)
  • -d, --digits: Specifies the number of digits in the ASN (e.g. for the default number 7, the ASN will look like 'ASN0000001')
  • -b, --border: Generates the borders around the labels to help debug alignment issues (see Tips & Tricks)
  • -r, --row-wise: Increments the labels from left to right instead of top to bottom
  • -n, --num-labels: Number of labels to be printed on the sheet
  • -p, --pages: Number of pages to be generated, ignored if -n is present.
  • -s, --start-position: Positon of first label to be printed, either defined as ROW:COLUMN or NUMBER. Starting from 1 eg. to use the whole sheet it would be 1:1 or 1. Useful if you have a partly used sheet from using -n.

Supported Sheets

Some different sheet types are supported with the -f/--format argument, however, not all are tested.

The default is Avery L4731.

Currently tested and known working are:

  • Avery L4731 (189 Labels on DIN A4, the default)
  • Avery L4732 (80 Labels on DIN A4)
  • Avery 3657 (40 Labels on DIN A4)
  • Avery L7162 (manual cutting needed, 4 ASNs per Label)
  • Herma 10003 (80 Labels on DIN A4, formerly Herma 4345)
  • Herma 4201 (64 Labels on DIN A4, Disclaimer: Not perfect ;))
  • Herma 4346 (48 Labels on DIN A4)
  • Herma 4333 (189 Labes on DIN A4)

If you don't have label sheets at hand, you can also use:

  • genericA4large (70 Labels on plain DIN A4, manual cutting needed)

Tips & Tricks

In case your printer has alignment issues, you can generate a PDF with borders around the labels by using the -b/--border option.

Attribution

This script is based upon a public domain label generation class from @timrprobocom https://gist.github.com/timrprobocom/3946aca8ab75df8267bbf892a427a1b7

License

paperless-asn-qr-codes is distributed under the terms of the GPL-3.0 license.