A Reliable Java PDF Library

A powerful solution for batch processing, manipulating, and editing PDF documents.

Trusted By


Permanently Remove Sensitive, Confidential, or Privileged Information from PDFs

Search for personally identifiable information and redact it automatically or stage it for redaction at a later point. You can use out-of-the-box presets or create custom search patterns using regular expressions. Frequently used in e-discovery, e-disclosure, legal, financial, healthcare, and government applications.

Batch redaction of PDFs using built-in presets
  • Irrecoverable icon

    Secure and irrecoverable removal of PDF text and images

  • Compliance icon

    Ensure compliance with GDPR, HIPAA, and other privacy laws

  • Fast timer icon

    Rapidly process redactions across large batches of PDFs

Document Editor

Merge, Add/Remove, Split, and Rotate Pages

Access powerful low-level controls for merging PDFs, adding or deleting pages, appending cover sheets, and rotating pages. Assemble multiple documents into a single unified PDF for easier distribution and recordkeeping. Ensure document uniformity across all business processes.

Document Editor illustration showing merging, rotating, and deleting pages Document Editor illustration showing merging, rotating, and deleting pages

Annotation Editing

Import and Export Annotations to XFDF and Instant JSON

Extract annotation data from large volumes of PDF documents for exporting to a database. Optimize for speed and network traffic by transmitting only the user’s edited changes via XFDF or Instant JSON.

XFDF and Instant JSON data imported into PDF
  • Import-export icon

    Use our proprietary Instant JSON format or XFDF to import and export large amounts of annotation data

  • Layer flattening icon

    Permanently apply annotations by batch-flattening all changes to prevent further revision

  • Forms icon

    Extract user data from PDF form fields in XFDF

PDF rendering with documents saved as JPG and PNG

PDF Rendering

High-Fidelity Rendering of PDF Documents

Access the same powerful rasterizing engine that annually processes billions of documents for our customers worldwide. Easily integrate accurate document and page rendering into your existing workflows. Render large batches of PDFs to commonly used image file types.

PDF rendering with documents saved as JPG, PNG, and WEBP
  • PDF to image conversion icon

    Render and save PDF documents as JPG, PNG, or WEBP

  • Fast timer icon

    Rapidly convert PDF documents or individual pages to high-fidelity bitmaps of any size

  • Precision icon

    Ensure precise file structure retention, with text layout and tables appearing exactly as shown in the original PDF

Form Filling

Read and Write Form Fields with an Easy-to-Use API

Our Forms component enables you to programmatically read and write form values. Simply build a model of your data and call a single API to fill out forms.

  • Simplify icon

    Simplify the form filling workflow

  • Automation icon

    Automate data entry into your database

  • Forms icon

    Extract data from form fields in a document

Programmatically extracting data from multiple forms


Use OCR to Unlock Inaccessible Text

Our OCR processor quickly enhances raster and vector PDFs to give you interactable text, unlocking the full suite of PDF tools available.
Find out more →

Performing OCR on a document
  • Improved accessibility icon

    Improved Accessibility

  • Accelerated text extraction icon

    Accelerated Text Extraction

  • Process automation icon

    Process Automation


Built for Easy Integration



Using PSPDFKit for Java

PSPDFKit can be integrated with just a few lines of code, and it comes with a rich API, which allows for complete customization.

// Initialize PSPDFKit with your activation key.

// Open a document to work on.
File file = new File("assets/default.pdf");
PdfDocument document = new PdfDocument(new FileDataProvider(file));

// Add a new stamp annotation.
JSONObject jsonObject = new JSONObject();
jsonObject.put("bbox", new float[]{0, 0, 100, 50});
jsonObject.put("pageIndex", 0);
jsonObject.put("type", "pspdfkit/stamp");
jsonObject.put("stampType", "Approved");
jsonObject.put("opacity", 1);
jsonObject.put("v", 1);

// Export the changes to Instant Document JSON.
File jsonFile = new File("out/instantOutput.json");
if (jsonFile.createNewFile()) {
    document.exportDocumentJson(new FileDataProvider(jsonFile));

// Render the first page and save to a PNG.
BufferedImage image = document.getPage(0).renderPage();
File pngfile = new File("out/test.png");
boolean success = ImageIO.write(image, "png", pngfile);

Which One Is for You?

PSPDFKit Libraries for Java and .NET, Processor, and Server were all created with different use cases in mind. Check the short comparison below to see which one is for you.

  • Ships as part of your application.

  • Headless, API-only operations.

  • Doesn't require a backend.

  • Document processing happens on the client running your app.

  • Ideal for adding core PSPDFKit functionality to Java and .NET apps.

  • Integrates with your existing backend infrastructure.

  • Doesn't store documents or document information.

  • Doesn't require a backend.

  • Is easier to scale horizontally.

  • Ideal for headless batch processing of documents.

  • Integrates with PSPDFKit for Web.

  • Provides optional document collaboration tools.

  • Stores documents, document changes, and additional information.

  • Requires a database and document storage backend.

  • Ideal for collaboration and manual document manipulation.

Ready to Get Going?

Download our 60-day free trial or get in touch with us!