Skip to content

danielduqma/pdftools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pdftools

CLI for common PDF operations. Runs standalone with uv run (no install needed).

Usage

uv run pdf_tools.py <command> [options]

merge — Merge multiple PDFs into one

uv run pdf_tools.py merge -i file1.pdf file2.pdf file3.pdf -o merged.pdf

2up — Two pages per sheet

Places two consecutive pages side by side (rotated 90° CW) on a single portrait page.

# Single file
uv run pdf_tools.py 2up -i document.pdf -o document_2up.pdf

# Multiple files → output directory
uv run pdf_tools.py 2up -i *.pdf -o output_dir/

delete — Delete specific pages

Removes the specified pages from a PDF. Pages can be individual numbers, ranges, or a combination.

# Delete pages 1, 3, and 5 through 8
uv run pdf_tools.py delete -i document.pdf -o trimmed.pdf -p '1,3,5-8'

# Multiple files → output directory
uv run pdf_tools.py delete -i *.pdf -o output_dir/ -p '1'

pad — Pad page count to a multiple

Adds blank pages at the end so the total is a multiple of N.

# Single file
uv run pdf_tools.py pad -i document.pdf -o document_padded.pdf -m 4

# Multiple files → output directory
uv run pdf_tools.py pad -i *.pdf -o output_dir/ -m 4

pipe — Chain operations in a pipeline

Chains multiple operations in sequence, separated by +. Intermediate results stay in memory (no temp files).

uv run pdf_tools.py pipe -i a.pdf b.pdf -o result.pdf -- \
    delete -p 1 + pad -m 4 + 2up + merge

Available stages: delete -p <pages>, pad -m <n>, 2up, merge.

  • Per-file operations (delete, pad, 2up) apply to each input independently.
  • merge combines all inputs into one. After a merge, subsequent stages operate on the single result.
  • Stages can appear in any order.

Per-file delete

By default, delete removes the same pages from all files. To delete different pages per file, prefix each -p with the file number (1-based):

# Delete page 1 from file #1, pages 3-5 from file #2
uv run pdf_tools.py pipe -i ch1.pdf ch2.pdf -o out/ -- \
    delete -p 1:1 -p 2:3-5 + pad -m 4

Examples

# Delete page 1 from each, pad to multiple of 4, 2-up layout, merge
uv run pdf_tools.py pipe -i ch1.pdf ch2.pdf ch3.pdf -o book.pdf -- \
    delete -p 1 + pad -m 4 + 2up + merge

# Merge first, then post-process
uv run pdf_tools.py pipe -i part1.pdf part2.pdf -o final.pdf -- \
    merge + delete -p 1,2 + pad -m 4 + 2up

# Per-file delete, then merge
uv run pdf_tools.py pipe -i a.pdf b.pdf -o combined.pdf -- \
    delete -p 1:1,2 -p 2:1 + merge

Multi-file mode (2up, pad, delete)

When passing multiple files to -i, -o must be a directory. Output files keep the same name as the originals. Existing files are overwritten.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages