Skip to main content

PDF Joiner

Python CLI to merge multiple PDFs into a single file, with configurable sorting.

Installation

pip install pdf-joiner

Install from source

git clone https://github.com/mariano-soto/pdf-joiner.git
cd pdf-joiner
pip install .

Install for development

git clone https://github.com/mariano-soto/pdf-joiner.git
cd pdf-joiner
pip install -e ".[dev]"

Quick usage

# Merge individual PDFs
pdfm a.pdf b.pdf c.pdf -o combined.pdf

# Merge all PDFs from a folder
pdfm ./my-documents -o result.pdf

# Merge sorted by modification date (newest first)
pdfm ./documents -o chronological.pdf --sort mtime --reverse

# Merge with natural alphabetical order (doc2.pdf before doc10.pdf)
pdfm ./documents -o alpha.pdf --sort natural

# Use defaults (generates merged.pdf, no sorting)
pdfm a.pdf b.pdf

Options

Option Description
inputs PDF files or folders containing PDFs (required)
-o, --output Output PDF path (default: merged.pdf)
--sort Sort mode: none, name, natural, mtime, ctime
--reverse Reverses the selected sort order

Sort modes

  • none: No sorting (preserves the order files are passed in)
  • name: Alphabetical by name (case-insensitive)
  • natural: Natural order (file2.pdf before file10.pdf)
  • mtime: By modification date (oldest first)
  • ctime: By creation date (oldest first)

When a folder is passed as input, the default sort is natural. When individual files are passed, the default sort is none.

Advanced examples

# Combine multiple folders and files
pdfm ./chapters ./images cover.pdf -o book.pdf --sort natural

# Sort by inverse creation date (newest first)
pdfm ./backup -o recent.pdf --sort ctime --reverse

# Merge without modifying input order
pdfm cap1.pdf cap3.pdf cap2.pdf -o manual.pdf --sort none

Requirements

  • Python >= 3.10
  • pypdf >= 5.0.0
  • typer >= 0.12.0

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=pdf_joiner --cov-report=term-missing

License

MIT

Author

Mariano Soto — soymarianosoto@proton.me

Download files

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

Source Distribution

pdf_joiner-0.1.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdf_joiner-0.1.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file pdf_joiner-0.1.0.tar.gz.

File metadata

  • Download URL: pdf_joiner-0.1.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for pdf_joiner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5dd0029a759eb49c4c5fbf5081245ded44bd545f0a9e266efb7b3077318bf6c4
MD5 d2f7a8b88fb2998c501b97549597a7d2
BLAKE2b-256 522928b59580f282771539fc28a1f18a74f6500f1859723fcf324fccebddbb54

See more details on using hashes here.

File details

Details for the file pdf_joiner-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pdf_joiner-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for pdf_joiner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e7e347da33cf7eaa144e58fabbaf62d55c50413d5c4ce08284d6eafa6b2efa10
MD5 53e3b344999a7b95b75a3cdba0e4d82e
BLAKE2b-256 8334f6722d6422a714d7b536f12e763b97f0844a9d7e12916f5fc0103e6f1069

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page