Suddivisione funzione:

  • Imposta endpoint API e payload

    • Costruisce l'URL dell'API utilizzando endPoint fornito e un BUCKET predefinito.

    • Definisce una stringa JSON (usageRights) che specifica i diritti da applicare, ad esempio:

      • Commenti
      • File incorporati
      • Compilazione modulo
      • Esportazione dati modulo
  • Carica il file PDF

    • Recupera il file withoutusagerights.pdf dalla directory pdffiles.
    • Registra un errore e chiude se il file non viene trovato.
  • Preparare la richiesta HTTP

    • Legge il file PDF in una matrice di byte.

    • Utilizza MultipartEntityBuilder per creare una richiesta in più parti contenente:

      • Il file PDF come corpo binario.
      • JSON usageRights come corpo del testo.
    • Imposta una richiesta HTTP POST con intestazioni:

      • Authorization: Bearer <accessToken> per autenticazione.
      • X-Adobe-Accept-Experimental: 1 (probabilmente richiesto per compatibilità API).
  • Invia la richiesta e gestisci la risposta

    • Esegue la richiesta HTTP utilizzando httpClient.execute(httpPost).
    • Legge la risposta (che dovrebbe essere il PDF aggiornato a cui sono applicati i diritti di utilizzo).
    • Scrive il contenuto PDF ricevuto in "ReaderExtended.pdf" in SAVE_LOCATION.
  • Gestione e pulizia errori

    • Rileva e registra eventuali errori IOException.
    • Verifica che tutte le risorse (flussi, client HTTP, risposta) siano chiuse correttamente nel blocco finally.

Di seguito è riportato il codice main.java che richiama la funzione applyUsageRights

package com.aemformscs.communicationapi;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        try {
            String accessToken = new AccessTokenService().getAccessToken();
            DocumentGeneration docGen = new DocumentGeneration();

            docGen.applyUsageRights(accessToken, "/adobe/document/assure/usagerights");

            // Uncomment as needed
            // docGen.extractPDFProperties(accessToken, "/adobe/document/extract/pdfproperties");
            // docGen.mergeDataWithXdpTemplate(accessToken, "/adobe/document/generate/pdfform");

        } catch (Exception e) {
            logger.error("Error occurred: {}", e.getMessage(), e);
        }
    }
}

Il metodo main viene inizializzato chiamando getAccessToken() da AccessTokenService, che dovrebbe restituire un token valido.

  • Quindi chiama applyUsageRights() dalla classe DocumentGeneration, passando:

    • accessToken recuperato
    • Endpoint API per l'applicazione dei diritti di utilizzo.