The Java PDF Library Developers Trust in Production

JPedal is a pure Java PDF library for rendering, reading, text extraction, viewing, manipulating and processing — with no native dependencies, transparent pricing, and direct support 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. Whether you need to read PDF files in Java, extract content, or render pages at scale, JPedal runs on any JVM, on-premise or in the cloud, and supports Java 17+.

Core capabilities: Read PDF files in Java, 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. All accessible via a clean Java API — 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 for PDF rasterization, DigiSigner for contract display, and Abacus Research in their ERP platform — alongside hundreds of development teams building document workflows, legal platforms, and enterprise applications. Our Buyer's Guide can help you decide if JPedal is the right SDK for you.

It has been in continuous development since 1999 and we have customers from 2003 still using it in production environments.

See pricing →

Why developers switch to JPedal

The standard path is: try IcePDF, Ghostscript, or PDFBox, hit a wall, then buy JPedal. IcePDF has no active commercial backing. Ghostscript requires a native process bridge between your JVM and a native application. PDFBox has no viewer and no commercial support.

Another alternative is iText, however its AGPL license means commercial distribution requires open-sourcing your application. Its commercial alternative 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.jar
Viewer 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

JPedal is a 100% Java solution with no third-party code.

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
  •  
Learn more
Rasterize
  • PDF to BufferedImage
  • PDF to AVIF
  • PDF to HEIC
  • PDF to JPEG/JPEG2000
  • PDF to PNG
  • PDF to TIFF
  • PDF to WEBP
  •  
Learn more
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
  •  
Learn more
Process Documents
  • Digital signing
  • Extract embedded files
  • Encrypt
  • Merge
  • Optimize / remove unused objects
  • Redact text
  • Sanitize
  • Split
Learn more
Manipulate Pages
  • Add
  • Copy
  • Delete
  • N-up
  • Remove
  • Resize
  •  
Learn more
Extract Content
Learn more
Interaction
  • Access raw form data
  • AcroForms
  • Add/delete/edit/read values
  • Annotations
  • Flatten layers
  • Read raw XFA data
  • XFA Forms
Learn more
PDF Inspector
  • COS tree
  • Decoded / raw stream data
  • Object dictionaries
  • Outlines
  • Raw text
  • Single step debugging
  •  
Learn more

Who else uses JPedal?

Adobe logo
Jive logo
Interwork logo
Abacus logo
DigiSigner logo
Stampli logo
Versitech logo
InSign logo

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

Runs in Your JVM, No Native Dependencies

JPedal runs in the same JVM as your application. No native process bridges, no cross-process initialization, no distribution complexity. Tools like Ghostscript require a separate native process wired to your JVM. That means deployment overhead, version mismatches, and failure modes you won't see until production. JPedal has none of that. No transitive dependency conflicts, no inherited CVEs, one jar.

One-Off Licensing, Published Pricing

JPedal is licensed for a one-off fee, not a subscription. Annual support and update renewal is available if you want it. The OEM license is a flat fee per product, not per customer deployment, so you can ship JPedal in your software to as many customers as you like without tracking or renegotiating. iText charges per CPU, which means every customer server you deploy to is another charge. Prices are on the website. No sales call required just to discover the cost.

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 regularly make the decision to buy after we fix a problem during their evaluation period.

3× Faster Than Alternatives

JPedal is typically three times faster than comparable Java PDF libraries 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 blocked by a black-box dependency.

25+ Years of PDF Expertise

IDRsolutions has been building PDF software since 1999. JPedal handles the edge cases — malformed documents, complex font rendering, legacy PDF versions — that trip up newer or less battle-tested libraries. Learn more about navigating the technical and business trade-offs 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
1

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.

2

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.

3

Independently Owned and Not for Sale

Privately owned and bootstrapped since 1999. This allows us to focus on our customers, products and team.

4

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.

5

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.

6

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.

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.

How does JPedal compare to iText or PDFBox?

iText's open-source license is AGPL, which requires open-sourcing commercial applications. The commercial alternative has no published pricing. PDFBox is reliable for basic use cases but has no viewer component, limited rendering fidelity on complex PDFs, and no commercial support. JPedal covers rendering, viewing, extraction, and manipulation with transparent published pricing and support directly from the engineers who wrote the code.

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.