Extended PDF Manipulation Toolkit
Project description
PDF2S 🔖
A Swiss Army knife for PDF manipulations with Markdown conversion capabilities
Features ✨
- Merge PDFs with regex filename filtering
- Split PDFs by:
- Page ranges (e.g., "1-3,5-8")
- Fixed page chunks (e.g., every 5 pages)
- Special "all" keyword for full document split
- Convert Markdown ↔ PDF:
- Preserve formatting with custom CSS styles
- Basic text extraction from PDF to Markdown
- Extract Images from PDF files:
- Filter by minimum size
- Convert to specific formats
- Automatic output directory creation
- CLI Interface with intuitive subcommands
- Pipx Installable for easy system-wide use
Installation 📦
pipx install pdf2s
System Requirements:
- Python 3.8+
- libpangocairo-1.0-0 (for WeasyPrint)
- Ubuntu/Debian:
sudo apt-get install libpangocairo-1.0-0
- Ubuntu/Debian:
Usage 💻
$ pdf2s --help
Usage: pdf2s [OPTIONS] COMMAND [ARGS]...
Commands:
merge Merge PDF files
split Split PDF files
md2pdf Convert Markdown to PDF
pdf2md Convert PDF to Markdown
pdf2img Extract images from PDF
Merge PDFs
# Merge all PDFs in directory (sorted)
pdf2s merge ./documents merged.pdf --sort
# Merge only files matching regex pattern
pdf2s merge ./reports final_report.pdf -r 'Q[1-4]_2023'
Split PDFs
# Split into individual pages
pdf2s split input.pdf output_dir
# Split every 5 pages
pdf2s split input.pdf output_dir --pages 5
# Split specific ranges
pdf2s split input.pdf output_dir --ranges "1-3,5-8"
# Split entire document
pdf2s split input.pdf output_dir --ranges "all"
Markdown Conversion
# MD to PDF with custom styling
pdf2s md2pdf input.md output.pdf --style styles.css
# PDF to Markdown
pdf2s pdf2md input.pdf output.md
Extract Images
# Basic usage (creates output in myfile_imgs directory)
pdf2s pdf2img myfile.pdf
# Specify output directory
pdf2s pdf2img myfile.pdf --output-dir extracted_images
# Only extract larger images
pdf2s pdf2img myfile.pdf --min-size 300
# Convert all images to specific formats
pdf2s pdf2img myfile.pdf --formats "jpg,png"
Development 🛠️
- Clone repository
- Install dependencies:
pipx install poetry
poetry install
- Run tests:
poetry run pytest
Distribution Options 📦
Using pipx
The recommended way to install pdf2s is using pipx, which installs the package in an isolated environment:
# Install pipx if you don't have it
pip install --user pipx
python -m pipx ensurepath
# Install pdf2s
pipx install pdf2s
# Update to latest version
pipx upgrade pdf2s
Publishing to PyPI
To publish the package to PyPI:
# Install build tools
pip install build twine
# Build the distribution packages
python -m build
# Upload to TestPyPI first (optional)
twine upload --repository testpypi dist/*
# Upload to PyPI
twine upload dist/*
Make sure to update the version in pyproject.toml before building a new release.
Contributing 🤝
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Submit a Pull Request
Report issues using the GitHub Issues tracker.
License 📄
This project is licensed under the MIT License - see the LICENSE file for details.
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 pdf2s-0.1.2.tar.gz.
File metadata
- Download URL: pdf2s-0.1.2.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
789281992ffdd1540e09354beb77381a61850b7aba25c5037f21569610b863e5
|
|
| MD5 |
fbd715de8adeac566c67e4c98a661c1f
|
|
| BLAKE2b-256 |
75e110854ba66fa396ec6272ecc30a1ccbc5a6b96ac00a6ad895062ad6ae75c0
|
File details
Details for the file pdf2s-0.1.2-py3-none-any.whl.
File metadata
- Download URL: pdf2s-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a76121075ace5778e18c7a0ecc79a06e1278a4e700ddea044120d7fcc6e7a1e9
|
|
| MD5 |
3e60b25fbd9f856baf5307196d7062c6
|
|
| BLAKE2b-256 |
5589757d086ee5a0cd33251967093ef1ba1ba637d250848c9edaecb48a32a0fb
|