The Java PDF Library Developers Trust in Production
JPedal is a pure Java PDF library with no native dependencies, transparent pricing, and support directly from the developers who built it.
What JPedal offers
JPedal is a pure Java PDF library — no native binaries, no third-party dependencies, no JNI. Runs on any JVM, on-premise or in the cloud, Java 17+.
PDF rendering to image, embedded PDF viewer, text extraction and search, PDF manipulation, digital signing, redaction, form handling (AcroForms and XFA), annotations, and PDF inspection. Most integrations are 2–3 lines of code.
See the API documentation →Who uses JPedal
JPedal ships inside Adobe ColdFusion and is used in production by Stampli, DigiSigner, and Abacus Research, alongside hundreds of teams building document workflows, legal platforms, and enterprise applications.
In continuous development since 1999, with customers from 2003 still running it in production.
See pricing →Why developers switch to JPedal
Developers evaluating Java PDF libraries typically try IcePDF, Ghostscript, or PDFBox first, hit a wall, then switch to JPedal. IcePDF has no commercial backing. Ghostscript requires a native process bridge to your JVM. PDFBox has no viewer and no commercial support. iText's AGPL license requires open-sourcing commercial applications; its commercial license charges per CPU.
Read our Java PDF library buyer's guide →Just looking for some code?
WritableAnnotation[] annotations = new WritableAnnotation[2];
annotations[0] = new SquareAnnotation(1, 10, 10, 100, 100);
annotations[1] = new CircleAnnotation(2, 10, 10, 100, 100);
AnnotationWriter.writeAnnotations(inputFile, outputFile, annotation);ConvertPagesToImages.writeAllPagesAsImagesToDir("inputFileOrDir", "outputDir", "bmp", 1.33f);final PdfManipulator pdf = new PdfManipulator();
pdf.loadDocument(new File("inputFile.pdf"));
pdf.writeDocument(new File("outputFile.pdf"), "encryptionPassword".getBytes());
pdf.closeDocument();ExtractClippedImages.writeAllClippedImagesToDir("inputFileOrDirectory", "outputDir", "outputImageFormat", new String[] {"imageHeightAsFloat", "subDirectoryForHeight"});final PdfUtilities utilities = new PdfUtilities("path/to/exampleFile.pdf");
try {
if (utilities.openPDFFile()) {
// Returns a String containing all metadata fields for the document
final String documentPropertiesAsXML = utilities.getDocumentPropertyFieldsInXML();
// Returns the total page count as an int
final int totalPageCount = utilities.getPageCount();
for (int i = 1; i != totalPageCount; i++) {
// Get the page dimensions for the specified page in the given units and type
final float[] pageDimensions = utilities.getPageDimensions(i, PdfUtilities.PageUnits.Pixels, PdfUtilities.PageSizeType.CropBox);
// Returns the image data as a String for the specified page
final String xImageDataForPage = utilities.getXImageDataForPage(i);
}
}
}
catch (final PdfException e) {
e.printStackTrace();
}
utilities.closePDFfile();ExtractTextAsWordList.writeAllWordlistsToDir("inputFileOrDirectory", "outputDir", -1);ConvertPagesToImages.writeAllPagesAsImagesToDir("inputFileOrDir", "outputDir", "bmp", 1.33f);java -jar launcher.jarViewer viewer = new Viewer();
viewer.setupViewer();
viewer.executeCommand(ViewerCommands.OPENFILE, "pdfFile.pdf");final PdfManipulator pdf = new PdfManipulator();
pdf.loadDocument(new File("inputFile.pdf"));
pdf.addPage(1, PaperSize.A4_LANDSCAPE);
pdf.addText(1, "Hello World", 10, 10, BaseFont.HelveticaBold, 12, 1, 0.3f, 0.2f);
pdf.addImage(1, new BufferedImage(), new float[] {0, 0, 100, 100});
pdf.rotatePage(1, 90);
pdf.apply();
pdf.writeDocument(new File("outputFile.pdf"));PrintPdfPages print = new PrintPdfPages("C:/pdfs/mypdf.pdf");
if (print.openPDFFile()) {
print.printAllPages("Printer Name");
}ArrayList<Float[]> resultsForPages = FindTextInRectangle.findTextOnAllPages("/path/to/file.pdf", "textToFind");Everything a Java PDF library needs to do
Java Viewer
- 100% Java PDF and Image Viewer
- Customisable UI and L & F
- Programmable API
- Search and navigation
- Single and multipage views
- Simple to Localize
- 3 lines of code to add
Rasterize
- PDF to BufferedImage
- PDF to AVIF
- PDF to HEIC
- PDF to JPEG/JPEG2000
- PDF to PNG
- PDF to TIFF
- PDF to WEBP
Print PDF
- All Acrobat output options
- Client and server printing
- Define multiple paper sizes
- Fast draft print mode
- Full JPS support
- Page ranges
- Page scaling / rotation
Process Documents
- Digital signing
- Extract embedded files
- Encrypt
- Merge
- Optimize / remove unused objects
- Redact text
- Sanitize
- Split
Extract Content
- Images
- Marked / Structured content
- Metadata
- Outlines
- Raw text
- Text search
Interaction
- Access raw form data
- AcroForms
- Add/delete/edit/read values
- Annotations
- Flatten layers
- Read raw XFA data
- XFA Forms
PDF Inspector
- COS tree
- Decoded / raw stream data
- Object dictionaries
- Outlines
- Raw text
- Single step debugging
JPedal is absolutely easy to use and it provided the best results of all libraries we tested over the years. We need to create renditions of PDF files so that people can view them conveniently in the browser.
- Roman K. (Developer at German Digital Big Data Platform)
Key Benefits of the JPedal Java PDF Library
Runs in Your JVM, No Native Dependencies
JPedal runs in the same JVM as your application: no native process bridges, no distribution complexity, no transitive dependency conflicts, no inherited CVEs. Tools like Ghostscript require a separate native process wired to your JVM, bringing version mismatches and failure modes you won't see until production. One jar.
One-Off Licensing, Published Pricing
JPedal offers a simple, one-off server or OEM licensing model for customers with an optional recurring annual support/maintenance fee after 12 months.Prices are on the website and there are no sales call required to find out what it costs.
Support From the Developers
Support comes directly from the engineers who write and maintain JPedal, not a front-line ticket queue. That includes during your trial: if something doesn't work on your documents during evaluation, contact us and we'll look at it. Customers often buy after we fix a problem during their trial.
3× Faster Than Alternatives
JPedal is typically three times faster than PDFBox on rendering and extraction workloads, with memory optimisations designed for server-side batch processing at volume.
Source Code Access for OEM
OEM customers get full source code access alongside the binary jar. That means you can inspect exactly what the library does, modify it for your use case, and are never stuck waiting on a black box.
25+ Years of PDF Expertise
IDRsolutions has been building PDF software since 1999. JPedal handles the edge cases that trip up less battle-tested libraries: malformed documents, complex font rendering, and legacy PDF versions. Learn more in our Build vs. Buy PDF library guide.
Support for JPedal is done extremely well and for continuously using the software, what the customer needs is good support for the issues we face. And it is superb in that respect.
- Developer (Large Multinational Corporation)
Why Do Companies Buy Software From IDRsolutions?
It all adds up to faster development times and lower total cost of ownership
Building PDF & Image Libraries Since 1999
27 years of Java expertise in PDF and image processing. Used in production by Adobe, Citi, Lufthansa and Pearson.
Supported by the Actual Developers
Questions go straight to the engineers who wrote the code and can give you a real answer, not a scripted response.
Independently Owned and Not for Sale
Privately owned and bootstrapped since 1999. This allows us to focus on our customers, products and team.
Faithful Conversion, Optimised Output
Converted content matches the source PDF and is optimised for the target format. Output is clean HTML or properly compressed images.
100% Java, Zero External Dependencies
Built on our own tech stack, with no JNI, C extensions, or third-party libraries. That means no supply-chain CVEs, and no license audits.
Simple and Transparent Licensing
Clear prices with no mandatory sales calls before you can see a number. There are no hidden per-document charges or renewal surprises.
JPedal vs Other Java PDF Libraries
| Feature | PDFBox | iText | JPedal |
|---|---|---|---|
| PDF rendering quality | Basic | N/A | High-fidelity |
| Embedded Java PDF viewer | No | No | Yes (Swing) |
| PDF to HTML conversion | No | No | Yes |
| Text extraction | Yes | Yes | Yes |
| Digital signatures | Yes | Yes | Yes |
| AcroForm / XFA handling | AcroForms only | AcroForms only | Both |
| Native dependencies | None | None | None |
| Rendering performance | Baseline | N/A | ~3x faster |
| License | Apache 2.0 (free) | AGPL / per-CPU commercial | One-off fee, published pricing |
| Support | Community only | Commercial (no published pricing) | Direct from developers |
Read the full PDFBox vs JPedal comparison → | Read the full iText vs JPedal comparison →
Frequently asked questions
Which versions of Java does JPedal support?
JPedal supports Java 17 and above, and is regularly tested against the latest LTS releases. It runs on any JVM platform including cloud-hosted environments such as AWS and Azure.
What is the best Java PDF library for commercial use?
PDFBox is free but has no viewer and no commercial support. iText requires open-sourcing your application under AGPL, or paying per-CPU for commercial use. JPedal covers rendering, viewing, extraction, and manipulation with a one-off license and direct developer support.
Does JPedal have any third-party dependencies?
No. JPedal is a pure Java library with no required third-party dependencies — no native binaries, no JNI, no transitive classpath conflicts. One jar is all you need.
Can I get access to the JPedal source code?
Yes — All customers get access to the full jar version and OEM customers also receive full source code access.
During my evaluation the team was very helpful when answering my questions, and solved any issues I faced.
- Sohaib from SlashNext
Try JPedal for Free
Test it against your actual PDFs, including the ones that don't render correctly in other tools. If something doesn't work during your trial, we'll look at it.