Skip to main content

Library to generate PDFs for printing labels

Project description

pylabels2

pylabels2 is a Python library for creating PDFs to print sheets of labels. It uses the ReportLab PDF toolkit to produce the PDF.

This is a fork of davis-junior/pylabels

The original project was written by Blair Bonnett found at bcbnz/pylabels

Installation

pip install pylabels2

Usage

Note: In this fork, the module has been renamed from labels to pylabels.

Install:

from pylabels import Specification, Sheet

Create a callable that adds content to a single label:

def draw_label(label, width, height, label_data):
    label.add(shapes.String(2, 2, str(label_data), fontName="Helvetica", fontSize=40))

Create a Specification for the layout of the labels on a sheet:

specs = Specification(210, 297, 2, 8, 90, 25, corner_radius=2)

Create a Sheet and pass it the spec and callable:

sheet = Sheet(specs, draw_label, border=True)

Add labels to the sheet:

sheet.add_label("Hello World1")
sheet.add_label("Hello World2")
# etc ...

Save the sheet to file as PDF:

sheet.save("basic.pdf")

Or save to BytesIO buffer:

buffer = sheet.save_to_buffer()

See detailed examples below.

Overview

Basically, the user creates a set of specifications of the label sizes etc, writes a callback function which does the actual drawing, and gives these two items to a Sheet object. Items are then added to the sheet using the add_label() method (or add_labels() to add all items from an iterable).

The callback function is called once for each item, being given a ReportLab Drawing object representing the label, its width and height, and the item to draw on the label. Any of the standard ReportLab drawing methods can be used, with pylabels automatically adding a clipping path around each label to prevent it interfering with other labels.

Once all the items have been added, the labels can be saved as a PDF, a preview of a page can be saved as an image, or returned as a BytesIO buffer.

Examples

The following examples are available in the demos directory:

  • Basic - a introduction to the basic use of pylabels.
  • Partial pages - how to produce partial pages (i.e., pages with some of the labels previously used).
  • Repeated - how to use the count parameter to add multiple copies of the same label.
  • Background colours - examples of solid, striped and hatched backgrounds of different colours on each label.
  • Page background - how to add a background image for each page.
  • Padding - how to add padding to the labels.
  • Nametags - creates a set of nametags from the list of names in the names.txt file. Includes the use of two custom fonts, font size selection, and centred text.
  • Image preview - generates image previews of two of the pages from the nametags demo.
  • Addresses - print mailing labels (From a CSV file) on a standard Avery 5160 label page.
  • Django demo - Download a PDF of labels with barcodes directly from the browser in a Django project (uses save_to_buffer instead of save).

Demo fonts

The following fonts are used in the demo scripts and are included in the demos folder:

License

Copyright (C) 2012, 2013, 2014, 2015 Blair Bonnett

pylabels is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

pylabels is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with pylabels. If not, see http://www.gnu.org/licenses/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylabels2-1.4.2.tar.gz (657.9 kB view details)

Uploaded Source

Built Distribution

pylabels2-1.4.2-py3-none-any.whl (659.2 kB view details)

Uploaded Python 3

File details

Details for the file pylabels2-1.4.2.tar.gz.

File metadata

  • Download URL: pylabels2-1.4.2.tar.gz
  • Upload date:
  • Size: 657.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for pylabels2-1.4.2.tar.gz
Algorithm Hash digest
SHA256 7f9d23ad2610c8a1259a2334a8d20e9847aa71d81eab968b5ebc4c7244385995
MD5 fced032e480fed38f7befc79dade14fd
BLAKE2b-256 b6ee3f61b0423e5a6f4dbef7dd1eb153596569b53d904ffe90425c57d70330a2

See more details on using hashes here.

File details

Details for the file pylabels2-1.4.2-py3-none-any.whl.

File metadata

  • Download URL: pylabels2-1.4.2-py3-none-any.whl
  • Upload date:
  • Size: 659.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for pylabels2-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1516b0a966b34c47b7803eceb512ab56f726d593c1ec268d9319db143def5b03
MD5 b29c218519f58a3c6549c60396d32f91
BLAKE2b-256 b0fc7c63c620d2835170c6d00ea89b4ab2326e2ab39b6140ff4173f59d05e02f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page