Python utility for designing and creating simple, regular, graphic outputs as PDF/PNG files
Project description
protograf
protograf is a utility written in Python for creating simple, regular, graphical designs in PDF (or PNG/GIF/SVG) format via a script.
protograf has been primarily created to handle the prototyping of cards, counters, tiles and boards for board games, including hexagonal grids, but can also be used for creating any relatively simple design that has regular or repetitive elements; typically a mix of graphics and text.
You do not need to know the Python language to be able to use protograf but you do need Python installed on your machine!
:notebook: Documentation
The online documentation for protograf is available at Read the Docs; its highly recommended to read the sections in the order presented in the Guide.
If you're not familiar with any kind of programming or scripting, you should at least read some of the introductory sections, and especially the installation before proceeding...
:hammer_and_wrench: Requirements
protograf requires Python (version of 3.13 or higher) to be installed and running on your machine.
If this is not your current Python version, or Python is not installed on your machine, you may want to install uv which is a cross-platform tool able to install Python.
If using uv, it is recommended to also create and use a virtual environment.
:toolbox: Quick Start (for the impatient)
Assuming that Python 3.13 or higher is installed on your machine, you can then install protograf via:
pip install protograf
or, if using uv:
uv pip install protograf
To check that protograf is working, you can use one (or more) of the files from any of the various examples sub-directories.
As a quick test, make a copy of example1.py script from the examples/manual
directory. To do so, open the
example1.py
link in your browser, click on the Raw button (near the top right), and then
save the web page as a file into a local directory on your machine.
Open a command-line window (also known as a terminal or a console), change to the directory where you saved the above file and type:
python example1.py
and press the Enter key.
This script is very simple - it just contains these lines:
# `example1` script for protograf
# Written by: Derek Hohls
# Created on: 29 February 2016
from protograf import *
Create()
Save()
and is designed to produce a single, blank, A4-sized page in a PDF file.
It should create an output file called example1.pdf, which will appear in the
same directory as the script. You should be able to open and view this file using
any PDF-capable program or application. (If you run the script in a Python shell,
the output file will be called test.pdf)
If this works, then download and try out other scripts from any of the examples
sub-directories (note some examples may require additional files such as
images, CSV files, or spreadsheets). You can download all the examples in a single
ZIP file.
If it does not work, you may want to look at more detail provided in the installation guide.
:handshake: Contributions
Please see the list of contributors.
:flower_playing_cards: Recent Features
This section highlights a few of the more recent features added. The full feature list is available in the documentation.
- New shapes: Cross and Pod
- Common gaming objects: Cube, Domino, Die and Pentomino(es)
- HexHex boards
- Stripes: interior "areas" for a Rectangle
- Cards:
- support for card-back designs
- grid marks for hexagonal cards
- corner crosses as grid marks
- card-specific bleed areas
- Color support for CYMK
:game_die: Potential Features
Features not yet checked off are not guaranteed to be implemented; they just represent current / potential areas of work or ideas.
- Common objects:
- Meeple (Polyshape with curves)
- Annular Sectors
- Image alteration operations
- Hexagon: 18xx tile example
- Pathways: (arcs and lines) in a Hexagonal grid
- Cards:
- extraction as TableTopSimulator deck
- icon alignment
:jigsaw: Potential Examples
These are possible examples to show board creation based on existing games:
- Wargame board: Squad Leader with full terrain features (vector and bitmap)
- Traveller board: show a fully-styled Star System
- WarpWar board: show a fully-styled example
- 18xx board: show a basic map with tracks, towns, cities and off-map areas
:mega: Acknowledgements
The world is full of power and energy and a person can go far by just skimming off a tiny bit of it. "Snow Crash", Neal Stephenson, 1992.
As usual, with Python, you are building "on the shoulders of giants".
In this case, the pyMuPDF library provides all of the
core infrastructure used to do the underlying graphics processing, PDF file
creation and images exports; protograf is effectively a highly customised
wrapper to simplify common uses around its existing and extensive capabilities.
Internal terminology, such as shapes, was developed before the adoption of
pyMuPDF and it is coincidental that these are similar!
Earlier versions of protograf used the ReportLab PDF Toolkit, which is also a powerful and useful library for supporting this type of application.
Users on BoardGameGeek have provided invaluable feedback and suggestions!
Those who have directly contributed to the project are listed in CONTRIBUTORS.
:books: Additional Libraries
cairoSVGhttps://pypi.org/project/cairosvg/ - support for drawing SVG imagesbgg-apihttps://pypi.org/project/bgg-api/ - support for access to the BoardGameGeek APIxlrdhttps://pypi.org/project/xlrd/ - access to Excel.xlsfilesopenpyxlhttps://pypi.org/project/openpyxl/ - access to Excel.xlsxfilesimageiohttps://pypi.org/project/imageio/- support for compiling PNGs into a GIFjinjahttps://jinja.palletsprojects.com - template logic with variablespillowhttps://github.com/python-pillow/Pillow - support for image processingsegnohttps://github.com/heuer/segno/ - support for QRCode creation
:scroll: License
protograf is licensed under the GNU General Public License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file protograf-0.5.0.tar.gz.
File metadata
- Download URL: protograf-0.5.0.tar.gz
- Upload date:
- Size: 515.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
142ae83b8ff8c5f30139e60c52a20f3593580e314938f1093d0d15e427a638b6
|
|
| MD5 |
05151c5bd8627dddfe7b4672ec6ffe89
|
|
| BLAKE2b-256 |
81bee29a38865f3f4aaac672a2f89eaf01f5d9aad0cea91c7f48db4bfaae4406
|
Provenance
The following attestation bundles were made for protograf-0.5.0.tar.gz:
Publisher:
release.yaml on gamesbook/protograf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
protograf-0.5.0.tar.gz -
Subject digest:
142ae83b8ff8c5f30139e60c52a20f3593580e314938f1093d0d15e427a638b6 - Sigstore transparency entry: 1213684362
- Sigstore integration time:
-
Permalink:
gamesbook/protograf@a1c217e3e67ae5d38a18c35cff01aa15aa691519 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/gamesbook
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1c217e3e67ae5d38a18c35cff01aa15aa691519 -
Trigger Event:
push
-
Statement type:
File details
Details for the file protograf-0.5.0-py3-none-any.whl.
File metadata
- Download URL: protograf-0.5.0-py3-none-any.whl
- Upload date:
- Size: 528.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e07ec2ce0b3b2c18fa1364b12036c8e88ed9dc7627e390d0e5967a76239359f
|
|
| MD5 |
4f441fdcef250d1a1ccc91dbb72998d9
|
|
| BLAKE2b-256 |
a404dbebbc0f29590cb9c1783f2ca2c5a73580a8f3e02c2a4ce09458ff21509b
|
Provenance
The following attestation bundles were made for protograf-0.5.0-py3-none-any.whl:
Publisher:
release.yaml on gamesbook/protograf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
protograf-0.5.0-py3-none-any.whl -
Subject digest:
9e07ec2ce0b3b2c18fa1364b12036c8e88ed9dc7627e390d0e5967a76239359f - Sigstore transparency entry: 1213684415
- Sigstore integration time:
-
Permalink:
gamesbook/protograf@a1c217e3e67ae5d38a18c35cff01aa15aa691519 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/gamesbook
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1c217e3e67ae5d38a18c35cff01aa15aa691519 -
Trigger Event:
push
-
Statement type: