JDDF A modular Java CLI for low-level PDF processing, enabling programmatic control over text, images, and structure, it is a Java-powered Swiss Army knife for PDF editing.
- Text Color Manipulation — Instantly recolor PDF text using RGB values, extract all the text and search for a term in
- Image to PDF Conversion — Merge multiple images or directories into a single PDF, single image to pdf as well
- Low-Level PDF Access — Directly interact with PDFBox for fine-grained document editing
- Portable Executable — Single shaded JAR (
jddf.jar) that runs anywhere with Java - CLI Simplicity — Modular subcommands with automatic help menus and argument validation which are intuitive
# Display available commands
jddf --help
# Change text color in a PDF
jddf text-color "input.pdf" 255 0 0 "output.pdf"
# Merge multiple images into a PDF
jddf merge-images "output.pdf" "img1.png" "img2.png"
# Convert an entire directory of images into a single PDF
jddf dir-to-pdf "images/" "output.pdf"JDDF runs anywhere Java 21+ is recommended.
Head to the Releases section and download the latest jddf-release:
- Make sure you have java installed on your system if not then install it from here
For Linux/ mac os users u can simply follow the steps given below
#!/usr/bin/env bash
## JDDF launcher (Unix). Safe: does not modify system files.
DIR="$(cd "$(dirname "$0")" && pwd)"
java -jar "$DIR/target/jddf-1.0-SNAPSHOT.jar" "$@"
## 2. Create a file called jddf.sh and copy the above code there
## 3. Run `chmod +x jddf` to make the script executable.
## 4. Add the jddf executable to your `$PATH` or `usr/bin/`
## 5. Now you are ready to go!!- Make sure you have Java installed on your system if not then install it from here
- Extract the java-release zip folder and then copy this folder's path(make sure it has the .bat file) into your own system's PATH
- Then you are ready to go!
- No Tab compeletion for both Windows and Unix-like OS.
- No Scaling for images as of yet.
- The commands are too high-level in the future the focus will be to give users more low-level functionality.
- Some way for users to access raw Bytes of the document so that they can perform task according to their needs.
- Add render-view command in the
displaysubcommands to give users live access to pdf pages in the terminal
