Skip to content

groupdocs-signature/GroupDocs.Signature-for-Java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

154 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GroupDocs.Signature for Java

A Java library to create, apply, verify, and remove digital and electronic signatures from documents, including PDFs, Word, Excel, Images, and more. Supports text, image, barcode, QR code, stamp, metadata, and certificate-based digital signatures.

Important: Demo Applications Only

The projects in the Demos folder and the Docker images published as groupdocs/signature are sample applications intended to demonstrate GroupDocs.Signature for Java features.

They are not production-ready services and must not be exposed to the public internet without additional hardening.

Before using a demo in any shared or production-like environment:

  • Run it on localhost or a trusted private network only
  • Do not publish Docker containers directly to the internet without authentication, a reverse proxy, and network restrictions
  • Treat file upload, browse, and download features as untrusted input β€” validate and sandbox file paths in your own integration
  • Add authentication, authorization, rate limiting, and logging appropriate for your security requirements
  • Keep GroupDocs.Signature and all dependencies up to date

For production integrations, use the library (Examples, documentation) and implement your own secure document storage and API layer instead of deploying these demos as-is.

Repository Structure

Directory Description
Demos Demo projects for Spring, Dropwizard, Javalin, Ktor, Micronaut, and Compose Desktop.
Examples Java API usage examples with sample documents.

Demos

All web demos run on http://localhost:8080/signature/ and provide document signing with digital certificates, images, text, stamps, barcodes, and QR codes.

Demo Framework Language Build Version
Spring Spring Boot 2.5 Java mvn clean spring-boot:run 26.5
Dropwizard Dropwizard 1.3 Java mvn clean compile exec:java 26.5
Javalin Javalin 4.6 Kotlin ./gradlew run 26.5
Ktor Ktor Kotlin ./gradlew run 26.5
Micronaut Micronaut 3.4 Kotlin ./gradlew run 26.5
Compose Compose Desktop Kotlin ./gradlew run 26.5

The Compose demo is a standalone desktop application (not a web app).

Docker

Pre-built Docker images are available on Docker Hub.

docker pull groupdocs/signature:latest
docker run -p 8080:8080 groupdocs/signature:latest

Security notice: Docker images ship with demo defaults (e.g. upload and browse enabled, no authentication). Use them for local evaluation only. Do not expose port 8080 to untrusted networks without adding authentication, path validation, and other security controls required by your organization.

Available image tags follow the pattern {version}-java-{jdk}-bullseye-{framework}:

Tag JDK Framework
{ver}-java-openjdk8-bullseye-spring Eclipse Temurin 8 Spring
{ver}-java-openjdk11-bullseye-spring Eclipse Temurin 11 Spring
{ver}-java-openjdk18-bullseye-spring Eclipse Temurin 21 Spring
{ver}-java-openjdk8-bullseye-dropwizard Eclipse Temurin 8 Dropwizard
{ver}-java-openjdk11-bullseye-dropwizard Eclipse Temurin 11 Dropwizard
{ver}-java-openjdk18-bullseye-dropwizard Eclipse Temurin 21 Dropwizard

The latest tag points to the openjdk18-bullseye-spring variant.

The Docker Hub repository overview is generated from Docs/docker-hub-overview.md when the Publish Docker Images workflow runs with Push enabled.

Getting Started

GroupDocs.Signature for Java requires J2SE 8.0 (1.8) or above.

Add the GroupDocs repository to your Maven project:

<repository>
    <id>GroupDocs Artifact Repository</id>
    <url>https://releases.groupdocs.com/java/repo/</url>
</repository>

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>26.5</version>
</dependency>

About

This repository provides usage examples and demos for GroupDocs.Signature for Java, a powerful API for adding and verifying signatures in Java-based applications. It supports over 90 document formats, enabling developers to streamline digital signing workflows across platforms.

πŸ”‘ Key Features

  • Apply and verify digital signatures with X.509 certificates
  • Add text, image, barcode, QR code, and stamp signatures
  • Insert metadata, form field, and timestamp signatures
  • Search for or remove existing signatures from documents
  • Compatible with Java SE, EE, and Spring-based applications

πŸ”§ Supported Signature Types

Signature Type Description
Digital Signatures X.509 certificate-based signatures for legal compliance
Image Signatures Draw or upload images (PNG, JPEG, SVG, BMP)
Text Signatures Add custom text annotations with fonts & styles
QR-Code Signatures Generate QR codes with custom data/format
Barcode Signatures Add/search/remove barcodes from documents
Stamp Signatures Custom stamps with date/user info/company logos
Metadata Signatures Hidden signatures for document tracking & authentication
Form Field Signatures Interactive signature fields for workflows

πŸ“ Supported Document Formats (90+)

Office Documents:

  • Microsoft Word (DOC, DOCX, DOCM, DOT, DOTX, DOTM)
  • Excel (XLS, XLSX, XLSM, XLSB, XLT, XLTX, XLTM)
  • PowerPoint (PPT, PPTX, PPTM, PPS, PPSX)
  • Visio (VSD, VSDX, VSS, VSSX, VST, VSTX)

PDFs & Images:

  • PDF (Portable Document Format)
  • Images (PNG, JPG, JPEG, BMP, TIFF, GIF, SVG, WEBP)

Other Formats:

  • OpenDocument (ODT, ODS, ODP)
  • Text files (TXT, RTF, CSV)
  • Web formats (HTML, HTM)
  • And many more...

πŸ’» Code Examples

Search for Digital Signatures in Excel XLSX

Signature signature = new Signature("spreadsheet.xlsx");
DigitalSearchOptions options = new DigitalSearchOptions();

// Search for signatures in document
List<DigitalSignature> signatures = signature.search(DigitalSignature.class, options);
System.out.print("\nSource document contains following signatures.");
for (DigitalSignature digitalSignature : signatures) {
    System.out.print("Digital signature found from " + digitalSignature.getSignTime() +
                     " with validation flag " + digitalSignature.isValid() +
                     ". Certificate SN " + digitalSignature.getCertificate().getType());
}

Digitally Sign a PDF with Certificate

Signature signature = new Signature("sample.pdf");
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx");

// Set certificate password and details
options.setPassword("1234567890");
options.setReason("Sign");
options.setContact("JohnSmith");
options.setLocation("Office1");

// Set image appearance
options.setImageFilePath("sample.jpg");
options.setAllPages(true);
options.setWidth(80);
options.setHeight(60);
options.setVerticalAlignment(VerticalAlignment.Bottom);
options.setHorizontalAlignment(HorizontalAlignment.Right);

// Set margins
Padding padding = new Padding();
padding.setBottom(10);
padding.setRight(10);
options.setMargin(padding);

// Apply signature
SignResult signResult = signature.sign("signed.pdf", options);

// Print results
System.out.print("List of newly created signatures:");
int number = 1;
for (BaseSignature temp : signResult.getSucceeded()) {
    System.out.print("Signature #" + number++ +
                     ": Type: " + temp.getSignatureType() +
                     " Id: " + temp.getSignatureId() +
                     ", Location: " + temp.getLeft() + "x" + temp.getTop() +
                     ". Size: " + temp.getWidth() + "x" + temp.getHeight());
}

πŸ“š Documentation and Resources

Looking for GroupDocs.Signature for .NET?

πŸ‘‰ View the .NET version here

πŸ”– Tags

java digital signature sign pdf java e-sign java signature api java groupdocs signature java
image signature java verify signature java electronic signature java document signing java
sign excel java sign word java sign image java qr code signature java barcode signature java

About

GroupDocs.Signature for Java examples, plugins and showcase projects

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors