The Java PDF Library Developers Trust in Production

JPedal is a pure Java PDF library for rendering, 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. It runs on any JVM, on-premise or in the cloud, and supports Java 17+.

Core capabilities: 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 is used in production by Adobe (in ColdFusion), 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.

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

See pricing →

Why not iText or PDFBox?

iText's open-source license is AGPL — deploying it commercially requires open-sourcing your application. The commercial alternative has no published pricing. PDFBox is open-source and reliable for basic use cases, but has no viewer component, limited rendering fidelity on complex PDFs, and no commercial support.

JPedal covers the full use case — rendering, viewing, text extraction, manipulation. Prices are on the website. Support comes directly from the engineers who wrote the code.

Read our Java PDF library buyer's guide →

Just looking for some code?

Viewer viewer = new Viewer();
viewer.setupViewer();
viewer.executeCommand(ViewerCommands.OPENFILE, "pdfFile.pdf");
ConvertPagesToImages.writeAllPagesAsImagesToDir("inputFileOrDir", "outputDir", "bmp", 1.33f);
ExtractTextAsWordList.writeAllWordlistsToDir("inputFileOrDirectory", "outputDir", -1);
ConvertPagesToImages.writeAllPagesAsImagesToDir("inputFileOrDir", "outputDir", "bmp", 1.33f);
ArrayList<Float[]> resultsForPages = FindTextInRectangle.findTextOnAllPages("/path/to/file.pdf", "textToFind");
PrintPdfPages print = new PrintPdfPages("C:/pdfs/mypdf.pdf");

if (print.openPDFFile()) {
    print.printAllPages("Printer Name");
}
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();
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);
ExtractClippedImages.writeAllClippedImagesToDir("inputFileOrDirectory", "outputDir", "outputImageFormat", new String[] {"imageHeightAsFloat", "subDirectoryForHeight"});
java -jar jpedal.jar --inspect "inputFile.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"));

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
  • Single and multipage views
  • Search and navigation
  • Customisable UI and L & F
  • Simple to Localize
  • Programmable API
  • 3 lines of code to add
  •  
Learn more
Rasterize
  • PDF to BufferedImage
  • PDF to AVIF
  • PDF to JPEG/JPEG2000
  • PDF to HEIC
  • PDF to PNG
  • PDF to TIFF
  • PDF to WEBP
  •  
Learn more
Print PDF
  • Client and server printing
  • Full JPS support
  • Define multiple paper sizes
  • Page scaling / rotation
  • All Acrobat output options
  • Page ranges
  • Fast draft print mode
  •  
Learn more
Process Documents
  • Digital signing
  • Extract embedded files
  • Merge
  • Optimize
  • Remove unused objects
  • Redact text
  • Sanitize
  • Split
Learn more
Manipulate Pages
  • Add
  • Copy
  • Delete
  • N-up
  • Remove
  • Resize
  •  
Learn more
Extract Content
  • Images
  • Marked / Structured content
  • Metadata
  • Outlines
  • Raw text
  • Text search
  •  
Learn more
Interaction
  • Annotations
  • AcroForms
  • XFA Forms
  • Add/delete/edit/read values
  • Access raw form data
  • Read raw XFA data
  • Flatten layers
Learn more
PDF Inspector
  • COS tree
  • Object dictionaries
  • Decoded / raw stream data
  • 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

No Third-Party Dependencies

JPedal has no required third-party Java libraries. There are no transitive dependency conflicts to resolve, no CVEs inherited from other projects, and no licensing complications from bundled code. One jar, clean classpath.

Transparent, One-Off Pricing

JPedal is licensed per server or OEM for a one-off fee — not per user, not per document, not annually unless you want support and update renewal. Prices are published on the website. No sales call required to find out the cost.

Support From the Developers

Support comes directly from the engineers who write and maintain JPedal — not a front-line ticket queue. Issues get answered by someone who can actually fix them, typically within hours.

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.

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 TCO
1

Proven Java PDF Expertise

25 years of deep technical knowledge delivering robust, reliable solutions that work.

2

Direct Developer Support

Get answers directly from the actual software Developers in hours, not weeks.

3

Long-Term Partnership Focus

Small company committed to your success, not quarterly revenue targets.

4

Developer-First Design

Clean APIs and practical functionality over flashy features that don't solve real problems.

5

Predictable Costs, Lasting Value

Transparent pricing with no hidden fees, plus regular updates and new features included.

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