pdn2ora
This cross-platform CLI tool converts Paint.NET (.pdn) files to OpenRaster (.ora) format, preserving all layer properties, blend modes, opacity, and visibility.
Paint.NET's native format is proprietary; this opens up your artwork for use in Krita, GIMP, and other open-source editors.
Supports recursive batch conversion, dry-run previews, post-conversion validation, and standalone binaries for Linux and Windows.
- Codeberg (main): https://codeberg.org/marvin1099/pdn2ora
- GitHub (mirror): https://github.com/marvin1099/pdn2ora
- PyPI: https://pypi.org/project/pdn2ora/
Install
# With uv (recommended)
uv tool install pdn2ora
# Or with pipx
pipx install pdn2ora
# Or with pip
pip install --user pdn2ora
Or install from git:
git clone https://codeberg.org/marvin1099/pdn2ora.git
cd pdn2ora
# With uv (recommended)
uv tool install .
# Or with pipx
pipx install .
# Or with pip
pip install --user .
Binary downloads
Instead of installing from source, get pre-compiled binaries from the releases page, or build binaries using
# if not cloned yet
git clone https://codeberg.org/marvin1099/pdn2ora.git
cd pdn2ora
./build.sh linux # Linux binary → dist/pdn2ora-linux-x64
./build.sh windows # Windows binary via Wine → dist/pdn2ora-win-x64.exe
./build.sh all # both
Development
# if not cloned yet
git clone https://codeberg.org/marvin1099/pdn2ora.git
cd pdn2ora
./build.sh setup # install all deps
./build.sh test # run tests
./build.sh lint # check code style
Usage
pdn2ora [options] FILE_OR_DIR [FILE_OR_DIR ...]
Examples
pdn2ora input.pdn # single file
pdn2ora ./artwork/ -r -D ./output/ # recursive batch to output dir
pdn2ora input.pdn --info # show layer info
pdn2ora *.pdn -d -y # convert and delete sources
Options
| Flag | Description |
|---|---|
| Output | |
-o, --output PATH |
Explicit output path (single file only) |
-D, --output-dir DIR |
Put all ORA files into DIR |
-s, --suffix EXT |
Output file extension (default: .ora) |
-w, --overwrite |
Overwrite existing output files |
-t, --no-thumbnail |
Skip thumbnail generation |
| Conversion | |
-r, --recursive |
Recursively search directories |
-d, --delete |
Delete source .pdn after successful conversion |
-x, --delete-only |
Delete .pdn if .ora already exists |
-A, --validate |
Validate the ORA file after writing |
| Info | |
-i, --info |
Show PDN file info and exit |
-S, --stats |
Show file size comparison |
| General | |
-v, --verbose |
Increase verbosity (-v info, -vv debug) |
-y, --yes |
Skip confirmation prompts |
-n, --dry-run |
Show what would be done without doing it |
-V, --version |
Show version |
-h, --help |
Show help |
Metadata
Release files for pdn2ora 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pdn2ora-0.1.1.tar.gz | 21.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pdn2ora-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.7 kB
Release files / pdn2ora-0.1.1.tar.gz
| Download URL | pdn2ora-0.1.1.tar.gz |
|---|---|
| Size | 21.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64ed8cbaeaa5919a6eefecdbb565836153972406be88c1fb38b04871ae0563e8
|
|
BLAKE2b-256 checksum How to use checksums |
8ca3a22f4ef74091b922d163985520136ca6ffd7893192fe37cf8f83195855f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / pdn2ora-0.1.1-py3-none-any.whl
| Download URL | pdn2ora-0.1.1-py3-none-any.whl |
|---|---|
| Size | 20.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6702843debaeb746680626e808e77ea39514b09890db94338eab5da2c1c46c1b
|
|
BLAKE2b-256 checksum How to use checksums |
71f44ccced9200c7bd058b77357d2043adf467435fffe6204daeaf4426f7ee91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|