DEV Community

Shahzad Ashraf
Shahzad Ashraf

Posted on

Programmatically Remove Signatures from PDF Documents in Java

Ensuring the authenticity of documents is essential for Java developers dealing with signed PDF files, particularly when it becomes necessary to clear those signatures prior to archiving, further processing, or redistributing. Manually removing signatures can lead to mistakes and slow down workflows, but there is a more efficient and scalable solution available.

The GroupDocs.Signature Cloud Java SDK provides a straightforward, programmatic approach to eliminating digital, image, barcode, QR code, or text-based signatures from PDF files. As a fully cloud-native Java REST API, it streamlines the process by removing the requirement for local file parsing or platform-specific libraries. Simply set up your API client, load the document, and eliminate the unwanted signatures with easy method calls—making it ideal for integration into contemporary CI/CD pipelines or cloud-based Java services.

What sets this SDK apart is its adaptability and user-friendliness. You can work across various platforms without the concerns of operating system limitations or intricate dependencies. Whether you're developing document automation solutions, secure collaboration tools, or just enhancing your content workflows, our cloud-based solution enables precise and controlled removal of PDF signatures in Java. Please check out our comprehensive article to begin today!

The coding example below facilitates developers in incorporating this capability into their Java applications:

package com.groupdocs;
import com.groupdocs.cloud.signature.api.*;
import com.groupdocs.cloud.signature.model.*;
import com.groupdocs.cloud.signature.client.*;
import com.groupdocs.cloud.signature.model.requests.*;
import java.util.ArrayList;
import java.util.List;

public class RemoveSignaturesFromPDF {

    public static void main(String[] args) {

        // Configure your API credentials for authentication
        String MyAppKey = "your-app-key"; 
        String MyAppSid = "your-app-sid";
        Configuration configuration = new Configuration(MyAppKey, MyAppSid);

        // Create an instance of SignApi
        SignApi signApi = new SignApi(configuration);

        // Define source file information 
        FileInfo fileInfo = new FileInfo();
        fileInfo.setFilePath("SampleFiles/source.pdf");

        try {

            // Set up search options
            SearchBarcodeOptions searchOptions = new SearchBarcodeOptions();
            searchOptions.setSignatureType(SignBarcodeOptions.SignatureTypeEnum.BARCODE);
            searchOptions.setAllPages(true);

            // Apply search settings
            SearchSettings searchSettings = new SearchSettings();
            searchSettings.setFileInfo(fileInfo);
            searchSettings.addOptionsItem(searchOptions);

            // Search for existing barcode signatures and add to a list
            SearchSignaturesRequest searchRequest = 
                                    new SearchSignaturesRequest(searchSettings);
            SearchResult  searchResult = signApi.searchSignatures(searchRequest);
            List<Signature> signatures = searchResult.getSignatures();

            // Prepare delete options for each matched signature
            List<DeleteOptions> deleteOptionsList = new ArrayList<>();
            for (Signature signature : signatures) {
                DeleteOptions deleteOptions = new DeleteOptions();
                deleteOptions.setSignatureType(DeleteOptions.SignatureTypeEnum.BARCODE);
                deleteOptions.setSignatureId(signature.getSignatureId());
                deleteOptionsList.add(deleteOptions);
            }

            // Add signature removal settings
            DeleteSettings settings = new DeleteSettings();
            settings.setFileInfo(fileInfo);
            settings.setOptions(deleteOptionsList);            

            // Process the esignature removal request
            DeleteSignaturesRequest request = new DeleteSignaturesRequest(settings);
            DeleteResult response = signApi.deleteSignatures(request);

        } catch (Exception e) {

            System.err.println("An error occurred: " + e.getMessage());
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)